这篇文章已超过一年。较旧的文章可能包含过时内容。请检查页面信息自发布以来是否已失效。
Kubernetes v1.25: Pod 安全准入控制器进入稳定版
Kubernetes v1.25 的发布标志着 Kubernetes 开箱即用的 Pod 安全控制达到一个重要的里程碑:Pod Security Admission (PSA) 已升至稳定版,而 Pod Security Policy (PSP) 已被移除。PSP 在 Kubernetes v1.21 中被弃用,在 Kubernetes v1.25 及更高版本中不再起作用。
Pod Security admission controller 取代了 PodSecurityPolicy,通过简单地为命名空间添加标签,可以更容易地强制执行预定义的Pod 安全标准。Pod 安全标准由 K8s 社区维护,这意味着每当引入新的影响安全的 Kubernetes 功能时,您都会自动获得更新的安全策略。
自 Beta 版本以来有哪些新变化?
Pod Security Admission 自 Kubernetes v1.23 的 Beta 版本以来变化不大。重点一直在改进用户体验,同时继续保持高品质标准。
改进的违规消息
我们改进了违规消息,以便您获得更少的重复消息。例如,当 Baseline 和 Restricted 策略检查同一能力时,您不会再收到以下消息
pods "admin-pod" is forbidden: violates PodSecurity "restricted:latest": non-default capabilities (container "admin" must not include "SYS_ADMIN" in securityContext.capabilities.add), unrestricted capabilities (container "admin" must not include "SYS_ADMIN" in securityContext.capabilities.add)
您会收到此消息
pods "admin-pod" is forbidden: violates PodSecurity "restricted:latest": unrestricted capabilities (container "admin" must not include "SYS_ADMIN" in securityContext.capabilities.add)
改进的命名空间警告
当您修改命名空间上的 enforce
Pod Security 标签时,Pod Security admission controller 会检查所有现有 Pod 是否违规,并在发现不合规时发出警告。现在,对于具有相同违规的 Pod,这些警告已进行聚合,这使得包含许多副本的大型命名空间更容易管理。例如
Warning: frontend-h23gf2: allowPrivilegeEscalation != false
Warning: myjob-g342hj (and 6 other pods): host namespaces, allowPrivilegeEscalation != false Warning: backend-j23h42 (and 1 other pod): non-default capabilities, unrestricted capabilities
此外,当您为已配置为豁免的命名空间应用非特权标签时,您现在会收到一个警告,提醒您这一事实
Warning: namespace 'kube-system' is exempt from Pod Security, and the policy (enforce=baseline:latest) will be ignored
Pod 安全标准的变更
Pod Security admission 所强制执行的Pod 安全标准已更新,支持新的 Pod OS 字段。在 v1.25 及更高版本中,如果您使用 Restricted 策略,当您明确将 Pod 的 .spec.os.name
字段设置为 windows
时,将不再需要以下 Linux 特定限制:
- Seccomp - Pod 和容器安全上下文的
seccompProfile.type
字段 - 特权升级 - 容器安全上下文的
allowPrivilegeEscalation
字段 - Capabilities - 要求在容器的
capabilities
字段中丢弃所有 (ALL
) capabilities
在 Kubernetes v1.23 及更早版本中,kubelet 不会强制执行 Pod OS 字段。如果您的集群包含运行 v1.23 或更早版本 kubelet 的节点,您应明确将Restricted 策略固定到 v1.25 之前的版本。
从 PodSecurityPolicy 迁移到 Pod Security admission controller
有关从 PodSecurityPolicy 迁移到 Pod Security admission controller 的说明以及选择迁移策略的帮助,请参阅迁移指南。我们还在开发一个名为 pspmigrator 的工具来自动化部分迁移过程。
我们将在即将到来的 KubeCon 2022 北美会议演讲 从 Pod Security Policy 迁移中更详细地讨论 PSP 迁移。使用KubeCon 北美日程表了解更多信息。