为 Docker 容器指定超级用户 PostgreSQL 密码

2024-02-14

在 Docker 容器中运行 PostgreSQL 数据库时,文档 https://hub.docker.com/_/postgres/对于官方 PostgreSQL Docker 镜像,指定管理员密码应在环境变量中设置,例如:

docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres

对于那些不想在脚本中硬编码纯文本密码的人来说,是否有更安全的选择可以考虑?


将配置设置作为环境变量注入是应用程序配置推荐的方法12 因素应用程序 http://12factor.net/网站。

  • http://12factor.net/config http://12factor.net/config

或者,您可以创建自己的容器,从自定义配置文件中读取其配置:

docker run -d mydockerapp --config mydevconfig.yaml

但实际上,环境变量的使用在灵活性方面具有优势,因为它在所有平台上都很普遍。为了使环境变量更容易接受,您可以在文件中指定它们。这至少可以确保同一台计算机上的恶意用户无法从进程列表中收集凭据:

$ cat env.db 
POSTGRES_DB=myappdb
POSTGRES_USER=admin
POSTGRES_PASSWORD=pleasechangeme

$ docker run --name postgres --env-file=env.db -d postgres

最后,我发现有许多突出的功能要求 docker 提供更好的秘密支持:

  • https://github.com/docker/docker/issues/13490 https://github.com/docker/docker/issues/13490

根据我的经验,便利性往往胜过安全性,因此我认为可接受的解决方案需要时间才能获得足够的关注。就我个人而言,我预计会出现一种解决方案,该解决方案可以模拟 Kubernetes 项目对加密数据卷所做的事情:

  • https://kubernetes.io/docs/concepts/configuration/secret/ https://kubernetes.io/docs/concepts/configuration/secret/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为 Docker 容器指定超级用户 PostgreSQL 密码 的相关文章

随机推荐