Jua*_*ian 53 security docker docker-swarm
目前我们是在单个 docker 容器上运行的应用程序,该应用程序需要将各种敏感数据作为环境变量传递,
我将它们放在运行命令中,这样它们就不会出现在图像中,然后出现在存储库中,但是我最终得到了一个非常不安全的运行命令,
现在,我知道存在 docker 机密,但是,如何在不部署集群的情况下使用它们?或者有没有其他方法来保护这些数据?
此致,
Lin*_*eep 62
是的,如果您使用撰写文件,则可以使用机密。(你不需要运行一个群)。
您使用docker -compose撰写文件:docker-compose.yml 文件中有“秘密”文档。
我切换到 docker-compose 因为我想使用秘密。我很高兴我做到了,它看起来更干净了。每个服务都映射到一个容器。如果你想改用运行 swarm,你基本上已经在那里了。
注意:Secrets 不会加载到容器的环境中,它们会挂载到 /run/secrets/
下面是一个例子:
1) 项目结构:
|
|--- docker-compose.yml
|--- super_duper_secret.txt
Run Code Online (Sandbox Code Playgroud)
2) docker-compose.yml 内容:
version: "3.6"
services:
my_service:
image: centos:7
entrypoint: "cat /run/secrets/my_secret"
secrets:
- my_secret
secrets:
my_secret:
file: ./super_duper_secret.txt
Run Code Online (Sandbox Code Playgroud)
3) super_duper_secret.txt 内容:
Whatever you want to write for a secret really.
Run Code Online (Sandbox Code Playgroud)
4) 从项目的根目录运行此命令以查看容器确实可以访问您的机密,(必须运行 Docker 并且安装了 docker-compose):
docker-compose up --build my_service
Run Code Online (Sandbox Code Playgroud)
你应该看到你的容器输出你的秘密。
你不能......它不支持没有 Swarm 的秘密。除非“可能是”你“Swarm”只使用一个节点。
另一种解决方案是,我认为使用像这样的第三方保险库软件:
但是,要使用来自 Vault 的容器中的机密,您需要阅读文档。
希望这能让你走上正确的道路。