您可以使用許可清單和政策,控管哪些具備權限的工作負載可在 Google Kubernetes Engine (GKE) Autopilot 模式中執行。本文說明 Autopilot 對工作負載強制執行的預設限制、可在 Autopilot 模式下執行的特殊權限工作負載類型,以及控管特殊權限工作負載准入的方法。
本文適用於下列人員:
- 平台管理員和作業人員想在 Autopilot 模式下,從各種來源執行具備權限的 GKE 工作負載。
- 身分和帳戶管理員,希望封鎖特定工作負載以外的所有具備權限的工作負載,藉此提升機構的資安態勢。
關於 Autopilot 模式中的具備特殊權限工作負載
為強化資安態勢,Autopilot 模式叢集和節點預設會強制執行特定安全性限制。舉例來說,如果 Pod 在容器中將 spec.securityContext.privileged 欄位設為 true,Autopilot 會拒絕大部分這類 Pod。Autopilot 中的特殊權限工作負載是指不符合這些預設限制的工作負載。根據預設,機構中的 Autopilot 節點會拒絕 Cloud de Confiance
具備特殊權限的工作負載。
只有在叢集具有與特定工作負載相符的允許清單時,這些工作負載才能以 Autopilot 模式執行。叢集管理員建立或修改叢集時,可以指定叢集可執行的允許清單路徑。根據預設,每個 Cloud de Confiance 組織都支援 Autopilot 合作夥伴和已驗證開放原始碼專案的許可清單。
組織管理員可以使用組織政策服務,透過下列方式修改這項預設行為:
- 允許所有來自 GKE Autopilot 合作夥伴和經過驗證的開放原始碼工作負載。這是所有Cloud de Confiance 機構的預設行為。
- 允許特定合作夥伴工作負載或經過驗證的開放原始碼工作負載。
- 只允許客戶擁有的特定特殊權限工作負載。
- 拒絕所有具特殊權限的工作負載。
這種「先拒絕所有,再允許部分」的做法是安全性最佳做法,可讓您精確控管 GKE 叢集中以進階權限執行的項目。
在下列情況下,您可能需要控管 Autopilot 模式中的特殊權限工作負載:
- 您在 Standard 叢集的 Autopilot 模式中執行工作負載,並希望在這些節點上執行具備權限的工作負載。
- 您只想允許一組特定的特殊權限工作負載在組織、資料夾或專案中執行。
享有權限的 Autopilot 工作負載來源
下表說明可在 Autopilot 中執行的特殊權限工作負載類型:
| 特殊權限工作負載類型 | |
|---|---|
| Autopilot 合作夥伴工作負載 | 部分 Cloud de Confiance 合作夥伴為 Autopilot 模式提供具備特殊權限的工作負載。GKE 會驗證這些合作夥伴工作負載。所有客戶都能使用這些工作負載。根據預設,任何客戶都可以在任何 Autopilot 或 Standard 叢集中安裝對應的許可清單。 如要進一步瞭解可用的合作夥伴工作負載,請參閱「Autopilot 合作夥伴」。 |
| 開放原始碼工作負載 | 特定特殊權限開放原始碼工作負載設有許可清單,可讓您在 Autopilot 模式下執行這些工作負載。GKE 會驗證這些工作負載。根據預設,任何客戶都可以在任何 Autopilot 或 Standard 叢集中安裝對應的許可清單。 如要進一步瞭解可用的開放原始碼工作負載,請參閱「在 GKE Autopilot 上執行具備權限的開放原始碼工作負載」。 |
| 客戶擁有的工作負載 | 如果您是符合資格的客戶,且有要在 Autopilot 節點中執行的具備特殊權限工作負載,可以為這些工作負載建立允許清單。根據預設,所有 Cloud de Confiance 組織都會停用這項功能。您可以使用組織政策服務,為特定工作負載新增許可清單路徑,然後更新叢集來安裝這些許可清單。 詳情請參閱「客戶擁有的特殊權限工作負載」一節。 |
特殊權限工作負載准入控制的運作方式
如要在 Autopilot 節點中執行特定具備權限的工作負載,請安裝與各工作負載對應的允許清單。這些許可清單是 WorkloadAllowlist Kubernetes 自訂資源。GKE 會根據叢集中的任何 WorkloadAllowlists 驗證工作負載詳細資料,且只允許詳細資料相符的工作負載。根據預設, Cloud de Confiance組織中的每個 Autopilot 或 Standard 叢集,都可讓您安裝 Autopilot 合作夥伴工作負載和開放原始碼工作負載的 WorkloadAllowlists。
大致上來說,在 Autopilot 節點中執行特殊權限工作負載,涉及下列步驟:
- 機構組織管理員會驗證「
container.managed.autopilotPrivilegedAdmission」受管理組織政策限制,是否允許從特定來源安裝許可清單。詳情請參閱「允許清單的組織政策管理限制」一節。 - 對於客戶擁有的特殊權限工作負載,平台管理員會建立與特殊權限工作負載相符的允許清單。詳情請參閱「客戶擁有的高權限工作負載」一節。
- 叢集管理員會設定 Autopilot 或 Standard 叢集,允許從特定來源安裝允許清單。詳情請參閱「叢集設定」一節。
- 叢集管理員會建立 AllowlistSynchronizer,參照許可清單的路徑。AllowlistSynchronizer 會安裝許可清單,並保持在最新狀態。詳情請參閱「許可清單安裝」一節。
完成這些步驟後,應用程式操作員就能在叢集中部署具特殊權限的工作負載。
組織政策代管限制 (允許清單)
根據預設,每個 Cloud de Confiance 機構都會強制執行以container.managed.autopilotPrivilegedAdmission
代管限制為依據的機構政策。這項限制定義了一組檔案或目錄路徑,GKE 叢集可從中安裝許可清單。叢集設定必須使用這項限制的參數中的允許清單路徑。
根據預設,autopilotPrivilegedAdmission 限制允許使用核准的 GKE 合作夥伴和開放原始碼專案擁有的所有許可清單。這項設定與 GKE 叢集的預設設定相符,可安裝任何核准的允許清單。
身為組織政策管理員,您可以修改可套用至組織、資料夾或專案中 GKE 叢集的許可清單路徑集合。舉例來說,如要允許使用貴組織擁有的自訂許可清單,請將該許可清單路徑新增至代管限制。
代管限制參數
autopilotPrivilegedAdmission 代管限制的規格如下:
spec:
rules:
- enforce: true
parameters:
allowAnyGKEPath: ALLOW_GKE_PATHS
allowPaths:
- PATH1
- PATH2
- PATH3
規格中的下列欄位可控制叢集能使用的許可清單組合:
allowAnyGKEPath:布林值,控制叢集是否能使用 GKE 核准的預設許可清單路徑。這項參數支援下列值:True:叢集管理員可以設定叢集,而不必修改許可清單設定,其中一或多個許可清單路徑開頭為gke://,或使用空字串停用叢集的所有許可清單。這個參數的預設值為True。False:叢集管理員必須為許可清單來源設定空白字串,或使用allowPaths參數中的任何許可清單路徑,設定叢集。
allowPaths:核准的許可清單來源清單,叢集管理員在設定叢集時,可以從中指定值。您可以指定特定許可清單檔案或整個目錄的路徑。
下表說明以不同方式設定這些參數的結果:
allowAnyGKEPath 值 |
allowPaths 值 |
結果 |
|---|---|---|
True |
留空或未指定。 | 叢集管理員可以在建立或修改叢集時,執行下列任一操作:
|
False |
留空或未指定。 | 叢集管理員必須為叢集許可清單設定指定空白值。如果叢集管理員略過允許清單路徑設定,叢集建立或修改作業就會失敗。 |
True |
指定值。 | 叢集管理員可以在建立或修改叢集時,執行下列任一操作:
|
False |
指定值。 | 叢集管理員必須在建立或修改叢集時,執行下列其中一項操作:
|
如要進一步瞭解如何在組織政策中控管特殊權限工作負載准入,請參閱「限制組織中的特殊權限 GKE 工作負載」。
客戶擁有的特殊權限工作負載
如果您是 GKE 客戶,可能會有自己的專門工作負載,需要比預設 Autopilot 安全性限制允許的叢集權限更多。在 GKE 1.35 以上版本中,您可以建立允許清單,將這些工作負載從預設的 Autopilot 限制中排除。
許可清單是 YAML 檔案,用於定義 WorkloadAllowlist Kubernetes 自訂資源。WorkloadAllowlist 的規格與 Kubernetes Pod 規格中的多個欄位相符。定義 WorkloadAllowlist 時,您需要將 WorkloadAllowlist 中的值與特殊權限工作負載規格中的對應欄位進行比對。YAML 檔案會儲存在 Cloud Storage bucket。
如要在叢集中安裝這些客戶擁有的許可清單,必須完成下列步驟:
- 貴機構的組織管理員會將 Cloud Storage 路徑新增至組織政策。詳情請參閱「關於組織政策管理限制」一節。
- 您需要將 Cloud Storage 路徑新增至叢集設定。詳情請參閱「叢集設定」一節。
如要進一步瞭解如何建立自己的 WorkloadAllowlists,請參閱「建立特權 Autopilot 工作負載的許可清單」。
叢集設定
如要在 Autopilot 模式中執行具備權限的工作負載,叢集管理員必須將一或多個核准的許可清單路徑新增至叢集設定。將路徑新增至叢集後,應用程式運算子即可在叢集中安裝對應的允許清單和具備特殊權限的工作負載。
根據預設,您可以從 Autopilot 合作夥伴和核准的開放原始碼專案安裝允許清單。如前一節所述,機構政策可能會變更允許清單的預設核准來源集。如果核准的許可清單路徑是由組織政策控管,您必須與組織管理員協調,找出這些路徑。接著,您可以在叢集設定中指定一或多個核准的路徑。
如要進一步瞭解如何設定叢集,請參閱「在 Autopilot 中執行具特殊權限的工作負載」。
許可清單安裝
如要在叢集中從核准來源安裝許可清單,請使用名為 AllowlistSynchronizer 的 Kubernetes 自訂資源。定義及建立 AllowlistSynchronizer 的方式,與建立其他 Kubernetes 資源 (例如 Pod 和 Deployment) 類似。每個 AllowlistSynchronizer 都有一個路徑清單,指向您要在叢集中安裝的許可清單。
建立 AllowlistSynchronizer 時,GKE 會從這些路徑安裝許可清單,並保持最新狀態。GKE 每 10 分鐘會檢查許可清單檔案的變更。如有更新,同步器會在叢集中安裝更新後的許可清單。
GKE 根據 AllowlistSynchronizer 安裝許可清單後,您就可以在叢集中建立對應的特殊權限工作負載。
如要進一步瞭解如何在叢集中安裝許可清單,請參閱「在 Autopilot 中執行具特殊權限的工作負載」。
許可清單路徑
在組織政策或叢集中設定許可清單支援時,您必須指定一或多個已核准安裝的 WorkloadAllowlist 路徑。這些路徑的語法取決於 WorkloadAllowlist 的建立者,如下所示:
特定 Autopilot 合作夥伴和核准的開放原始碼專案:
gke://REPOSITORY_PATH/SELECTOR更改下列內容:
REPOSITORY_PATH:包含工作負載許可清單的目錄路徑,例如Grafana/alloy。如要進一步瞭解這些工作負載的許可清單路徑,請參閱下列頁面:SELECTOR:特定檔案的名稱或*字元,用於選取該目錄中的所有檔案。
舉例來說,下列路徑會選取
Grafana/alloy目錄中的任何許可清單:gke://Grafana/alloy/*-
gs://DIRECTORY_PATH/SELECTOR將
DIRECTORY_PATH替換為 Cloud Storage 中包含許可清單檔案的目錄路徑。您可以指定多個路徑。
您可以在組織政策或叢集設定中,指定一或多個上述路徑。舉例來說,您可以將 GKE 合作夥伴工作負載和客戶擁有的工作負載新增至同一項設定。您也可以使用 * 字元選取所有允許清單。舉例來說,gke://* 會從任何來源選取任何 GKE 核准的許可清單。
下表說明組織政策或叢集所需的設定,以支援特定目標:
| 目標 | 組織政策設定 | 叢集設定 |
|---|---|---|
| 允許所有 GKE 核准的 WorkloadAllowlist | 請執行下列步驟:
|
執行下列其中一項動作:
|
| 僅允許 GKE 核准的特定 WorkloadAllowlist | 請執行下列步驟:
|
建立或更新叢集時,請指定特定 GKE 核准的 WorkloadAllowlists 路徑。組織政策可能會限制您可以指定的 GKE 核准路徑。 |
| 僅允許客戶自行管理的 WorkloadAllowlist | 請執行下列步驟:
|
建立或更新叢集時,請指定客戶管理的 WorkloadAllowlists 路徑。您指定的路徑必須位於組織政策的 allowPaths 參數中。 |
| 禁止使用 WorkloadAllowlists | 請執行下列步驟:
|
建立或更新叢集時,請將空白字串 "" 設為核准的路徑。 |