關於 Autopilot 模式中的具備特殊權限工作負載許可

您可以使用允許清單和政策,控管哪些具備權限的工作負載可在 Google Kubernetes Engine (GKE) Autopilot 模式中執行。本文說明 Autopilot 對工作負載強制執行的預設限制、您可以在 Autopilot 模式中執行的特殊權限工作負載類型,以及控管特殊權限工作負載許可的方法。

本文件適用於下列對象:

  • 平台管理員和作業人員想在 Autopilot 模式下,從各種來源執行具備權限的 GKE 工作負載。
  • 身分和帳戶管理員,希望封鎖特定工作負載以外的所有具備權限的工作負載,藉此提升機構的安全防護機制。

關於 Autopilot 模式下的具備權限工作負載

為提升安全防護機制,Autopilot 模式叢集和節點預設會強制執行特定安全性限制。舉例來說,如果 Pod 在容器中將 spec.securityContext.privileged 欄位設為 true,Autopilot 會拒絕大部分的這類 Pod。Autopilot 中的具備特殊權限的工作負載是指不符合這些預設限制的工作負載。根據預設,機構中的 Autopilot 節點會拒絕具備特殊權限的工作負載。 Google Cloud

只有當叢集具有與特定特殊權限工作負載相符的允許清單時,這些工作負載才能在 Autopilot 模式下執行。叢集管理員建立或修改叢集時,可以指定叢集可執行的允許清單路徑。根據預設,每個 Google Cloud 機構都支援 Autopilot 合作夥伴和經過驗證的開放原始碼專案的許可清單。

機構管理員可以使用機構政策服務,透過下列方式修改這項預設行為:

  • 允許來自 GKE Autopilot 合作夥伴和經過驗證的開放原始碼工作負載的所有工作負載。這是所有Google Cloud 機構的預設行為。
  • 允許特定合作夥伴工作負載或經過驗證的開放原始碼工作負載。
  • 只允許特定客戶擁有的高權限工作負載。
  • 拒絕所有具備權限的工作負載。

這種「一律拒絕,然後允許部分項目」的做法是安全性最佳做法,可讓您精確控管 GKE 叢集中以提升權限執行的項目。

在下列情況中,您可能需要控管 Autopilot 模式下的具備特殊權限工作負載:

享有特殊權限的 Autopilot 工作負載來源

下表說明可在 Autopilot 中執行的特殊權限工作負載類型:

享有權限的工作負載類型
Autopilot 合作夥伴工作負載

部分 Google Cloud 合作夥伴會為 Autopilot 模式提供具備特殊權限的工作負載。GKE 會驗證這些合作夥伴工作負載。所有客戶都能使用這些工作負載。根據預設,任何客戶都可以在任何 Autopilot 或 Standard 叢集中安裝對應的許可清單。

如要進一步瞭解可用的合作夥伴工作負載,請參閱「Autopilot 合作夥伴」。

開放原始碼工作負載

特定具備特殊權限的開放原始碼工作負載有允許清單,可讓您在 Autopilot 模式中執行這些工作負載。GKE 會驗證這些工作負載。根據預設,任何客戶都可以在任何 Autopilot 或 Standard 叢集中安裝對應的允許清單。

如要進一步瞭解可用的開放原始碼工作負載,請參閱「在 GKE Autopilot 上執行具備權限的開放原始碼工作負載」。

客戶擁有的工作負載

如果您是符合資格的客戶,且有要在 Autopilot 節點中執行的具備特殊權限工作負載,可以為這些工作負載建立允許清單。根據預設,系統會為所有 Google Cloud 機構停用這項功能。您可以使用 Organization Policy Service,為特定工作負載新增許可清單路徑,然後更新叢集以安裝這些許可清單。

詳情請參閱「客戶擁有的高權限工作負載」一節。

具備特殊權限的工作負載准入控管機制運作方式

如要允許特定具備權限的工作負載在 Autopilot 節點中執行,請安裝與各工作負載對應的允許清單。這些許可清單是 WorkloadAllowlist Kubernetes 自訂資源。GKE 會根據叢集中的任何 WorkloadAllowlists 驗證工作負載詳細資料,且只允許詳細資料相符的工作負載。根據預設,機構中的每個 Autopilot 或 Standard 叢集都允許您安裝 Autopilot 合作夥伴工作負載和開放原始碼工作負載的 WorkloadAllowlists。 Google Cloud

大致來說,在 Autopilot 節點中執行具備權限的工作負載,需要執行下列步驟:

  1. 機構管理員會確認container.managed.autopilotPrivilegedAdmission受管理的機構政策限制,是否允許從特定來源安裝允許清單。詳情請參閱「允許清單的組織政策管理限制」一節。
  2. 對於客戶擁有的特殊權限工作負載,平台管理員會建立與特殊權限工作負載相符的允許清單。詳情請參閱「客戶擁有的高權限工作負載」一節。
  3. 叢集管理員會設定 Autopilot 或 Standard 叢集,允許從特定來源安裝允許清單。詳情請參閱「叢集設定」一節。
  4. 叢集管理員會建立 AllowlistSynchronizer,參照許可清單的路徑。AllowlistSynchronizer 會安裝許可清單,並確保清單保持在最新狀態。詳情請參閱「允許清單安裝」一節。

完成這些步驟後,應用程式運算子就能在叢集中部署具備特殊權限的工作負載。

允許清單的機構政策管理限制

根據預設,每個 Google Cloud 機構都會強制執行以container.managed.autopilotPrivilegedAdmission 受管理限制為依據的機構政策。

這項受管理限制具有下列參數:

  • allowAnyGKEPath:布林值,叢集管理員可藉此設定叢集,允許從具有 gke:// 前置字元的路徑安裝允許清單。支援的值如下:

    • true:叢集管理員可使用 GKE 預設允許清單來源、以 gke:// 開頭的任何允許清單路徑,或空字串 (可防止所有允許清單) 設定叢集。這是 allowAnyGKEPath 參數的預設值。
    • false:要求叢集管理員使用空白字串設定叢集,做為允許清單來源,或使用 allowPaths 參數中的任何允許清單路徑。
  • allowPaths:核准的許可清單來源清單,叢集管理員可在設定叢集時指定清單中的值。

機構管理員可以更新這項政策的參數,控管哪些具備權限的工作負載可在機構中執行。 Google Cloud舉例來說,下列機構政策設定可讓叢集管理員僅為特定合作夥伴工作負載安裝允許清單: Google Cloud

name: organizations/ORGANIZATION_ID/policies/container.managed.autopilotPrivilegedAdmission
spec:
  rules:
  - enforce: true
    parameters:
      allowAnyGKEPath: ALLOW_GKE_PATHS
      allowPaths:
      - PATH1
      - PATH2
      - PATH3

更改下列內容:

  • ALLOW_GKE_PATHS:是否允許任何 GKE 核准的許可清單。請指定下列其中一個值:

    • True:允許使用任何 GKE 合作夥伴工作負載或經過驗證的開放原始碼工作負載設定叢集。這是預設值。
    • False:只允許使用 allowPaths 欄位中的路徑設定叢集。
  • PATH1, PATH2, ...: 叢集管理員設定叢集時可使用的核准許可清單來源路徑清單。這項參數預設為空白。如果您為這個參數指定路徑,叢集管理員在建立或更新叢集時,必須指定零或多個路徑。

如要進一步瞭解如何在組織政策中控管具備特殊權限的工作負載准入情形,請參閱「在組織中限制具備特殊權限的 GKE 工作負載」。

客戶擁有的特殊權限工作負載

如果您是 GKE 客戶,可能會有自己的專門工作負載,需要比預設 Autopilot 安全性限制允許的叢集權限更多。在 GKE 1.35 以上版本中,您可以建立允許清單,將這些工作負載從預設的 Autopilot 限制中排除。

允許清單是 YAML 檔案,用於定義 WorkloadAllowlist Kubernetes 自訂資源。WorkloadAllowlist 的規格與 Kubernetes Pod 規格中的各種欄位相符。定義 WorkloadAllowlist 時,請將 WorkloadAllowlist 中的值與具備權限工作負載規格中的對應欄位進行比對。您將 YAML 檔案儲存在 Cloud Storage 值區中。

如要在叢集中安裝這些客戶擁有的許可清單,必須執行下列步驟:

  1. 貴機構的管理員會將 Cloud Storage 路徑新增至機構政策。詳情請參閱「關於組織政策管理限制」一節。
  2. 將 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
    

    更改下列內容:

    舉例來說,下列路徑會選取 Grafana/alloy 目錄中的任何允許清單:

    gke://Grafana/alloy/*
    
  • 客戶擁有的高權限工作負載

    gs://DIRECTORY_PATH/SELECTOR
    

    請將 DIRECTORY_PATH 改成 Cloud Storage 中包含允許清單檔案的目錄路徑。您可以指定多個路徑。

您可以在機構政策或叢集設定中,指定一或多個上述路徑。舉例來說,您可以將 GKE 合作夥伴工作負載和客戶自有工作負載新增至相同設定。您也可以使用 * 字元選取所有允許清單。舉例來說,gke://* 會從任何來源選取任何 GKE 核准的許可清單。

下表說明在機構政策或叢集中,支援特定目標所需的設定:

目標 機構政策設定 叢集設定
允許所有 GKE 核准的工作負載允許清單 請執行下列動作:
  1. allowAnyGKEPath 參數設為 True 的預設值。
  2. allowPaths 參數留空。
執行下列其中一項動作:
  • 請勿為叢集設定允許清單。根據預設,所有叢集都允許安裝 GKE 核准的 WorkloadAllowlists。
  • 為叢集設定允許清單時,請只指定 gke://* 做為核准路徑。
只允許特定 GKE 核准的工作負載允許清單 請執行下列步驟:
  1. allowAnyGKEPath 參數設為 False
  2. allowPaths 參數中,指定 GKE 核准的特定 WorkloadAllowlist 路徑。
建立或更新叢集時,請指定 GKE 核准的特定 WorkloadAllowlists 路徑。機構政策可能會限制可指定的 GKE 核准路徑。
僅允許客戶管理的 WorkloadAllowlists 請執行下列步驟:
  1. allowAnyGKEPath 參數設為 False
  2. allowPaths 參數中,指定客戶管理的 WorkloadAllowlists 路徑。
建立或更新叢集時,請指定客戶管理的 WorkloadAllowlists 路徑。您指定的路徑必須位於組織政策的 allowPaths 參數中。
禁止使用 WorkloadAllowlists 請執行下列步驟:
  1. allowAnyGKEPath 參數設為 False
  2. allowPaths 參數留空。
建立或更新叢集時,請將核准路徑設為空字串 ""

後續步驟