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

在Docker容器中运行PostgreSQL数据库时,官方PostgreSQL Docker Image的文档指定应该在环境变量中设置管理员密码,如下所示:

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

对于那些不想在脚本中硬编码明文密码的人,是否有更安全的选择需要考虑?


将配置设置注入为环境变量是12因子应用程序网站推荐的应用程序配置方法。

  • 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
  • 根据我的经验,便利有养成安全的习惯,所以我认为需要一段时间才能有一个可以接受的解决方案来获得足够的思想分享。 就我个人而言,我预见了一个新兴的解决方案,模拟Kubernetes项目使用加密数据卷进行的工作:

  • http://kubernetes.io/v1.0/docs/user-guide/secrets.html
  • 链接地址: http://www.djcxy.com/p/89371.html

    上一篇: Specifying superuser PostgreSQL password for a Docker Container

    下一篇: Insert data in to table using xml and stored procedure in SQL Server 2008