【发布时间】:2019-04-01 03:53:57
【问题描述】:
Docker支持user namespace remapping,使用户命名空间与主机完全分离。
当前的默认行为确保容器拥有自己的用户和组管理,即它们自己的/etc/passwd 和/etc/group 版本,但容器进程在主机系统上以相同的 UID 运行。这意味着如果您的容器使用 UID 1(root)运行,它也将以 root 身份在主机上运行。同样,如果您的容器安装了 UID 1001 的用户“john”并使用该用户启动其主进程,则在主机上它还将使用 UID 1001 运行,该 UID 可能属于用户“Will”并且也可能有管理员权利。
要使用户命名空间隔离完整,需要启用重新映射,它将容器中的 UID 映射到主机上的不同 UID。因此,容器上的 UID 1 将映射到主机上的“非特权”UID。
Kubernetes 是否支持在底层容器运行时启用此功能?开箱即用是否没有问题?
【问题讨论】:
-
您可能需要这个的用例是什么? (在我使用过的 Kubernetes 集群上,我从未访问过主机的文件系统,也无法访问任何形式的主机 uid。)
-
如果没有用户名空间那么用户可以运行 pods/container 为 uid 0 ,root ,这与主机上的 root 相同,并且可以打开所有可能的破坏,而无需启用 uer ns docker引擎,容器中的root是主机上的root
-
@johnharris85 似乎在 1.14 或 1.15 中可用:)
标签: docker kubernetes namespaces kubernetes-security