为什么 Docker Secrets 比环境变量更安全?

Why is Docker Secrets more secure than environment variables?

我正在阅读 Docker Secrets 并继续阅读 Docker 的人们故意选择将秘密存储在 /run/secrets 下的文件中,而不是使用环境变量。但是我在任何地方都找不到关于 为什么 .

的解释

所以我问:为什么使用 Docker Secrets 机制比将环境变量注入我的容器(通过 -e--env-file)更安全?

因为秘密是加密的。来自 documentation :

Secrets are encrypted during transit and at rest in a Docker swarm. A given secret is only accessible to those services which have been granted explicit access to it, and only while those service tasks are running.

你也可以

use Docker secrets to centrally manage this data and securely transmit it to only those containers that need access to it.

环境变量的问题在于您的所有密码和 ssh 密钥都以明文形式存储,并且所有具有与您相同或更多权限的进程也可以访问这些凭据。在 *nix OS 中,您可以使用 :

轻松读取 pid 值为 <pid> 的进程的环境变量
cat /proc/<pid>/environ