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

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

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

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

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

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

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

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

事前準備

  1. 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

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

必要角色和權限

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

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

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

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

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

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

控制台

  1. 前往 Cloud de Confiance 控制台的「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:Cloud de Confiance 資源的類型。必須是下列其中一個值:

      • 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. 前往 Cloud de Confiance 控制台的「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:Cloud de Confiance 資源的類型。必須是下列其中一個值:

        • 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 分鐘才會全面生效。

後續步驟