使用命名空間標籤強制執行 Pod 安全標準

可以標記命名空間以強制執行 Pod 安全標準。三種策略 privilegedbaselinerestricted 廣泛涵蓋了安全範圍,並由 Pod 安全 許可控制器 實作。

開始之前

Pod 安全許可在 Kubernetes v1.23 中預設可用,作為 Beta 版。從 1.25 版開始,Pod 安全許可已正式發佈。

若要檢查版本,請輸入 kubectl version

使用命名空間標籤要求 baseline Pod 安全標準

此 Manifest 定義了一個命名空間 my-baseline-namespace,它

  • 封鎖 任何不符合 baseline 策略需求的 Pod。
  • 產生面向使用者的警告,並將稽核註解新增至任何不符合 restricted 策略需求的已建立 Pod。
  • baselinerestricted 策略的版本釘選到 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 將標籤新增至現有的命名空間

在最初評估命名空間的安全設定檔變更時,套用 --dry-run 標誌會很有幫助。Pod 安全標準檢查仍將在模擬執行模式下執行,讓您了解新策略將如何處理現有的 Pod,而無需實際更新策略。

kubectl label --dry-run=server --overwrite ns --all \
    pod-security.kubernetes.io/enforce=baseline

套用至所有命名空間

如果您剛開始使用 Pod 安全標準,一個合適的第一步是使用稽核註解為所有命名空間設定更嚴格的層級,例如 baseline

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,並將 restricted 策略版本釘選到 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)