我的问题可能更多是关于 LXC 而不是 Docker,但我想知道有什么安全机制可以防止 Docker 映像中的 root 用户访问整个主机。
更准确地说,我想知道在您达到可以做危险事情的地步之前,此类 root 用户的能力限制是多少。
通常,出于教育目的,我需要学生从 Docker 映像中加载内核模块。这个内核模块可以从整个系统访问吗?如果没有,LXC 的限制是什么?如何处理内核空间内的内存分离?
简而言之,我想知道我们可以在不损害系统的情况下使用 LXC 走多远。
我的问题可能更多是关于 LXC 而不是 Docker,但我想知道有什么安全机制可以防止 Docker 映像中的 root 用户访问整个主机。
更准确地说,我想知道在您达到可以做危险事情的地步之前,此类 root 用户的能力限制是多少。
通常,出于教育目的,我需要学生从 Docker 映像中加载内核模块。这个内核模块可以从整个系统访问吗?如果没有,LXC 的限制是什么?如何处理内核空间内的内存分离?
简而言之,我想知道我们可以在不损害系统的情况下使用 LXC 走多远。
简短的回答: docker 容器上的 Root可以越狱并危及系统。
Docker 旨在简化开发人员和系统管理员的生活,而不是包含彼此隔离的程序。有一些安全功能支持,但它们不是主要意图。这个想法是与应用程序一起发布一个容器,并将每个先决条件打包在一起,让用户轻松启动它,而不是控制行为不端的用户或应用程序。
有一些漏洞可以让在容器内运行根应用程序的用户脱离容器并危及主机。Docker 采取了一些措施来修复这些漏洞,但使用起来很麻烦。
这篇 Docker 安全文章告诉你不要让用户加载模块。要允许加载模块,您可以让用户轻松摆脱监狱。如果您想要安全并让人们加载模块,请使用 VM。
您可以使用 Xen、VirtualBox 或 Kvm 创建轻量级虚拟机,它们将相互隔离。您可以让您的所有用户都拥有镜像的 root 权限,他们将无法互相干扰,也无法与主机系统发生冲突。