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