PID命名空间共享

概述

PID命名空间在进程之间提供分离。它防止系统进程可见,并允许重用进程ID,包括PID 1。如果主机的PID命名空间与容器共享,这将允许它们查看主机系统上的所有进程。

如果PID命名空间被共享,这意味着:

  • 容器进程不再有PID 1。一些容器拒绝在没有PID 1的情况下启动(例如,使用systemd的容器)或运行如kill -HUP 1之类的命令来信号容器进程。在具有共享进程命名空间的Kubernetes Pod中,kill -HUP 1将信号Pod沙箱。

  • 主机进程(或Pod中容器的进程)对容器(或其他容器)可见。这包括/proc中可见的所有信息,例如作为参数或环境变量传递的机密信息。这些仅受常规Unix权限保护。

  • 主机(或容器)文件系统通过/proc/[pid]/root链接对容器(或Pod中的其他容器)可见。

PID命名空间共享减少了主机和容器之间的进程级隔离,并使各种攻击成为可能,包括注入到主机进程(需要CAP_SYS_PTRACE)。

参考资料

最后更新于