服务之间共享随机密码?

时间:2017-03-05 15:38:42

标签: security passwords docker-compose

考虑以下docker-compose文件:

version: "3"
services:
  app:
    build: src
    environment:
       POSTGRES_USER=app
       POSTGRES_PASSWORD=mysecretpassword
  [...]

  db:
    image: postgres
    environment:
       POSTGRES_USER=app
       POSTGRES_PASSWORD=mysecretpassword

现在,我不想登记mysecretpassword(即使从理论上讲,攻击者永远不应该访问此密码可以使用的任何内容,也不能访问我的源代码。)

我尝试过的方法是从入门bash脚本生成密码并设置环境变量,然后替换上面的内容:

       POSTGRES_PASSWORD=${MY_GENERATED_PASSWORD}

这很有效,但是我不得不一直在自定义bash脚本中包装docker-compose(我可能或者可能不喜欢这样做)。

这必须是一个常见的问题,有更好的解决方案吗?理想情况下,我希望将docker内置的功能组合起来生成随机字符串以用作密码。

或者我应该放弃并检查密码? (我认为这是一种务实的方法,考虑到如果其中任何一个容器受到攻击,攻击面都是敞开的)

1 个答案:

答案 0 :(得分:0)

最高安全性:根本不存储密码。

  • 运行每N分钟更改一次数据库密码的密码轮换服务
  • 应用程序(或代理)在数据库中已更改密码但应用程序仍具有旧密码的情况下遇到边缘情况时实现retry-on-auth-error

否则,docker-compose肯定是一个构建容器的工具,而不是构建项目的工具。有一个构建脚本在本周运行任何* -compose事物,它们肯定会发生变化,但你的构建脚本将保持稳定的用户界面。