在機構中限制具備特殊權限的 GKE 工作負載

您可以透過政策,控管哪些具備特殊權限的工作負載可在 Google Cloud 機構的 Google Kubernetes Engine (GKE) 叢集中執行。本文說明如何使用政策定義核准的工作負載來源,以及如何強制執行最佳做法,提升安全防護機制。

本文適用於身分和帳戶管理員,協助他們只允許已核准的具備權限工作負載在機構的任何位置執行。您應該已熟悉下列頁面中的概念:

機構的具備權限工作負載許可控制機制運作方式

根據預設,GKE Autopilot 會對工作負載強制執行一組安全措施。如要執行違反這些限制的工作負載,唯一方法是為這些工作負載安裝允許清單。如要從特定來源安裝許可清單,必須將叢集設定為允許該來源的許可清單。

根據預設, Google Cloud 機構可讓平台管理員設定叢集,允許來自 GKE 合作夥伴已驗證的開放原始碼專案的允許清單。如果貴機構有安全規定,要將具備高權限的工作負載限制在明確已知的來源集,您可以使用組織政策修改預設行為。

為機構、資料夾或專案強制執行核准的許可清單來源時,平台管理員建立或更新 Autopilot 或標準叢集時,只能指定這些來源。如果建立或更新叢集時指定未獲核准的來源,作業就會失敗。

您應設定的組織政策取決於用途,如下所示:

事前準備

  1. 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
  2. Enable the Resource Manager API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  3. Enable the Resource Manager API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  4. 如果團隊擁有特權工作負載的許可清單,請要求他們提供 Cloud Storage 中這些許可清單的路徑。

必要角色和權限

如要取得管理組織政策所需的權限,請要求系統管理員授予您組織、資料夾或專案的組織政策管理員 (roles/orgpolicy.policyAdmin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

設定機構政策,以允許使用許可清單

您可以根據constraints/container.managed.autopilotPrivilegedAdmission受管理限制,建立或更新機構政策,控管機構、資料夾或專案的許可清單核准來源。強制執行這項機構政策後,叢集管理員只能從您在政策中定義的來源安裝允許清單。

除了上述步驟,我們也建議您強制執行機構政策,只允許 Autopilot 叢集在環境中執行。如果環境中沒有標準叢集,只有您核准的具備特殊權限工作負載可以執行。詳情請參閱「設定組織政策,只允許 Autopilot 叢集」一節。

如要為核准的具備特殊權限工作負載許可清單設定機構政策,請選取下列其中一個選項:

控制台

  1. 前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面:

    前往「Organization policies」(組織政策)

  2. 在限制條件表格中,找出container.managed.autopilotPrivilegedAdmission受管理限制。

  3. 依序點選 「動作」>「編輯政策」。「編輯政策」頁面隨即開啟。

  4. 在「政策來源」部分,選取「覆寫上層政策」

  5. 在「規則」部分,按一下「新增規則」

  6. 在「強制執行」部分中,選取「開啟」。「參數」部分隨即顯示。

  7. 如要控管是否可安裝 GKE 核准的許可清單,請按照下列步驟操作:

    1. allowAnyGKEPath 參數中,按一下「Edit」(編輯) 。「編輯參數值」窗格隨即開啟。
    2. 在「值類型」部分中,選取「使用者定義」
    3. 在「使用者定義值」部分,選取下列其中一個選項:

      • True:管理員可以設定叢集,從以 gke:// 開頭的任何路徑執行允許清單。這是預設值。
      • 錯誤:管理員可以設定叢集,只允許從您在機構政策的 allowPaths 參數中指定的路徑執行允許清單。如未在 allowPaths 參數中指定路徑,叢集就無法從任何來源執行任何允許清單。
    4. 按一下 [儲存]。「編輯參數值」窗格會關閉。

  8. 如要定義可安裝的特定許可清單,請按照下列步驟操作:

    1. allowPaths 參數中,按一下「編輯」。「編輯參數值」窗格隨即開啟。
    2. 在「值類型」部分中,選取「使用者定義」
    3. 在「使用者定義的值」部分,指定一或多個允許清單來源的路徑。如要進一步瞭解可指定哪些項目,請參閱「允許路徑清單」。
    4. 按一下 [儲存]。「編輯參數值」窗格會關閉。
    5. 在「編輯規則」部分中,按一下「完成」
  9. 選用:如要測試強制執行組織政策的影響,請按一下「測試變更」。詳情請參閱「使用 Policy Simulator 測試組織政策變更」。

  10. 如要在模擬測試模式下強制執行政策,請按一下「設定模擬測試政策」

  11. 確認組織政策在模擬執行模式中運作正常後,請按一下「設定政策」,設定正式政策。

組織政策變更最多可能需要 15 分鐘才會全面生效。

gcloud

  1. 建立定義機構政策的 YAML 檔案:

    name: RESOURCE_TYPE/RESOURCE_ID/policies/container.managed.autopilotPrivilegedAdmission
    spec:
      rules:
      - enforce: true
        parameters:
          allowAnyGKEPath: ALLOW_GKE_PATHS
          allowPaths:
          - ALLOWLIST1_PATH
          - ALLOWLIST2_PATH
    

    更改下列內容:

    • RESOURCE_TYPE:Google Cloud 資源的類型。必須是下列其中一個值:

      • organizations
      • folders
      • projects
    • RESOURCE_ID:組織 ID、資料夾 ID 或專案 ID。

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

      • True:允許使用任何 GKE 合作夥伴工作負載或經過驗證的開放原始碼工作負載設定叢集。這是預設值。
      • False:只允許使用 allowPaths 欄位中的路徑設定叢集。

    • ALLOWLIST1_PATHALLOWLIST2_PATH: 許可清單的路徑。如要進一步瞭解可指定哪些項目,請參閱「允許路徑清單」。

    選用:如要根據標記設定組織政策的條件,請在 rules 欄位中新增 condition 區塊。如果為組織政策新增條件式規則,您必須至少新增一項無條件規則,否則無法儲存政策。詳情請參閱「使用標記設定組織政策」。

  2. 如要以模擬測試模式設定機構政策,請在 gcloud org-policies set-policy 指令中,為 --update-mask dryRunSpec 旗標指定值:

    gcloud org-policies set-policy POLICY_FILEPATH \
        --update-mask=dryRunSpec
    

    POLICY_FILEPATH 替換為上一步建立的 YAML 檔案路徑。

  3. 選用:如要測試強制執行這項組織政策的影響,請使用 gcloud policy-intelligence simulate org-policy 指令:

    gcloud policy-intelligence simulate org-policy \
        --organization=ORGANIZATION_ID \
        --policy-path=POLICY_FILEPATH
    

    請將 ORGANIZATION_ID 替換成組織 ID。

  4. 確認機構政策在模擬執行模式中運作正常後,請在 gcloud org-policies set-policy 指令中,為 --update-mask 標記指定 spec 值,設定即時政策:

    gcloud org-policies set-policy POLICY_FILEPATH \
        --update-mask=spec
    

    組織政策變更最多可能需要 15 分鐘才會全面生效。

設定機構政策,僅允許 Autopilot 叢集

本節說明如何設定機構政策,只允許使用 Autopilot 叢集。除了建立許可清單的組織政策,我們也建議您設定這項政策,因為標準叢集可以執行大多數具備權限的工作負載。只允許 Autopilot 叢集,表示環境只會執行您允許的具備特殊權限工作負載。本節中的步驟為選用。

如要設定這項政策,請選取下列任一選項:

控制台

  1. 建立自訂限制,只允許建立 Autopilot 叢集:

    1. 前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面:

      前往「Organization policies」(組織政策)

    2. 按一下「自訂限制」,「建立自訂限制」頁面隨即開啟。

    3. 指定限制的顯示名稱和專屬 ID。

    4. 在「強制執行」部分,按照下列步驟操作:

      1. 在「Resource type」(資源類型) 清單中,選取 container.googleapis.com/Cluster
      2. 在「Enforcement method」(強制執行方式) 清單中,選取「Enforcement on create」(在建立時強制執行)
      3. 在「條件」部分,按一下 「編輯條件」。「新增條件」窗格隨即開啟。
      4. 指定下列運算式:

        resource.autopilot.enabled == true
        
      5. 按一下 [儲存]。「新增條件」窗格隨即會關閉。

      6. 在「動作」部分選取「允許」

    5. 按一下「建立限制」

  2. 建立自訂組織政策,強制執行限制:

    1. 在限制條件表格中,找出您在上一個步驟中建立的自訂限制條件。
    2. 依序點選 「動作」>「編輯政策」。「編輯政策」頁面隨即開啟。
    3. 在「政策來源」部分,選取「覆寫上層政策」
    4. 點選「新增規則」
    5. 在「強制執行」部分中,選取「開啟」
    6. 如要測試強制執行機構政策的影響,請按一下「測試變更」。詳情請參閱「使用 Policy Simulator 測試組織政策變更」。
    7. 如要在模擬測試模式下強制執行政策,請按一下「設定模擬測試政策」
    8. 確認組織政策在模擬執行模式中運作正常後,請按一下「設定政策」,設定正式政策。

    組織政策變更最多可能需要 15 分鐘才會全面生效。

gcloud

  1. 建立自訂限制,只允許建立 Autopilot 叢集:

    1. 建立定義自訂限制的 YAML 檔案:

      name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
      resourceTypes: container.googleapis.com/Cluster
      methodTypes:
      - CREATE
      condition: resource.autopilot.enabled == true
      actionType: ALLOW
      displayName: "Allow only Autopilot clusters"
      

      更改下列內容:

      • ORGANIZATION_ID:您的機構 ID。
      • CONSTRAINT_NAME:新限制的名稱。
    2. 設定自訂限制:

      gcloud org-policies set-custom-constraint CONSTRAINT_FILEPATH
      

      CONSTRAINT_FILEPATH 替換為您在上一步建立的 YAML 檔案路徑。

    自訂限制可在機構政策中使用。

  2. 建立自訂組織政策,強制執行限制:

    1. 建立定義機構政策的 YAML 檔案:

      name: RESOURCE_TYPE/RESOURCE_ID/policies/custom.CONSTRAINT_NAME
      spec:
        rules:
        - enforce: true
      

      更改下列內容:

      • RESOURCE_TYPE:Google Cloud 資源的類型。必須是下列其中一個值:

        • organizations
        • folders
        • projects
      • RESOURCE_ID:機構、資料夾或專案的 ID。

      選用:如要根據標記設定組織政策的條件,請在 rules 欄位中新增 condition 區塊。如果為組織政策新增條件式規則,您必須至少新增一項無條件規則,否則無法儲存政策。詳情請參閱「使用標記設定組織政策」。

    2. 如要以模擬測試模式設定機構政策,請在 gcloud org-policies set-policy 指令中,為 --update-mask dryRunSpec 旗標指定值:

      gcloud org-policies set-policy POLICY_FILEPATH \
          --update-mask=dryRunSpec
      

      POLICY_FILEPATH 替換為您在上一步建立的 YAML 檔案路徑。

    3. 如要測試強制執行這項組織政策的影響,請使用 gcloud policy-intelligence simulate org-policy 指令:

      gcloud policy-intelligence simulate org-policy \
          --organization=ORGANIZATION_ID \
          --policy-path=POLICY_FILEPATH
      

      請將 ORGANIZATION_ID 替換成組織 ID。

    4. 確認機構政策在模擬測試模式中運作正常後,請在 gcloud org-policies set-policy 指令中為 --update-mask 旗標指定 spec 值,設定正式政策:

      gcloud org-policies set-policy POLICY_FILEPATH \
          --update-mask=spec
      

      組織政策變更最多可能需要 15 分鐘才會全面生效。

後續步驟