我将如何检索 AWS ECS 任务定义的 Vault 密钥?

How would I go about retreiving Vault keys to AWS ECS Task Definitions?

这是一个愚蠢的问题,但如果您能就此主题提供帮助,我们将不胜感激。

我使用托管在 AWS 中的 Hashicorp Vault。我正在尝试找到一种使用 AWS ECS 的任务定义从 Vault 检索密钥的方法;但是,我没有看到任何关于此的信息。您可以使用 AWS Secrets Manager,但我们没有使用此服务。

是否最好使用 CI/CD 服务(例如 GitLab),从 Vault 检索机密,构建映像并发送到 AWS ECS?或者,有没有办法在 AWS ECS 上实施 Vault?

感谢阅读本文post。

ECS 与 Secrets Manager 的集成发生在 ECS 部署您的容器时。 ECS 将查找这些机密,并将它们作为环境变量注入到容器中。 ECS 没有任何 third-party 秘密查找支持,它仅支持 AWS Secrets Manager 和 AWS Parameter Store。

在构建时将秘密烘焙到图像中似乎是非常错误的。它会将您的图像锁定到特定环境,并在每次秘密更改时强制您创建新图像。这也意味着您的 docker 图像现在需要存储在与您的 HashiCorp Vault 服务器一样安全的地方。

将 HashiCorp Vault 与 AWS ECS 集成的推荐方法是向您的 ECS 任务定义添加一个边车容器,它在任务启动时查找 Vault 中的秘密,并使这些秘密可供您在任务。这已记录在案 here

但是,在该官方解决方案中,出于某种原因,他们正在使用共享的 EFS 卷。这对我来说似乎是非常错误的,因为这意味着您的 ECS 任务的多个实例将相互踩踏写入同一个 EFS 卷,并且无论如何都不需要将这些秘密写入容器外部的持久卷。我会修改该解决方案以简单地将 Vault 机密写入 ECS 任务中容器之间共享的临时卷。


或者,只需修改 docker 映像中的启动脚本,在启动您的应用程序之前,首先连接到您的 Vault 以下载机密并使它们在容器中可用。