Tanzu Kubernetes 版本 v1.25 及更新版本支援網繭安全性許可控制器。網繭安全性原則許可控制器已棄用並移除。

必要條件:TKR 1.25 及更新版本

本主題的內容適用於 主管 上佈建了 TKR v1.25 及更新版本的 TKG 叢集。依預設,這些 Tanzu Kubernetes 版本 啟用網繭安全性許可控制器。

網繭安全性許可控制器的前身是網繭安全性原則許可控制器。主管 上佈建了 TKR v1.24 及更早版本的 TKG 叢集啟用網繭安全性原則許可控制器。請參閱為 TKR 1.24 及更早版本設定網繭安全性

網繭安全性許可控制器

網繭安全性許可控制器是一個 Kubernetes 控制器,用於將網繭安全性標準套用至 TKG 叢集上執行的網繭。網繭安全性許可控制器在 Kubernetes 命名空間層級強制執行網繭安全性。您可以套用網繭安全性許可標籤,以定義要用於每個命名空間中網繭安全性的許可控制模式。

下表列出了網繭安全性許可控制器支援的三種許可控制模式。
模式 說明
強制執行 原則違規將導致網繭遭到拒絕。
稽核 原則違規將觸發向稽核記錄中記錄的事件新增稽核註解,但允許強制執行原則。
警告 原則違規將觸發面向使用者的警告,但允許強制執行原則。

網繭安全性標準

網繭安全性標準定義了涵蓋安全範圍的三個不同層級。這些標準是累積的,範圍從允許到限制。下表列出並說明每個標準。
表 1. 網繭安全性標準
層級 說明
有權限 無限制原則,提供盡可能最廣泛的權限層級。此原則允許已知的權限提升。
基準 限制性最低的原則,可阻止已知的權限提升。允許預設 (最小指定) 網繭組態。
受限制 嚴格限制的原則,遵循目前的網繭強化最佳做法。

網繭安全性標籤

Kubernetes 提供了一組標籤,可用於定義要用於命名空間的標準。您套用的標籤會定義在偵測到潛在違規時控制平面採取的動作。對於指定的命名空間,您可以設定任何或所有模式,或為不同的模式設定不同的層級。

標準標籤語法如下所示:
# MODE must be one of `enforce`, `audit`, or `warn`.
# LEVEL must be one of `privileged`, `baseline`, or `restricted`.
pod-security.kubernetes.io/<MODE>=<LEVEL>

您還可以套用按模式版本標籤,該標籤可用於將原則釘選到指定 Kubernetes 次要版本隨附的版本。如需詳細資訊,請參閱 Kubernetes 說明文件中的〈使用命名空間標籤強制執行網繭安全性標準〉

為 TKG 叢集強制執行網繭安全性

從 TKR 1.25 開始,網繭安全性許可 (PSA) 控制器將取代網繭安全性原則 (PSP)。透過 TKR 1.25,主管上的 TKG 支援使用網繭安全性許可 (PSA) 控制器套用特殊權限、基準和受限制類型的網繭安全標準。如需詳細資料,請參閱版本說明

依預設,對於使用 TKR 1.25 建立的 主管 上的 TKG 叢集,所有命名空間的「警告」和「稽核」網繭安全性模式均設定為「受限制」。這是不強制設定:PSA 控制器可能會產生有關網繭違反原則的警告,但網繭將繼續執行。kube-system、tkg-system 和 vmware-system-cloud-provider 中執行的某些系統網繭需要提升權限。這些命名空間已從網繭安全性中排除。

對於 TKR 1.26,主管 上的 TKG 將預設對工作負載叢集強制執行受限制的 PSA。如需詳細資料,請參閱版本說明。TKR 1.25 使用者應計劃將其 TKG 叢集工作負載移轉至 PSA,以便將 TKG 叢集升級到 TKR 1.26。如需相關指引,請參閱 Kubernetes 說明文件中的〈從 PodSecurityPolicy 移轉至內建 PodSecurity 許可控制器〉

下表列出了 主管 上 TKG 的 PSA 組態:
TKR 版本 預設 PSA
TKR 1.25.7

警告模式: 受限制

稽核模式: 受限制

強制執行模式: 未設定

TKR 1.26 及更新版本

強制執行模式: 受限制

對於使用 TKR 1.25 建置的 TKG 叢集,可以使用以下範例命令更新 Kubernetes 命名空間上的 PSA:
kubectl label --overwrite ns NAMESPACE pod-security.kubernetes.io/audit=privileged 
kubectl label --overwrite ns NAMESPACE pod-security.kubernetes.io/warn=privileged
對於使用 TKR 1.26 及更高版本建置的 TKG 叢集,可以使用以下範例命令跨所有 Kubernetes 命名空間更新 PSA:
kubectl label --overwrite ns NAMESPACE pod-security.kubernetes.io/enforce=privileged
kubectl label --overwrite ns --all pod-security.kubernetes.io/enforce=privileged
kubectl label --overwrite ns --all pod-security.kubernetes.io/warn=restricted