为什么Docker的秘密比环境variables更安全?

我正在阅读Docker的秘密,并继续阅读,Docker的人故意select在/run/secrets下的文件中存储秘密,而不是使用环境variables。 但是我什么都找不到解释。

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

因为秘密被encryption。 从文档 :

秘密在运输过程中encryption,在 Docker群中rest 。 给定的秘密只有被授予明确访问权限的服务才能访问,只有在这些服务任务正在运行的情况下。

你也可以

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

环境variables的问题在于,所有的密码和ssh密钥都以明确的方式存储,所有具有相同权限或更多权限的进程也可以访问这些凭据。 在* nix OS中,您可以轻松读取pid值<pid>的进程的环境variables:

 cat /proc/<pid>/environ