這個頁面說明如何使用組織政策服務,確保組織、資料夾或專案中的所有 Compute Engine 執行個體 (包括 Google Kubernetes Engine VM) 都已啟用 VM 管理員。
本指南適用於安全團隊,可確保所有必要程式 (例如安全和監控代理程式) 在組織、資料夾或專案的所有執行個體中執行。如要僅透過組織政策強制執行設定,請參閱本指南。如要採用設定即程式碼的做法,請使用 Config Sync。Config Sync 可讓您設定及控管叢集的許多層面,並提供組織政策以外的價值。
閱讀本頁內容前,請務必先熟悉 VM 管理員和 Resource Manager 限制條件。
本指南說明如何在機構或資料夾中,對每個專案強制使用 VM 管理員。本指南不會說明如何透過 OS 政策設定及使用 VM 管理員。如需相關操作說明,請參閱「建立 OS 政策指派作業」。
關於 VM Manager
VM 管理員是一套作業系統管理工具,適用於在 Compute Engine 執行 Windows 和 Linux 的大型虛擬機器 (VM) 機群。您可以使用 VM 管理員套用作業系統政策,自訂 VM 上執行的程式。舉例來說,您可以定義政策,在資源上安裝代理程式,並在多項資源中重複使用該政策。Google Cloud 專案預設會停用 VM 管理員。
您可以使用 OSPolicyAssignments,透過選取器將 OS 政策範圍限定在特定 VM,進一步調整 VM Manager 套用政策的位置。舉例來說,所有 GKE 節點 VM 都有 goog-gke-node 標籤,您可以使用 OS 政策指派作業指定這些 VM。
組織政策和 VM 管理員
如果 Google Cloud 組織有多個層級的階層 (例如資料夾和子資料夾),手動在所有這些專案中啟用 VM 管理員,可能會造成不必要的管理負擔。您可以使用組織政策服務和 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指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文中的指令。
- 請確認您已使用 VM 管理員搭配 OS 政策和 OS 政策指派,在 VM 上執行代理程式。如需操作說明,請參閱「建立 OS 政策指派作業」。
如果尚未啟用,請啟用 Cloud Resource Manager API 和 OS Config API。
啟用 API 所需的角色
如要啟用 API,您必須具備
serviceusage.services.enable權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。
限制
constraints/compute.requireOsConfig 組織政策有下列限制:
- 新機構政策不會影響先前已違規的資源。您可以手動設定政策的中繼資料,也可以在現有資源上使用
gcloud。 - 只要有權變更專案中 Compute Engine 執行個體的中繼資料,就能透過設定
osconfig-disabled-features中繼資料欄位,在 VM 上停用osconfig-agent。 - 如果
osconfig-agent未執行,VM 管理員 資訊主頁會顯示 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
確認尚未套用
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.如果政策確實存在,指令會傳回目前的政策。套用新政策會覆寫現有政策 (如有)。
建立暫存檔案
/tmp/policy.yaml來儲存政策:name: organizations/ORGANIZATION_ID/policies/constraints/compute.requireOsConfig spec: rules: - enforce: true執行
set-policy指令:gcloud org-policies set-policy /tmp/policy.yaml確認已套用新政策:
gcloud org-policies describe \ constraints/compute.requireOsConfig --effective \ --organization=ORGANIZATION_ID指令會輸出類似以下的結果:
name: organizations/ORGANIZATION_ID/policies/constraints/compute.requireOsConfig spec: rules: - enforce: true
主控台
前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面。
在專案挑選器中,選取要編輯組織政策的專案、資料夾或組織。
在「Organization policies」(組織政策) 頁面中,使用篩選器搜尋
compute.requireOsConfig。按一下政策名稱,開啟「政策詳細資料」頁面。
按一下「管理政策」,更新這項資源的組織政策。
在「Edit policy」(編輯政策) 頁面,選取「Override parent's policy」(覆寫上層政策)。
選取「新增規則」。
在「強制執行」下方,將這項組織政策的強制執行狀態變更為「開啟」。
如要強制執行這項政策,請按一下「設定政策」。
Resource Manager v1 API
確認尚未套用
compute.requireOsConfig限制:gcloud resource-manager org-policies describe constraints/compute.requireOsConfig \ --organization ORGANIZATION_ID將
ORGANIZATION_ID替換為組織 ID。如果未設定政策,這項指令會傳回不完整的政策,例如:
constraint: "constraints/compute.requireOsConfig" etag: BwVJi0OOESU=如果政策存在,指令會傳回目前的政策。套用新政策會覆寫現有政策 (如有)。
設定要對機構強制執行的政策:
gcloud resource-manager org-policies enable-enforce constraints/compute.requireOsConfig \ --organization ORGANIZATION_ID指令會輸出類似以下的結果:
booleanPolicy: enforced: true constraint: constraints/compute.requireOsConfig etag: BwVJitxdiwY=確認已套用新政策:
gcloud resource-manager org-policies describe constraints/compute.requireOsConfig \ --effective \ --organization ORGANIZATION_ID指令會輸出類似以下的結果:
booleanPolicy: enforced: true constraint: constraints/compute.requireOsConfig
機構政策變更最多可能需要 15 分鐘才會全面生效。
如要進一步瞭解可套用的其他政策,或如何修改或刪除政策,請參閱「Resource Manager 說明文件」。