在这篇博客文章中,我在评论中找到了以下引文:
本·费什曼 是的-你说得对,我应该指出码头插座的安全问题。这是目前的主要阻断剂,这是实际的生产,我们肯定是寻求帮助,使其更好的工作,正如您注意到的待办事项清单。
虽然我确信这对许多人来说是有意义的,但对于我们其他人来说,有人能用明确的术语解释一下这个“安全问题”是什么吗?我想它指的是:
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"在停靠-合成文件中。对吗?如何利用这一点呢?这是否有效地禁止了这种方法的生产使用?如果是的话,有解决办法吗?
发布于 2017-01-24 07:14:25
对于我们其他人来说,有人能用明确的术语确切地解释这个“安全问题”是什么吗?
/var/run/docker.sock的所有者是运行容器的主机的root,默认组成员为docker组。这就是为什么在另一个容器中挂载var/run/docker.sock给您根权限的原因,因为现在您可以做任何具有docker组成员资格的root用户可以做的事情。
这是否有效地禁止了这种方法的生产使用?如果是的话,有解决办法吗?
对于解决办法,这些帖子可能会有所帮助:https://integratedcode.us/2016/04/08/user-namespaces-sharing-the-docker-unix-socket/和https://integratedcode.us/2016/04/20/sharing-the-docker-unix-socket-with-unprivileged-containers-redux/
退一步,了解需要挂载var/run/docker.sock的usecase,看看是否有其他方法可以满足usecase。不幸的是,如果问题中没有usecase描述,就很难提供避免安装unix套接字的替代方案。
祝你好运和荣誉,因为你努力做正确的事情!
发布于 2018-09-14 13:35:10
这是一个老问题,但我希望我能给你一个确切的例子。
有人能用明确的术语解释一下这个“安全问题”是什么吗?
以下是开发的核心:
sh0% docker run -v /var/run/docker.sock:/ourdocker.sock:ro -it ubuntu bash
sh1# docker -H unix:///ourdocker.sock run --privileged -v /:/host ubuntu bash
sh2# nsenter --mount=/host/proc/1/ns/mnt --pid=/host/proc/1/ns/pid
sh3# # now we are in the host namespaces with root access如果使用用户名称空间,则此问题很难利用,但在某些情况下仍有一定的可能性(您仍然可以影响在同一主机上运行的其他容器)。
请注意,虽然上面的示例使用了--privileged,但是没有--privileged是可以做到这一点的(因此,即使您有一个阻止--privileged的Docker AuthZ插件,您仍然无法安全地避免这种情况)。
发布于 2016-11-28 12:30:03
任何可以写入dockerd套接字的进程都可以有效地访问主机上的根.好吧,你能不能在生产中使用这个取决于你自己。
https://stackoverflow.com/questions/40844197
复制相似问题