9

Docker 支持用户命名空间重映射,使用户命名空间与主机完全分离。

当前的默认行为确保容器拥有自己的用户和组管理,即它们自己的/etc/passwdand版本/etc/group,但容器进程在主机系统上以相同的 UID 运行。这意味着如果您的容器使用 UID 1(root)运行,它也将以 root 身份在主机上运行。同样,如果您的容器安装了 UID 1001 的用户“john”并使用该用户启动其主进程,则在主机上它也将使用 UID 1001 运行,该 UID 可能属于用户“Will”并且也可能有管理员权利。

为了使用户命名空间隔离完整,需要启用重新映射,它将容器中的 UID 映射到主机上的不同 UID。因此,容器上的 UID 1 将映射到主机上的“非特权”UID。

Kubernetes 是否支持在底层容器运行时启用此功能?它会开箱即用而没有问题吗?

4

1 回答 1

7

因此,根据this(如评论中所暗示的)和this ,它还不受Docker支持。

但是,如果您正在考虑隔离您的工作负载,还有其他选择(不一样,但选项非常好):

您可以使用Pod 安全策略,特别是可以使用RunAsUserAllowPrivilegeEscalation=false。Pod 安全策略可以绑定到 RBAC,因此您可以限制用户运行其 Pod 的方式。

换句话说,您可以强制您的用户仅以 'youruser' 身份运行 pod 并禁用privilegedpod 中的标志securityContext。您还可以sudo在容器映像中禁用和。

此外,您可以删除 Linux Capabilities,特别是CAP_SETUID. 甚至更高级的使用seccomp配置文件,使用SElinuxApparmor配置文件。

运行不受信任的工作负载的其他替代方案(在撰写本文时处于 alpha 阶段):

于 2018-10-28T03:20:52.027 回答