在Docker容器中运行PostgreSQL数据库时,官方PostgreSQL Docker Image的documentation指定应在环境变量中设置管理员密码,如:
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
对于那些不想在脚本中对纯文本密码进行硬编码的人,是否有更安全的选择需要考虑?
答案 0 :(得分:5)
将配置设置作为环境变量注入是12 factor app网站推荐的应用程序配置方法。
或者,您可以创建自己的容器,从自定义配置文件中读取其配置:
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提供了更多秘密支持的一些未决功能请求:
根据我的经验,便利性习惯于超越安全性,因此我认为获得足够的思维共享需要时间来获得可接受的解决方案。就个人而言,我预见到一种新的解决方案可以模拟Kubernetes项目对加密数据量的影响: