PodSecurityPolicy(PSP)是 Kubernetes 中的一个集群级别的安全机制,它允许管理员为集群中的 Pod 定义和实施一组详细的准入控制策略。通过PodSecurityPolicy,集群管理员可以精细地控制哪些类型的Pod可以被创建或运行在集群内,以防止不安全的容器配置和潜在的安全威胁。
具体来说,PodSecurityPolicy 可以用来:
- 限制容器运行时使用的用户和组ID
- 控制容器能否使用主机命名空间、文件系统、网络等资源
- 确保只允许特定的容器能力(capabilities)
- 管理卷类型及挂载选项
- 要求必须指定 ServiceAccount 或要求特定的 SELinux 类型
综上所述,当一个Pod被创建或调度时,kube-apiserver 的准入控制器会检查相应的 PodSecurityPolicy 设置,并根据这些策略决定是否允许该Pod的创建或者更新操作。如果一个Pod的配置与任何已定义且启用的PodSecurityPolicy都不兼容,则该Pod将无法成功创建。
然而,需要注意的是,在Kubernetes 1.21版本之后,PodSecurityPolicy已经进入了弃用阶段,并计划在未来的更高版本中移除。为了替代PodSecurityPolicy,社区推荐使用基于Namespace级别的Pod Security Admission controller以及其他原生的Kubernetes安全特性来实现类似的安全管控功能。