在Docker容器中运行PostgreSQL数据库时,官方PostgreSQL Docker映像的文档指定应在以下环境变量中设置管理员密码:
docker run——命名一些postgres-e postgres\u PASSWORD=mysecretpassword-d postgres
对于那些不想在他们的脚本中硬编码纯文本密码的人来说,有更安全的选项要考虑吗?
注入配置设置作为环境变量是12因素应用程序网站推荐的应用程序配置方法
- http://12factor.net/config
或者,您可以创建自己的容器,从自定义配置文件读取其配置:
docker运行-d mydockerapp--config mydevconfig.yaml
但实际上,环境变量的使用在灵活性方面具有优势,因为它在所有平台上都无处不在。为了使环境变量更容易接受,可以在文件中指定它们。这至少将确保同一台计算机上的恶意用户无法从进程列表中收集凭据:
$cat env.db
POSTGRES_DB=myappdb
POSTGRES_USER=admin
POSTGRES_PASSWORD=请更改密码
$docker run--name postgres--env file=env.db-d postgres
最后,我发现docker对更好的秘密支持有许多突出的功能要求:
- https://github.com/docker/docker/issues/13490
根据我的经验,便利往往胜过安全,因此我认为需要时间才能找到一个可接受的解决方案来获得足够的思想分享。就我个人而言,我看到了一个正在出现的解决方案,它模拟Kubernetes项目对加密数据卷所做的工作:
- https://kubernetes.io/docs/concepts/configuration/secret/