php - 如果 AWS_SECRET_KEY 必须存储在 EBS 环境变量中,AWS Secrets Manager 如何在 Elastic Beanstalk 应用程序中安全使用?
问题描述
我有以下设置:
- 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 点,因为如果我没记错的话,对访问密钥和秘密的访问也允许访问秘密管理器。
我在这里想念什么?
解决方案
我现在将它们存储在 AWS Secret Manager 中,但是为了让应用程序能够获取秘密,
你不必这样做。就像使用常规 EC2 实例一样,在 EB 中,您使用EB instance profile授予 SM 或其他 AWS 资源的权限。
这样,您的 ENV 就没有任何 AWS 密钥,AWS SDK 会自动查询实例上的配置文件以获取临时 AWS 凭证以访问 SM。如果您想“手动”获取这些凭据,您也可以自己查询元数据。
推荐阅读
- sparql - SPARQL BIND IF bound 未按预期工作
- node.js - 用于保存的 userSchema.pre 不起作用。我想在将密码保存到 mongodb 数据库之前对其进行哈希处理
- javascript - 是否有任何解决方案如何使用正则表达式解决这种情况?
- google-sheets - 下拉选择中不同选择的多次导出
- angular - 角度路由可选参数验证
- javascript - 菜单在多列中按需提供选项
- c# - 等待 lambda 中的延迟值,然后在函数中返回它
- perl - 为什么 Devel::LeakTrace 泄漏内存?
- node.js - findOne() 查询在 mongo 控制台上运行良好,但相同的查询在我的 node.js 代码中没有返回任何内容
- python - 在 Django 中从 CSV 上传任何 DateTime