PSA 是什么
Pod 安全准入是内置的准入控制器,用命名空间标签声明三档安全标准与三种违规动作,替代已废弃的 PodSecurityPolicy。它不引入额外组件,由 API Server 直接执行:创建或更新 Pod 时按标签选择的标准校验,命中违规就按配置的动作用户侧提示、记审计或直接拒绝。
基本信息
| 适用平台 | Kubernetes 1.23 起正式可用,1.25 移除旧版 PodSecurityPolicy |
|---|---|
| 配置方式 | 命名空间标签 pod-security.kubernetes.io/<动作> |
| 三种动作 | enforce 拒绝、audit 记入审计日志、warn 返回警告 |
| 三档标准 | privileged 不限制、baseline 禁明显危险项、restricted 最严格 |
| 版本固定 | <动作>-version 标签锁定判定所用标准版本 |
典型使用场景
- 为生产命名空间设置强制标准,阻止特权容器与主机网络被误开
- 先在测试命名空间用警告模式统计历史负载的违规面
- 对系统组件命名空间放宽到 privileged,业务命名空间收紧
- 配合审计日志做合规举证,记录谁在什么时候尝试提权
- 用版本固定标签避免集群升级后标准变严导致负载突然创建失败
打标签与版本固定
打标签与版本固定
kubectl label ns prod pod-security.kubernetes.io/enforce=baseline # 强制基线标准
kubectl label ns prod pod-security.kubernetes.io/warn=restricted # 违规时给警告便于改造
kubectl label ns prod pod-security.kubernetes.io/audit=restricted # 违规写入审计
kubectl label ns prod pod-security.kubernetes.io/enforce-version=v1.29 # 锁定判定版本
kubectl get ns prod --show-labels # 确认标签生效三档标准对比
| 标准 | 限制程度 | 典型禁止项 |
|---|---|---|
| privileged | 不限 | 无限制,仅保留审计能力 |
| baseline | 中等 | 禁止特权容器、主机命名空间、危险的能力提升 |
| restricted | 最严 | 还要求非 root 运行、只读根文件系统、丢弃全部能力 |
迁移顺序推荐先只开警告与审计观察一到两周,把违规负载清单交给业务改造,确认无阻断后再打开强制,这样不会在大规模扩容的夜里集中暴露问题。
CNI、存储、监控等需要特权或主机目录的组件要单独放在宽松命名空间。给它们开强制严格标准会导致组件无法创建,直接影响集群网络与存储。