Pod 安全性准入

特性状态:

Kubernetes Pod 安全性标准(Security Standard) 为 Pod 定义不同的隔离级别。这些标准能够让你以一种清晰、一致的方式定义如何限制 Pod 行为。

Kubernetes 提供了一个内置的 Pod Security 来执行 Pod 安全标准 (Pod Security Standard)。 创建 Pod 时在名字空间级别应用这些 Pod 安全限制。

本页面是 Kubernetes v1.27 文档的一部分。 如果你运行的是其他版本的 Kubernetes,请查阅该版本的文档。

一旦特性被启用或者安装了 Webhook,你可以配置名字空间以定义每个名字空间中 Pod 安全性准入控制模式。 Kubernetes 定义了一组标签, 你可以设置这些标签来定义某个名字空间上要使用的预定义的 Pod 安全性标准级别。 你所选择的标签定义了检测到潜在违例时, 要采取什么样的动作。

名字空间可以配置任何一种或者所有模式,或者甚至为不同的模式设置不同的级别。

对于每种模式,决定所使用策略的标签有两个:

关于用法示例,可参阅使用名字空间标签来强制实施 Pod 安全标准

你可以为 Pod 安全性的实施设置**豁免(Exemptions)**规则, 从而允许创建一些本来会被与给定名字空间相关的策略所禁止的 Pod。 豁免规则可以在 中静态配置。

豁免规则必须显式枚举。满足豁免标准的请求会被准入控制器忽略 (所有 enforceauditwarn 行为都会被略过)。 豁免的维度包括:

  • Username: 来自用户名已被豁免的、已认证的(或伪装的)的用户的请求会被忽略。
  • RuntimeClassName: 指定了已豁免的运行时类名称的 Pod 和负载资源会被忽略。
  • Namespace: 位于被豁免的名字空间中的 Pod 和会被忽略。

注意:

大多数 Pod 是作为对工作负载资源的响应, 由控制器所创建的,这意味着为某最终用户提供豁免时,只会当该用户直接创建 Pod 时对其实施安全策略的豁免。用户创建工作负载资源时不会被豁免。 控制器服务账号(例如:) 通常不应该被豁免,因为豁免这类服务账号隐含着对所有能够创建对应工作负载资源的用户豁免。

  • 除了对 seccomp 或 AppArmor 注解之外的所有元数据(Metadata)更新操作:
    • seccomp.security.alpha.kubernetes.io/pod (已弃用)
    • container.apparmor.security.beta.kubernetes.io/*
  • .spec.activeDeadlineSeconds 的合法更新
  • 对 的合法更新

如果你正运行较老版本的 Kubernetes,想要升级到不包含 PodSecurityPolicy 的 Kubernetes 版本, 可以参阅。