目录
- 1.关键功能
- 2.注意
- 3.过渡到 PodSecurity
- 4.示例配置(已废弃,仅供参考)
Pod Security Policies (PSP) 是 Kubernetes 中一个已经废弃的功能,它曾用于控制Pod及其容器的运行时安全属性,比如容器是否能运行在特权模式下、是否能使用特定的Linux功能、挂载什么样的卷等。PSP作为一种集群级别的策略,帮助管理员定义了一系列规则,以确保Pod按照组织的安全标准运行。
1.关键功能
- 权限控制:限制容器是否能以特权模式运行,限制对宿主机功能的访问(如PID、IPC命名空间共享)。
- 能力管理:控制容器可使用的Linux Capabilities。
- SELinux和AppArmor配置:强制执行SELinux标签或AppArmor配置文件。
- 卷使用限制:规定哪些类型的卷可以被挂载。
- 主机路径限制:控制是否允许Pod挂载宿主机上的目录。
- Seccomp配置:指定Seccomp配置文件以限制系统调用。
2.注意
自 Kubernetes v1.21 起,PSP 已被弃用,并计划在 v1.25 中完全移除。取而代之的是新的机制 PodSecurity
特性,它引入了 Pod 安全标准(Pod Security Standards,PSS),包括 privileged
, baseline
, 和 restricted
三个级别,用于在命名空间级别控制Pod的安全要求。
3.过渡到 PodSecurity
- PodSecurity admission controller:替代了 PSP 控制器,负责执行新的安全策略。
- 命名空间注解:用于在没有显式启用 PodSecurity 特性的集群上,临时定义命名空间的策略等级。
- 策略迁移:从PSP迁移到PSS通常涉及重新评估和定义安全需求,以匹配新的安全标准。
4.示例配置(已废弃,仅供参考)
旧的 PSP 配置示例如下,展示如何创建一个限制容器运行权限的策略:
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: restricted
spec:
privileged: false # 禁止特权模式
allowPrivilegeEscalation: false # 禁止权限提升
requiredDropCapabilities: # 必须删除的能力列表
- ALL
allowedCapabilities: # 允许的能力列表,如果未设置allowedCapabilities,则默认不允许任何能力
seLinux:
rule: RunAsAny # 使用任何SELinux上下文
supplementalGroups:
rule: RunAsAny # 任何附加组ID都可使用
runAsUser:
rule: MustRunAsNonRoot # 用户ID必须是非root
fsGroup:
rule: RunAsAny # 任何文件系统组都可使用
volumes: # 允许的卷类型
- secret
- configMap
- emptyDir
鉴于PSP已被废弃,推荐使用最新的 PodSecurity
特性和策略标准来管理Kubernetes集群的安全性。