【问题标题】:Random password shared between services?服务之间共享随机密码?
【发布时间】:2017-07-25 10:03:39
【问题描述】:

考虑以下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}

这可行,但缺点是我必须一直将 docker-compose 包装在自定义 bash 脚本中(我可能更喜欢也可能不喜欢这样做)。

这一定是一个普遍的问题,有没有更好的解决方案?理想情况下,我希望在 docker compose 中内置该功能以生成随机字符串以用作密码。

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

【问题讨论】:

    标签: security passwords docker-compose


    【解决方案1】:

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

    • 运行密码轮换服务,每 N 分钟更改一次数据库密码
    • 应用程序(或代理)在数据库中已更改密码但应用程序仍有旧密码时遇到边缘情况时实现重试验证错误

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

    【讨论】:

    • 完全不存储(保留)密码正是我想要完成的。
    猜你喜欢
    • 1970-01-01
    • 2016-11-05
    • 2011-05-01
    • 1970-01-01
    • 2016-03-28
    • 2019-05-07
    • 1970-01-01
    • 2019-07-22
    • 2013-02-25
    相关资源
    最近更新 更多