在 ecs-cli compose docker 容器中获取 AWS 参数存储机密

Getting AWS parameter store secrets inside ecs-cli compose docker container

最近几天我一直在构建一个后端,我将使用 docker-compose 启动它。我使用 docker 秘密来不必在环境变量中存储密码 - 例如数据库的密码。

由于我想使用 AWS ECS 在线 运行 docker 容器,不幸的是 docker compose 不支持我想要的方式,我正在尝试重写整个东西到 ECS-compose 文件中。但是,我仍然坚持秘密。我想像这样包括它们:

version: 1
task_definition:
   ...
   services:
      my-service:
         ...
         secrets:
          - value_from: DB_USERNAME
            name: DB_USERNAME
          - value_from: DB_PASSWORD
            name: DB_PASSWORD

这样做,秘密就保存在环境变量中了,不是吗?这不是最佳做法,还是这种情况与其他情况不同?

我可以通过获取环境变量在容器内毫无问题地访问这些变量吗?

希望我的问题已经说清楚了,如果还不清楚,请再问一次。

提前感谢您的帮助。

在环境变量中存储敏感信息不是最佳做法。 AWS ECS 中有一个选项,您可以在其中配置环境变量并从 AWS Secrets Manager 获取这些变量的值。这样,环境变量仅在 运行 时间在容器内解析。

但这仍然意味着容器将把变量存储为环境变量。

我在将应用程序部署到 EKS 时遇到过类似的情况。我已经在 AWS 中设置了一个用于机密管理的中央保险库服务器,并将我的应用程序配置为直接调用保险库端点以获取机密。我不得不使我的架构复杂化,因为我必须满足 PCI 合规性标准。如果你因为 vault 的复杂性而不热衷于使用它,你可以试试 knox-app (https://knox-app.com/),这是一个由 lyft 工程师构建的在线秘密管理工具。

然后回答问题的第二部分 - 是的。如果您设置了环境变量,您将能够在容器内毫无问题地访问它们。