如果 AWS_SECRET_KEY 必须存储在 EBS 环境变量中,AWS Secrets Manager 如何在 Elastic Beanstalk 应用程序中安全使用?
Posted
技术标签:
【中文标题】如果 AWS_SECRET_KEY 必须存储在 EBS 环境变量中,AWS Secrets Manager 如何在 Elastic Beanstalk 应用程序中安全使用?【英文标题】:How is AWS Secrets Manager used in an Elastic Beanstalk application safe if the AWS_SECRET_KEY has to be stored in the EBS environment vars? 【发布时间】:2021-09-24 05:57:52 【问题描述】:我有以下设置:
php Laravel 应用程序 AWS Elastic Beanstalk -> EC2 网络服务器 AWS Secret Manager 存储数据库密码 用于存储 AWS_SECRET_KEY 的 Elastic Beanstalk 环境变量 TappNetwork/laravel-aws-secrets-manager 获取机密我曾经将数据库密码(和其他凭据)存储在 Beanstalk 环境变量中,但不想再以纯文本形式存储。
我现在将它们存储在 AWS Secret Manager 中,但是为了让应用程序能够获取密钥,AWS_ACCESS_KEY_ID 和 AWS_SECRET_KEY 需要在 Laravel 中可用,以便它们可以用于 AWS SDK 之间的通信以及我们的 AWS 设置。
这让我回到了第 1 点,因为如果我没记错的话,对访问密钥和秘密的访问也允许访问秘密管理器。
我在这里错过了什么?
【问题讨论】:
你有没有想过夏洛克?我遇到了同样的问题。 @JimM no :-(,你? 【参考方案1】:我现在将它们存储在 AWS Secret Manager 中,但为了让应用程序能够获取这些秘密,
您不必这样做。就像使用常规 EC2 实例一样,在 EB 中,您使用 EB instance profile 授予 SM 或其他 AWS 资源的权限。
这样,您的 ENV 将清除任何 AWS 密钥,并且 AWS SDK 会自动查询实例上的配置文件以获取临时 AWS 凭证以访问 SM。如果您想“手动”获取这些凭据,也可以query the metadata yourself。
【讨论】:
好的,我会调查的,谢谢。呃,要是 Beanstalk 环境变量只有 Secrets Manager 支持就好了。以上是关于如果 AWS_SECRET_KEY 必须存储在 EBS 环境变量中,AWS Secrets Manager 如何在 Elastic Beanstalk 应用程序中安全使用?的主要内容,如果未能解决你的问题,请参考以下文章
Redux,如果我想访问数据,是不是必须在所有容器中导入存储?