我正在阅读Docker Secrets并继续阅读 Docker 的人们故意选择将秘密存储在文件中/run/secrets
而不是使用环境变量。但我无处可解释为什么。
所以我问:为什么使用 Docker Secrets 机制比将环境变量注入我的容器(通过-e
或 a --env-file
)更安全?
我正在阅读Docker Secrets并继续阅读 Docker 的人们故意选择将秘密存储在文件中/run/secrets
而不是使用环境变量。但我无处可解释为什么。
所以我问:为什么使用 Docker Secrets 机制比将环境变量注入我的容器(通过-e
或 a --env-file
)更安全?
因为秘密是加密的。从文档:
秘密在传输过程中被加密,在Docker 群中处于静止状态。一个给定的秘密只能被那些被授予显式访问权限的服务访问,并且只有在这些服务任务正在运行时才可以访问。
你也可以
使用 Docker 机密集中管理这些数据,并将其安全地传输到需要访问它的容器。
环境变量的问题在于您的所有密码和 ssh 密钥都以明文形式存储,并且与您具有相同或更多权限的所有进程也可以访问这些凭据。在 *nix OS 中,您可以轻松读取 pid 值为<pid>
with 的进程的环境变量:
cat /proc/<pid>/environ