使用命名空間標籤強制執行 Pod 安全標準
可以標記命名空間以強制執行 Pod 安全標準。三種策略 privileged、baseline 和 restricted 廣泛涵蓋了安全範圍,並由 Pod 安全 許可控制器 實作。
開始之前
Pod 安全許可在 Kubernetes v1.23 中預設可用,作為 Beta 版。從 1.25 版開始,Pod 安全許可已正式發佈。
若要檢查版本,請輸入 kubectl version
。
使用命名空間標籤要求 baseline
Pod 安全標準
此 Manifest 定義了一個命名空間 my-baseline-namespace
,它
- 封鎖 任何不符合
baseline
策略需求的 Pod。 - 產生面向使用者的警告,並將稽核註解新增至任何不符合
restricted
策略需求的已建立 Pod。 - 將
baseline
和restricted
策略的版本釘選到 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 安全標準檢查仍將在模擬執行模式下執行,讓您了解新策略將如何處理現有的 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)