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



在过去的几天里,我一直在构建一个使用docker-compose启动的后端。我使用docker秘密是为了不必在环境变量中存储密码(例如数据库的密码)。

由于我想使用AWS ECS在线运行docker容器,不幸的是docker撰写不支持我想要的方式,我试图将整个事情重写为ECS撰写文件。然而,我仍然被这些秘密所困。我想这样包含它们:

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工程师建立的在线秘密管理工具。

回答你问题的第二部分——是的。如果您设置了env变量,您将能够在容器内访问它们而没有任何问题。

最新更新