最佳实践 - 如何将 SES IAM 用户凭证传递给 Fargate 任务?

Best practice - how to pass SES IAM User credentials to an Fargate Task?

我有一个关于在 AWS 中处理“硬编码”机密的问题。这是我的设置:

我们是 运行 一个由 3 个服务组成的 Fargate 集群。其中一项服务(后端)需要我们的 SES 帐户(邮件发送)和 S3 存储桶(文件存储)的凭据。目前我们使用 AWS 机密管理器,它保存 ses-smtp 用户和 s3 用户的凭证,并在容器启动时将机密值作为环境变量注入。整个堆栈(除了位于其他区域的 SES)是使用云形成模板创建的。所需的秘密也由模板创建。还有我的“问题”——目前秘密模板包含硬编码的 SES 和 S3 凭据,这很糟糕,因为模板被推送到模板存储桶(它不是 public 但无论如何)并且它可能被提交到版本控制,它将暴露给任何对该项目具有读取权限的人。问题是 - 将 SES 和 S3 凭据传递到容器而不在任何地方暴露它们的最佳做法是什么?

提前致谢, 阿尔

为 SES 和 S3 访问使用 IAM

您的 ECS 集群有 task role。 它由您的下划线容器承担,并且这些容器将拥有您角色中定义的所有访问权限,以及附加到它的策略。

AWS 服务访问

为您的 SES 和 S3 访问权限创建具有受限访问权限的策略并将其附加到角色。

常规凭据

对于一些纯文本凭据,我建议在参数存储中创建它们并将它们映射到任务定义中的容器中。 Pass secrets safely. 您不应在云形成模板中创建参数存储机密,最好手动添加这些机密,并从需要的地方引用。