这是一个基本的发送电子邮件应用程序。 设置 IAM 用户角色和 Secret Manager(使用 SDK 中的密钥)是最困难的部分。 我需要能够通过本地开发和 AWS 管道/容器环境来做到这一点。 试图找出最佳实践是什么以及它会是什么样子。
我设置了凭据文件来访问 AccessKeyId 和 SecretKey。这些是文档不鼓励的长期凭证。
我在应用程序设置中添加了按键。也被文档劝阻。
我从 SDK 实现了 SecretManager,但我需要创建 IAM 角色。我无法直接执行此操作,因此我要求保安执行此操作。我应该很快就会得到这个角色。
我的问题是,Secret Manager 是实现此目的的方法吗?IAM 角色将如何发挥作用?还是我想多了?
我需要能够通过本地开发和 AWS 管道/容器环境来做到这一点。
对于本地开发,定义
AWS_ACCESS_KEY_ID
和 AWS_SECRET_ACCESS_KEY
env-vars(或在 ~/.aws/credentials 中具有等效项)文件就可以了。
Secret Manager 是实现此目的的方法吗?IAM 角色将如何发挥作用?
是的。对于您的“管道/容器”环境(假设这是一个 EC2 实例),最好通过 IAM 角色(而不是通过在应用程序代码中指定 AccessKeyId 和 SecretKeyId)访问 Secrets Manager。您只需在创建密钥时在资源权限部分添加 IAM 角色和账户 ID:
{
"Version" : "2012-10-17",
"Statement" : [ {
"Effect" : "Allow",
"Principal" : {
"AWS" : "arn:aws:iam::<Account-ID>:role/<IAM Role>"
},
"Action" : [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ],
"Resource" : "*"
} ]
}
如果部署您的应用程序的 EC2 实例附加了此 IAM 角色,您的应用程序将能够访问 Secrets Manager。
请参阅 Secrets Manager 官方文档。