在各機構的每個 GKE 節點上執行 VM 代理程式


本頁說明如何使用 Organization Policy Service,確保機構、資料夾或專案中的所有 Compute Engine 執行個體 (包括 Google Kubernetes Engine VM) 都已啟用 VM 管理工具。

本指南適用於安全團隊,確保所有必要程式 (例如安全和監控代理程式) 在機構、資料夾或專案中的所有執行個體上執行。如要僅透過機構政策強制執行設定,請參閱本指南。如要採用「設定即程式碼」方法,請使用 Config Sync。Config Sync 可讓您設定及控管叢集的許多層面,並提供機構政策以外的價值。

閱讀本頁面之前,請先熟悉 VM ManagerResource Manager 限制

本指南說明如何在機構或資料夾的所有專案中,強制使用 VM 管理員。本指南不會說明如何使用 OS 原則設定及使用 VM 管理工具。如需相關操作說明,請參閱「建立 OS 政策指派作業」。

關於 VM 管理員

VM 管理員是一套工具,可用來管理在 Compute Engine 上執行 Windows 和 Linux 的大型虛擬機器 (VM) 機群作業系統。您可以使用 VM 管理工具套用作業系統政策,自訂 VM 上執行的程式。舉例來說,您可以定義在資源上安裝代理程式的政策,並在多個資源中重複使用該政策。根據預設,VM 管理員會在Google Cloud 專案中停用。

您可以使用 OSPolicyAssignments 縮小 OS 政策的適用範圍,透過選取器將政策套用至特定 VM,進一步控管 VM 管理員套用政策的位置。舉例來說,所有 GKE 節點 VM 都具有 goog-gke-node 標籤,您可以透過 OS 政策指派作業指定這個標籤。

機構政策和 VM 管理員

如果 Google Cloud 機構組織有多個層級的階層 (例如資料夾和子資料夾),手動在所有這些專案中啟用 VM 管理員,可能會造成不必要的管理負擔。您可以使用 Organization Policy Service 和 constraints/compute.requireOsConfig 限制,要求資料夾或機構中的所有專案在所有 VM 上啟用 VM 管理員。使用機構政策強制執行 VM 管理工具的好處包括:

  • 所有新專案都會在每個專案和 VM 中新增 enable-osconfig=TRUE 中繼資料標籤。
  • 如果有人嘗試移除這個標籤或將其設為 true 以外的值,系統會拒絕這項變更。
  • 如果有人嘗試建立或更新 VM,並將 enable-osconfig 中繼資料鍵設為 true 以外的值,系統會拒絕這項變更。

事前準備

開始之前,請確認你已完成下列工作:

  • 啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 如要使用 Google Cloud CLI 執行這項工作,請安裝初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行 gcloud components update,取得最新版本。
  • 請確認您已使用 VM 管理工具搭配 OS 政策和 OS 政策指派,在 VM 上執行代理程式。如需操作說明,請參閱「建立 OS 政策指派作業」。
  • Enable the Cloud Resource Manager API, OS Config API APIs.

    Enable the APIs

限制

constraints/compute.requireOsConfig 機構政策有下列限制:

  • 新機構政策不會影響先前違規的資源。您可以手動設定政策的中繼資料,也可以對現有資源使用 gcloud
  • 只要有權變更專案中 Compute Engine 執行個體的中繼資料,就能透過設定 osconfig-disabled-features 中繼資料欄位,在 VM 上停用 osconfig-agent
  • 如果 osconfig-agent 未執行,VM Manager 資訊主頁會顯示 VM 不符合規範。舉例來說,如果使用者手動停用代理程式,就可能會發生這種情況。

必要的角色

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

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

在整個機構啟用 compute.requireOsConfig

啟用 VM 管理員並將 OSPolicyAssignment 範圍設為 VM 後,您可以使用 constraints/compute.requireOsConfig 組織政策,確保所有新專案預設啟用 VM 管理員。如何強制執行 constraints/compute.requireOsConfig 取決於您使用的 API 版本。

Organization Policy v2 API

您可以使用 gcloud CLI 或 Google Cloud 控制台,在資料夾或機構等Google Cloud 資源中強制執行 constraints/compute.requireOsConfig 限制。

gcloud

  1. 確認 compute.requireOsConfig 限制未套用:

    gcloud org-policies describe \
        constraints/compute.requireOsConfig \
        --organization=ORGANIZATION_ID
    

    ORGANIZATION_ID 替換為您的機構 ID

    如果未設定政策,這項指令會傳回 NOT_FOUND 錯誤:

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    

    如果政策存在,指令會傳回目前的政策。套用新政策會覆寫現有政策 (如有)。

  2. 建立暫存檔案 /tmp/policy.yaml 來儲存政策:

    name: organizations/ORGANIZATION_ID/policies/constraints/compute.requireOsConfig
    spec:
      rules:
      - enforce: true
    
  3. 執行 set-policy 指令:

    gcloud org-policies set-policy /tmp/policy.yaml
    
  4. 確認已套用新政策:

    gcloud org-policies describe \
        constraints/compute.requireOsConfig --effective \
        --organization=ORGANIZATION_ID
    

    指令會輸出類似以下的結果:

    name: organizations/ORGANIZATION_ID/policies/constraints/compute.requireOsConfig
    spec:
      rules:
      - enforce: true
    

主控台

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

    前往「機構政策」

  2. 從專案選擇工具中,選取要編輯機構政策的專案、資料夾或機構。

  3. 在「機構政策」頁面中,使用篩選器搜尋 compute.requireOsConfig

  4. 按一下政策名稱,開啟「政策詳細資料」頁面。

  5. 按一下「管理政策」,更新這項資源的機構政策。

  6. 在「編輯政策」頁面中,選取「覆寫上層政策」

  7. 選取「新增規則」

  8. 在「強制執行」下方,將這項機構政策的強制執行狀態變更為「開啟」

  9. 如要強制執行這項政策,請按一下「設定政策」

Resource Manager v1 API

  1. 確認 compute.requireOsConfig 限制未套用:

    gcloud resource-manager org-policies describe constraints/compute.requireOsConfig \
        --organization ORGANIZATION_ID
    

    ORGANIZATION_ID 替換為您的機構 ID

    如果未設定政策,這項指令會傳回不完整的政策,如下列範例所示:

    constraint: "constraints/compute.requireOsConfig"
    etag: BwVJi0OOESU=
    

    如果政策存在,指令會傳回目前的政策。套用新政策會覆寫現有政策 (如有)。

  2. 設定要在機構中強制執行的政策:

    gcloud resource-manager org-policies enable-enforce constraints/compute.requireOsConfig \
        --organization ORGANIZATION_ID
    

    指令會輸出類似以下的結果:

    booleanPolicy:
      enforced: true
    constraint: constraints/compute.requireOsConfig
    etag: BwVJitxdiwY=
    
  3. 確認已套用新政策:

    gcloud resource-manager org-policies describe constraints/compute.requireOsConfig \
        --effective \
        --organization ORGANIZATION_ID
    

    指令會輸出類似以下的結果:

    booleanPolicy:
      enforced: true
    constraint: constraints/compute.requireOsConfig
    

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

如要進一步瞭解可套用的其他政策,或如何修改或刪除政策,請參閱 Resource Manager 說明文件

後續步驟

進一步瞭解 GKE 稽核記錄