为什么公有云 Kubernetes 服务默认允许 root 用户?

为什么公有云 Kubernetes 服务默认允许 root 用户?

在 Kubernetes 环境中,我认为默认情况下不应允许 root 用户访问,以降低从容器内部访问主机操作系统的风险。此设置应通过在 PodSecurityPolicy 中写入来完成。

考虑到这一点,我只是想知道:为什么我们可以使用 root 用户在 EKS、AKE 和 GKE 等公有云 Kubernetes 服务中运行容器?他们是否有另一层安全措施来防止容器被攻击者破坏?

答案1

即使容器化进程有可能由于未修复的漏洞而获得对主机操作系统的访问权限,从而以 root 身份运行,从而完全控制系统,但我相信公共云不会选择默认执行此操作,因为许多知名软件包都有自己的主进程以root身份运行- 例如,nginx 服务依赖于以 身份运行的主守护进程root,该进程又会生成以 身份运行的工作进程,以www-data提高安全性。

答案2

root 用户可以执行 Linux 系统上的任何操作,包括运行 Docker 容器。没有办法不允许 root 用户运行 docker 容器。相反,应该限制 root 用户的访问权限,并使用 sudo 允许非 root 用户在系统上执行某些操作。

然而,在这种情况下Docker这并不那么重要,因为:

docker 组授予与 root 用户相同的权限。有关这对系统安全性的影响的详细信息,请参阅Docker Daemon 攻击面

以非 root 用户身份管理 Docker

因此,任何有权执行 docker 命令的 Linux 用户都可以获得系统的 root 权限。

由于 Docker 是操作系统级虚拟化技术,因此容器内的 root 权限不是问题。容器内的 root 用户无权访问运行 docker 守护程序的底层操作系统。

相关内容