使用名稱空間標籤強制執行 Pod 安全標準
可以為名稱空間新增標籤以強制執行 Pod 安全標準。三個策略:特權、基線 和 受限,廣泛涵蓋了安全範圍,並由 Pod Security 准入控制器 實現。
準備工作
Pod 安全准入功能從 Kubernetes v1.23 開始預設可用,處於 Beta 階段。從 v1.25 版本開始,Pod 安全准入功能已正式釋出。
要檢查版本,請輸入 kubectl version
。
使用名稱空間標籤強制執行 baseline
Pod 安全標準
此清單定義了一個名稱空間 my-baseline-namespace
,它將:
- **阻止**任何不滿足 `baseline` 策略要求的 Pod。
- 為任何不滿足 `restricted` 策略要求的已建立 Pod 生成面向使用者的警告並新增審計註解。
- 將 `baseline` 和 `restricted` 策略的版本固定為 v1.34。
apiVersion: v1
kind: Namespace
metadata:
name: my-baseline-namespace
labels:
pod-security.kubernetes.io/enforce: baseline
pod-security.kubernetes.io/enforce-version: v1.34
# We are setting these to our _desired_ `enforce` level.
pod-security.kubernetes.io/audit: restricted
pod-security.kubernetes.io/audit-version: v1.34
pod-security.kubernetes.io/warn: restricted
pod-security.kubernetes.io/warn-version: v1.34
使用 `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`,並將受限策略版本固定到 v1.34。
kubectl label --overwrite ns my-existing-namespace \
pod-security.kubernetes.io/enforce=restricted \
pod-security.kubernetes.io/enforce-version=v1.34
最後修改時間:2022 年 11 月 5 日,下午 6:40 PST:更新文件以移除 PodSecurityPolicy (bb85d62752)