我读过关于码头群秘密的文章,也做了一些测试。据我所知,机密可以替换docker-come.yml文件中提供的敏感环境变量(例如数据库密码)。因此,当我检查坞-组合文件或正在运行的容器时,我将不会看到密码。很好-但它有什么真正的帮助呢?
如果攻击者在我的码头主机上,他可以很容易地查看/run/机密
docker exec -it df2345a57cea ls -la /run/secrets/还可以查看内部的数据:
docker exec -it df27res57cea cat /run/secrets/MY_PASSWORD同样的攻击者可以在运行的容器上打开bash,看看它是如何工作的.
此外,如果攻击者在容器本身,他可以四处看看。
所以我不明白为什么对接者的秘密更安全,就好像我直接把它们写到docker -come.yml文件中一样?
发布于 2018-01-07 21:21:19
存储在docker-compose.yml中的秘密在该文件中是可见的,它也应该被签入版本控制中,在那里其他人可以看到该文件中的值,并且它将在容器上的命令(如docker inspect )中可见。从那里,它也可以在你的容器内看到。
相反,停靠者秘密将加密管理器上磁盘上的秘密,只将其存储在需要该秘密的工作人员的内存中(容器中可见的文件是存储在ram中的tmpfs ),并且在docker inspect输出中不可见。
这里的关键部分是,您将您的秘密保存在您的版本控制系统之外。有了Docker的RBAC这样的工具,您还可以通过将其docker exec功能移到生产容器中或在生产环境中使用码头机密,从而使不需要访问的任何人都知道它们的秘密。这可以在仍然允许开发人员查看日志和检查容器的能力的同时完成,这是生产支持所必需的。
还要注意,您可以在docker容器中配置一个秘密,使其只能由特定用户(例如root用户)读取。然后,您可以删除作为非特权用户运行应用程序的权限(像gosu这样的工具对此很有用)。因此,防止攻击者读取容器内的应用程序的秘密是可行的,这对于环境变量来说就不那么简单了。
发布于 2021-07-07 03:17:44
Docker是针对群的,而不是针对某个容器的一个节点,也不是为一台机器编写的(虽然它可以使用,但并不主要用于此目的)。如果您有多个节点,那么Docker比将您的秘密部署在多个工作机器上更安全,只部署到那些需要基于哪个容器在那里运行的秘密的机器。
参见这个博客:浅谈码头秘密管理
https://stackoverflow.com/questions/48141233
复制相似问题