使用命名空间标签强制执行 Pod 安全标准
命名空间可以被标记以强制执行Pod 安全标准。 三个策略特权、基线和受限广泛涵盖了安全范围,并由Pod 安全准入控制器实现。
开始之前
Pod 安全准入在 Kubernetes v1.23 中默认可用,作为 Beta 版本。从 1.25 版本开始,Pod 安全准入正式可用。
要检查版本,请输入kubectl version
。
通过命名空间标签要求基线
Pod 安全标准
此清单定义了一个命名空间my-baseline-namespace
,它
- 阻止任何不满足
基线
策略要求的 Pod。 - 生成面向用户的警告,并向任何不符合
受限
策略要求的已创建 Pod 添加审计注释。 - 将
基线
和受限
策略的版本固定到 v1.32。
apiVersion: v1
kind: Namespace
metadata:
name: my-baseline-namespace
labels:
pod-security.kubernetes.io/enforce: baseline
pod-security.kubernetes.io/enforce-version: v1.32
# We are setting these to our _desired_ `enforce` level.
pod-security.kubernetes.io/audit: restricted
pod-security.kubernetes.io/audit-version: v1.32
pod-security.kubernetes.io/warn: restricted
pod-security.kubernetes.io/warn-version: v1.32
使用kubectl label
向现有命名空间添加标签
注意
当添加或更改enforce
策略(或版本)标签时,准入插件将针对新策略测试命名空间中的每个 Pod。违规行为将作为警告返回给用户。最初评估命名空间的安全配置文件更改时,应用--dry-run
标志很有帮助。Pod 安全标准检查仍将在dry run模式下运行,为您提供有关新策略将如何处理现有 Pod 的信息,而无需实际更新策略。
kubectl label --dry-run=server --overwrite ns --all \
pod-security.kubernetes.io/enforce=baseline
应用于所有命名空间
如果您刚开始使用 Pod 安全标准,那么一个合适的初始步骤是为所有命名空间配置更严格级别的审计注释,例如基线
kubectl label --overwrite ns --all \
pod-security.kubernetes.io/audit=baseline \
pod-security.kubernetes.io/warn=baseline
请注意,这并未设置强制级别,因此可以区分尚未明确评估的命名空间。您可以使用以下命令列出没有明确设置强制级别的命名空间
kubectl get namespaces --selector='!pod-security.kubernetes.io/enforce'
应用于单个命名空间
您也可以更新特定的命名空间。此命令将enforce=restricted
策略添加到my-existing-namespace
,并将受限策略版本固定到 v1.32。
kubectl label --overwrite ns my-existing-namespace \
pod-security.kubernetes.io/enforce=restricted \
pod-security.kubernetes.io/enforce-version=v1.32
上次修改时间:2022 年 11 月 05 日下午 6:40 PST:更新 PodSecurityPolicy 删除的文档 (bb85d62752)