我的弹性beanstalk应用程序有许多机密的环境变量(例如API密钥,散列机密等)。我想设置AWS,以便大多数开发人员可以查看和编辑配置等,但无法看到其中一些环境变量。如果我们每次开发人员离开时都必须更改所有这些,那将是一个巨大的开销。
从使用权限开始,似乎(至少使用Elastic Beanstalk)您可以完全访问配置或者无法看到任何配置 - 并且完全删除访问意味着开发人员甚至不能做基本的事情,比如看看部署失败的原因。
我想知道是否有另一种环境变量方法可以让我给devs访问这个配置,但掩盖了高度机密的东西。我可以将秘密env vars放在服务器上的文件中吗?
还有另一种方法吗?
答案 0 :(得分:0)
解决此问题的一种方法是使用Elastic Beanstalk EC2实例的IAM角色。您可以将信息存储在开发人员无法访问的资源中,但可以由EC2实例访问,因为它承担了某个角色。
亚马逊有blog post如何使用S3加密存储桶和AWS KMS来存储加密密钥。这是关于在EC2容器服务中将它用于Docker容器,但原理是相同的。
答案 1 :(得分:0)
这就是我使用EB环境变量设置RDS密码的方式
$(aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:eu-central-1:<aws-account-id>:secret:<secret-arn> --region eu-central-1 | jq --raw-output '.SecretString' | jq -r .password)
密码以json的形式存储在AWS Secrets Manager中
{
"username": "<db-user>",
"engine": "mysql",
"dbname": "<db-name>",
"host": "<rds-host-name>.eu-central-1.rds.amazonaws.com",
"password": "<password>",
"port": 3306,
"dbInstanceIdentifier": "<db-identifier>"
}
RDS password set in Elastic Beanstalk as environment variable