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