chr*_*ian 6 security docker docker-registry docker-compose
我的 Tomcat 容器需要必须受到良好保护的数据,即用于数据库访问的密码以及用于单点登录到其他系统的证书和密钥。
我已经看到一些使用-e或-env-file将秘密数据传递给容器的建议,但这可以通过 docker inspect 发现(-env-file也在docker inspect 中显示文件的所有属性)。
另一种方法是将带有机密的数据容器链接到服务容器,但我不喜欢在我的注册表中包含此数据容器的概念(可供更广泛的人访问)。我知道我可以设置一个私有注册表,但是我需要不同的注册表来进行测试和生产,而且每个可以访问生产注册表的人仍然可以访问秘密数据。
我正在考虑使用包含机密数据的目录设置我的服务器并将机密数据安装到我的容器中。这对于具有不同秘密的测试和生产服务器非常有用。但它创建了容器对我的特定服务器的依赖。
所以我的问题是:您如何处理秘密数据,该问题的最佳解决方案是什么?
2017 年 1 月更新
Docker 1.13 现在具有 docker swarm 命令docker secret。
另请参阅“为什么不建议ARG在DOCKERFILE传递秘密? ”。
原始答案(2015 年 9 月)
Adrian Mouat在之前的回答docker vault中提到的概念在第 1030 期中得到了积极讨论(讨论仍在第 13490 期中继续)。
目前它因超出 docker 的范围而被拒绝,但还包括:
我们针对这个问题提出了一个简单的解决方案:一个 bash 脚本,一旦通过单个
RUN命令执行,就会从本地 HTTP 服务器下载私钥,执行给定的命令,然后删除密钥。由于我们在单个 中完成所有这些操作
RUN,因此图像中不会缓存任何内容。这是它在 Dockerfile 中的样子:
RUN ONVAULT npm install --unsafe-perm
Run Code Online (Sandbox Code Playgroud)
我们围绕这个概念的第一个实现可以在 上找到
dockito/vault。为了在本地开发图像,我们使用将 Dockito Vault 作为服务运行的自定义开发盒。
唯一的缺点是需要运行 HTTP 服务器,因此不需要构建 Docker hub。
| 归档时间: |
|
| 查看次数: |
3172 次 |
| 最近记录: |