从 PodSecurityPolicy 映射到 Pod 安全性标准

下面的表格列举了 PodSecurityPolicy 对象上的配置参数,这些字段是否会变更或检查 Pod 配置,以及这些配置值如何映射到 Pod 安全性标准(Pod Security Standards) 之上。

对于每个可应用的参数,表格中给出了 BaselineRestricted 配置下可接受的取值。 对这两种配置而言不可接受的取值均归入 Privileged 配置下。“无意见”意味着对所有 Pod 安全性标准而言所有取值都可接受。

如果想要了解如何一步步完成迁移,可参阅从 PodSecurityPolicy 迁移到内置的 PodSecurity 准入控制器

PodSecurityPolicy 规约

下面表格中所列举的字段是 PodSecurityPolicySpec 的一部分,是通过 .spec 字段路径来设置的。

从 PodSecurityPolicySpec 字段映射到 Pod Security 标准
PodSecurityPolicySpec 类型 Pod 安全性标准中对应设置
privileged 检查性质 Baseline & Restricted: false / 未定义 / nil
defaultAddCapabilities 更改性质 & 检查性质 需求满足下面的 allallowedCapabilities
allowedCapabilities 检查性质

Baseline:下面各项的子集

  • AUDIT_WRITE
  • CHOWN
  • DAC_OVERRIDE
  • FOWNER
  • FSETID
  • KILL
  • MKNOD
  • NET_BIND_SERVICE
  • SETFCAP
  • SETGID
  • SETPCAP
  • SETUID
  • SYS_CHROOT

Restricted:空 / 未定义 / nil 或包含 NET_BIND_SERVICE 的列表

requiredDropCapabilities 更改性质 & 检查性质

Baseline:无意见

Restricted:必须包含 ALL

volumes 检查性质

Baseline除下列取值之外的任何值

  • hostPath
  • *

Restricted:下列取值的子集

  • configMap
  • csi
  • downwardAPI
  • emptyDir
  • ephemeral
  • persistentVolumeClaim
  • projected
  • secret
hostNetwork 检查性质 Baseline & Restrictedfalse / 未定义 / nil
hostPorts 检查性质 Baseline & Restricted:未定义 / nil / 空
hostPID 检查性质 Baseline & Restrictedfalse / 未定义 / nil
hostIPC 检查性质 Baseline & Restrictedfalse / 未定义 / nil
seLinux 更改性质 & 检查性质

Baseline & Restricted seLinux.ruleMustRunAs,且 options 如下:

  • user 未设置("" / 未定义 / nil)
  • role 未设置("" / 未定义 / nil)
  • type 未设置或者取值为 container_tcontainer_init_tcontainer_kvm_t 之一
  • level 是任何取值
runAsUser 变更性质 & 检查性质

Baseline:任何取值

RestrictedruleMustRunAsNonRoot

runAsGroup 变更性质(MustRunAs)& 检查性质 无意见
supplementalGroups 变更性质 & 检查性质 无意见
fsGroup 变更性质 & 验证性质 无意见
readOnlyRootFilesystem 变更性质 & 检查性质 无意见
defaultAllowPrivilegeEscalation 变更性质 无意见(非变更性质)
allowPrivilegeEscalation 变更性质 & 检查性质

只有设置为 false 时才执行变更动作

Baseline:无意见

Restrictedfalse

allowedHostPaths 检查性质 无意见(volumes 优先)
allowedFlexVolumes 检查性质 无意见(volumes 优先)
allowedCSIDrivers 检查性质 无意见(volumes 优先)
allowedUnsafeSysctls 检查性质 Baseline & Restricted:未定义 / nil / 空
forbiddenSysctls 检查性质 无意见
allowedProcMountTypes
(alpha feature)
检查性质 Baseline & Restricted["Default"] 或者未定义 / nil / 空
runtimeClass
 .defaultRuntimeClassName
变更性质 无意见
runtimeClass
 .allowedRuntimeClassNames
检查性质 无意见

PodSecurityPolicy 注解

下面表格中所列举的注解可以通过 .metadata.annotations 设置到 PodSecurityPolicy 对象之上。

将 PodSecurityPolicy 注解映射到 Pod 安全性标准
PSP 注解 类型 Pod 安全性标准中对应设置
seccomp.security.alpha.kubernetes.io
/defaultProfileName
变更性质 无意见
seccomp.security.alpha.kubernetes.io
/allowedProfileNames
检查性质

Baseline"runtime/default," (其中尾部的逗号允许取消设置)

Restricted"runtime/default" (没有尾部逗号)

localhost/* 取值对于 Baseline 和 Restricted 都是可接受的

apparmor.security.beta.kubernetes.io
/defaultProfileName
变更性质 无意见
apparmor.security.beta.kubernetes.io
/allowedProfileNames
检查性质

Baseline"runtime/default," (其中尾部的逗号允许取消设置)

Restricted"runtime/default" (没有尾部逗号)

localhost/* 取值对于 Baseline 和 Restricted 都是可接受的

最后修改 July 03, 2022 at 11:25 AM PST: [zh-cn] Resync psp-to-pss page (c5f5cf73bf)