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

sme*_*eeb 7 security environment-variables docker docker-secrets

我正在阅读Docker Secrets,并继续阅读Docker的人故意选择将秘密存储在文件中,/run/secrets而不是使用环境变量.但无处我就一直能够找到一个解释,为什么.

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

Ort*_*kni 10

因为秘密是加密的.从文档:

秘密在运输过程中和 Docker群中的静止状态下进行加密.只有那些已被授予显式访问权限的服务才能访问给定的机密,并且只有在这些服务任务正在运行时才能访问.

你也可以

使用Docker机密来集中管理这些数据,并将其安全地传输到那些需要访问它的容器.

环境变量的问题在于,所有密码和ssh密钥都以明文形式存储,并且所有具有相同权限或更多权限的进程都可以访问这些凭据.在*nix OS中,您可以轻松读取进程的环境变量,其pid值为<pid>:

cat /proc/<pid>/environ
Run Code Online (Sandbox Code Playgroud)