使用名稱空間標籤強制執行 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` 為現有名稱空間新增標籤

在最初評估名稱空間的安全配置檔案更改時,應用 `--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)