PodSecurityPolicy (PSP) 在 Kubernetes 中能够实现以下的安全策略:
-
运行时用户和组限制:
- 确保容器以非 root 用户身份运行,或者限制容器可以使用的用户或组ID范围。
-
容器能力控制:
- 允许或禁止特定的 Linux 容器能力(capabilities),从而限制容器内进程的能力范围。
-
主机命名空间访问限制:
- 控制容器是否能访问宿主机的命名空间,如:hostPID、hostIPC 或 hostNetwork。
-
卷类型及挂载权限:
- 限制哪些类型的卷可以在 Pod 中使用,并控制它们能否以特权模式挂载(例如,只读、读写等)。
- 阻止对宿主机文件系统的直接挂载,例如
/hostPath
类型的卷。
-
SELinux 相关设置:
- 要求容器具有特定的 SELinux 上下文标签,用于更细致的强制访问控制。
-
特权模式与安全上下文要求:
- 禁止创建特权容器(privileged containers),即那些拥有几乎不受限的宿主机访问权的容器。
- 强制要求 Pod 和其容器具有指定的安全上下文(SecurityContext)配置。
-
AppArmor 或 Seccomp 策略应用:
- 虽然不是直接通过 PSP,但在 PSP 的辅助下可以实施 AppArmor 或 Seccomp 安全策略,进一步限制容器内进程可执行的操作系统调用。
综上所述,通过定义并启用适当的 PodSecurityPolicy,集群管理员可以确保所有被创建的 Pod 符合预设的安全标准,从而降低由于恶意或意外配置导致的安全风险。然而,在 Kubernetes 1.21 及更高版本中,PodSecurityPolicy 已不再推荐使用,并计划移除,转而推荐采用其他原生的 Kubernetes 安全特性来替代,如基于Namespace级别的Pod Security Admission控制器以及其他的政策引擎。