参加了Docker和Compose的速成课程,学习如何在考虑安全性的情况下部署小型自动化应用程序。问题是,我需要提供脚本敏感的值,不想硬编码它们。经过大量研究,我决定在运行时编写并设置我的env-var,而不是使用标准的Docker构建。我还有一些JSON文件,其中包含作为登录形式的网络cookie,这些cookie作为卷传递。我的理解是,在检查容器时,这些值将不可见。然而,当我检查它时,它们与JSON文件的内容一起清晰可见。除非我是唯一知道如何访问特定容器的人,否则我确信这不是一个安全的选择。
来自亚马尔:
services:
frontend:
image: SOME IMAGE
build: .
volumes:
- ./script.py:/app/script.py
- ./words.txt:/app/words.txt
- ./.some.json:/app/.some.json
- ./.another.json:/app/.another.json
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
env_file:
- ./some.env
container_name: name
volumes:
.:
external: true
为什么值和文件清晰可见?我不想在这个时候走Swarm的方向和它的秘密。
编辑:这并没有被推送到Hub或存储库,所以我不担心这方面的安全性。
除非我是唯一知道如何访问特定容器的人,否则我确信这不是一个安全的选项
如果其他人知道如何访问容器,他/她将能够运行:
# to get contents of JSON file
docker exec container_name cat /app/.some.json
# to print all env vars inside container
docker exec container_name env
我很确定这不是一个安全的选择
非安全选项允许未知人员控制/访问服务器端。容器内容是最后的目的地,如果有人访问它,这里的游戏就结束了,没有理由隐藏信息
在ENV和配置文件中设置变量和机密只对有帮助
- 在不同的配置/环境中重用相同的代码,而不更改其自身
- 在公共场所(如GitHub(共享代码而不泄露敏感信息(我建议在
.gitignore
中添加所有配置文件路径(
此外,本文可能对您的有所帮助