本頁說明使用 VM 管理員 的政策自動調度管理工具功能時,必須符合的必要條件。
政策協調器先決條件的 gcloud CLI 指令
本節列出您必須執行的所有 gcloud 指令,才能使用政策協調器功能。
專案
下列指令會執行建立專案層級協調流程所需的作業:
- 在您建立 OS 政策自動調度管理工具的專案中啟用 OS Config API。
- 在您建立 OS 政策自動調度管理工具的專案中,啟用 Progressive Rollout API。
- 建立必要服務代理程式 (如尚未建立)。
- 將 IAM 角色授予服務代理。
# Enable OS Config API gcloud services enable osconfig.googleapis.com # Enable Progressive Rollout API gcloud services enable progressiverollout.googleapis.com # Create an OS config service agent gcloud beta services identity create --service=osconfig.googleapis.com --project=PROJECT_NUMBER # Create a Progressive Rollout service agent gcloud beta services identity create --service=progressiverollout.googleapis.com --project=PROJECT_NUMBER # Grant the required role to the OS config rollout service agent gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-osconfig-rollout.s3ns-system.iam.gserviceaccount.com" \ --role="roles/osconfig.rolloutServiceAgent" # Grant the required role to the OS config service agent gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-osconfig.s3ns-system.iam.gserviceaccount.com" \ --role="roles/osconfig.serviceAgent" # Grant the required role to the Progressive Rollout service agent gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-progrollout.s3ns-system.iam.gserviceaccount.com" \ --role="roles/progressiverollout.serviceAgent"
更改下列內容:
PROJECT_ID:要在當中建立服務代理程式的專案數字 ID。PROJECT_NUMBER:您建立專案時,Google 指派的專案資源編號。
詳情請參閱「專案資源」。
資料夾
下列指令會執行建立資料夾層級協調流程所需的作業:
# Set up the quota project gcloud config set billing/quota_project QUOTA_PROJECT_ID # Enable OS Config API gcloud services enable osconfig.googleapis.com # Create an OS config service agent gcloud beta services identity create --service=osconfig.googleapis.com --folder=FOLDER_NUMBER # Create a Progressive Rollout service agent gcloud beta services identity create --service=progressiverollout.googleapis.com --folder=FOLDER_NUMBER # Grant the required role to the OS config rollout service agent gcloud resource-manager folders add-iam-policy-binding FOLDER_NUMBER \ --member="serviceAccount:service-folder-FOLDER_NUMBER@gcp-sa-osconfig-rollout.s3ns-system.iam.gserviceaccount.com" \ --role="roles/osconfig.rolloutServiceAgent" # Grant the required role to the OS config service agent gcloud resource-manager folders add-iam-policy-binding FOLDER_NUMBER \ --member="serviceAccount:service-folder-FOLDER_NUMBER@gcp-sa-osconfig.s3ns-system.iam.gserviceaccount.com" \ --role="roles/osconfig.serviceAgent" # Grant the required role to the Progressive Rollout service agent gcloud resource-manager folders add-iam-policy-binding FOLDER_NUMBER \ --member="serviceAccount:service-folder-FOLDER_NUMBER@gcp-sa-progrollout.s3ns-system.iam.gserviceaccount.com" \ --role="roles/progressiverollout.serviceAgent"
更改下列內容:
QUOTA_PROJECT_ID:配額專案的專案 ID。您可以選擇任何已啟用計費功能的專案。FOLDER_NUMBER:您要在哪個資料夾中建立服務代理,請輸入該資料夾的數值 ID。
機構
下列指令會執行建立機構層級協調流程所需的作業:
# Set up the quota project gcloud config set billing/quota_project QUOTA_PROJECT_ID # Enable OS Config API gcloud services enable osconfig.googleapis.com # Create an OS config service agent gcloud beta services identity create --service=osconfig.googleapis.com --organization=ORGANIZATION_NUMBER # Create a Progressive Rollout service agent gcloud beta services identity create --service=progressiverollout.googleapis.com --organization=ORGANIZATION_NUMBER # Grant the required role to the OS config rollout service agent gcloud organizations add-iam-policy-binding ORGANIZATION_NUMBER \ --member="serviceAccount:service-org-ORGANIZATION_NUMBER@gcp-sa-osconfig-rollout.s3ns-system.iam.gserviceaccount.com" \ --role="roles/osconfig.rolloutServiceAgent" # Grant the required role to the OS config service agent gcloud organizations add-iam-policy-binding ORGANIZATION_NUMBER \ --member="serviceAccount:service-org-ORGANIZATION_NUMBER@gcp-sa-osconfig.s3ns-system.iam.gserviceaccount.com" \ --role="roles/osconfig.serviceAgent" # Grant the required role to the Progressive Rollout service agent gcloud organizations add-iam-policy-binding ORGANIZATION_NUMBER \ --member="serviceAccount:service-org-ORGANIZATION_NUMBER@gcp-sa-progrollout.s3ns-system.iam.gserviceaccount.com" \ --role="roles/progressiverollout.serviceAgent"
更改下列內容:
QUOTA_PROJECT_ID:配額專案的專案 ID。您可以選擇任何已啟用計費功能的專案。ORGANIZATION_NUMBER替換為要建立服務代理的機構數字 ID。
為機構和資料夾協調作業設定配額或帳單專案
使用政策自動化調度管理工具管理機構或資料夾中的 OS 政策資源時,您會向以用戶端為基礎的 API 發出要求。用戶端 API 需要配額專案。如要進一步瞭解以用戶端為準的 API 和設定配額專案,請參閱「配額專案總覽」。
使用 gcloud CLI 或 REST API 呼叫政策協調器方法時,請依下列方式指定配額專案:
gcloud
在 gcloud CLI 設定屬性中設定配額專案:
gcloud config set billing/quota_project QUOTA_PROJECT_ID
將 QUOTA_PROJECT_ID 替換為配額專案的專案 ID。
或者,您也可以使用 --billing-project 標記為特定指令設定配額專案,這會優先於設定屬性。
REST
在每個要求中新增 x-goog-user-project HTTP 標頭,指定配額專案。詳情請參閱「使用 REST 要求設定配額專案」。
啟用 OS Config API
如要在 VM 管理員中使用政策自動化調度管理工具功能,請在下列專案中啟用 OS Config API:
- 如要進行機構層級和資料夾層級的協調作業,請為配額專案啟用 OS Config API。
- 如要進行專案層級的自動調度,請在建立政策自動調度管理工具的專案中,啟用 OS 設定 API。
詳情請參閱「啟用 OS Config API」。
為專案啟用 Progressive Rollout API
控制台
在 Cloud de Confiance 控制台中,選取要啟用 API 的 Cloud de Confiance 專案,然後前往「APIs & Services」(API 與服務) 頁面:
點選「啟用 API 和服務」。
搜尋「Progressive Rollout」。
在搜尋結果中,點選「Progressive Rollout API」。
如果 API 尚未啟用,請點選「啟用」。
gcloud
如要查看是否已啟用 Progressive Rollout API,請列出專案已啟用的服務:
gcloud services list --project=PROJECT_ID
將
PROJECT_ID替換為要啟用 API 的專案 ID。如果輸出結果中出現
progressiverollout.googleapis.com,表示 API 已啟用。如果 API 尚未啟用,請執行下列指令來啟用:
gcloud services enable progressiverollout.googleapis.com
詳情請參閱「
gcloud services」。
設定 OS Config 服務代理程式
政策自動化調度管理工具會使用 OS 設定服務代理程式,在專案中執行動作。此外,這項服務也依附於 Progressive Rollout API,而該 API 有自己的服務代理。詳情請參閱服務代理程式。
您必須為建立政策協調器的每個專案、資料夾或機構建立服務代理程式。如要讓政策協調器正常運作,請在協調器的上層資源中,將下列必要的 IAM 角色授予這些服務代理:
- @gcp-sa-osconfig.s3ns-system.iam.gserviceaccount.com 帳戶的 OSConfig 服務代理程式 (
roles/osconfig.serviceAgent) - @gcp-sa-osconfig-rollout.s3ns-system.iam.gserviceaccount.com 帳戶的 OSConfig Rollout 服務代理 (
roles/osconfig.rolloutServiceAgent) - @gcp-sa-progrollout.s3ns-system.iam.gserviceaccount.com 帳戶的 Progressive Rollout 服務代理 (
roles/progressiverollout.serviceAgent)
如要將 IAM 角色授予服務代理,請使用 Cloud de Confiance 控制台或 add-iam-policy-binding 指令。詳情請參閱「將角色授予服務代理程式」。
必要的角色
-
如要取得授予服務代理存取權所需的權限,請要求管理員在您要授予存取權的專案、資料夾或組織中,授予下列 IAM 角色:
-
授予服務代理程式專案存取權:
專案 IAM 管理員 (
roles/resourcemanager.projectIamAdmin) -
授予服務代理程式資料夾存取權:資料夾管理員 (
roles/resourcemanager.folderAdmin) -
授予服務代理商專案、資料夾和機構的存取權:
機構管理員 (
roles/resourcemanager.organizationAdmin)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這些預先定義的角色具備授予服務代理人存取權所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要授予服務代理存取權,您必須具備下列權限:
-
授予服務代理專案存取權:
-
resourcemanager.projects.getIamPolicy -
resourcemanager.projects.setIamPolicy
-
-
授予服務代理人資料夾存取權:
-
resourcemanager.folders.getIamPolicy -
resourcemanager.folders.setIamPolicy
-
-
授予服務代理機構存取權:
-
resourcemanager.organizations.getIamPolicy -
resourcemanager.organizations.setIamPolicy
-
-
授予服務代理程式專案存取權:
專案 IAM 管理員 (
如要建立服務代理程式,請按照下列步驟操作。
檢查每個資源的服務代理電子郵件地址格式:
專案
service-PROJECT_NUMBER@gcp-sa-osconfig.s3ns-system.iam.gserviceaccount.comservice-PROJECT_NUMBER@gcp-sa-osconfig-rollout.s3ns-system.iam.gserviceaccount.comservice-PROJECT_NUMBER@gcp-sa-progrollout.s3ns-system.iam.gserviceaccount.com
將
PROJECT_NUMBER替換為您建立政策協調器的專案數字 ID。資料夾
service-folder-FOLDER_NUMBER@gcp-sa-osconfig.s3ns-system.iam.gserviceaccount.comservice-folder-FOLDER_NUMBER@gcp-sa-osconfig-rollout.s3ns-system.iam.gserviceaccount.comservice-folder-FOLDER_NUMBER@gcp-sa-progrollout.s3ns-system.iam.gserviceaccount.com
將
FOLDER_NUMBER替換為您建立政策協調器的資料夾數字 ID。機構
service-org-ORGANIZATION_NUMBER@gcp-sa-osconfig.s3ns-system.iam.gserviceaccount.comservice-org-ORGANIZATION_NUMBER@gcp-sa-osconfig-rollout.s3ns-system.iam.gserviceaccount.comservice-org-ORGANIZATION_NUMBER@gcp-sa-progrollout.s3ns-system.iam.gserviceaccount.com
將
ORGANIZATION_NUMBER替換為您要在其中建立政策協調器的機構的數字 ID。如要為特定 API 和資源建立服務代理程式,請使用
gcloud beta services identity create指令:專案
# Create an OS config service agent gcloud beta services identity create --service=osconfig.googleapis.com --project=PROJECT_NUMBER # Create a Progressive Rollout service agent gcloud beta services identity create --service=progressiverollout.googleapis.com --project=PROJECT_NUMBER
將
PROJECT_NUMBER替換為您要在其中建立服務代理程式的專案的數字 ID。資料夾
# Create an OS config service agent gcloud beta services identity create --service=osconfig.googleapis.com --folder=FOLDER_NUMBER # Create a Progressive Rollout service agent gcloud beta services identity create --service=progressiverollout.googleapis.com --folder=FOLDER_NUMBER
將
FOLDER_NUMBER替換為要建立服務代理程式的資料夾的數值 ID。機構
# Create an OS config service agent gcloud beta services identity create --service=osconfig.googleapis.com --organization=ORGANIZATION_NUMBER # Create a Progressive Rollout service agent gcloud beta services identity create --service=progressiverollout.googleapis.com --organization=ORGANIZATION_NUMBER
將
ORGANIZATION_NUMBER替換為要建立服務代理程式的組織數字 ID。
將 IAM 角色授予服務代理
如要授予服務代理角色,請執行 gcloud add-iam-policy-binding,如下所示:
專案
# Grant the required role to the OS config rollout service agent gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-osconfig-rollout.s3ns-system.iam.gserviceaccount.com" \ --role="roles/osconfig.rolloutServiceAgent" # Grant the required role to the OS config service agent gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-osconfig.s3ns-system.iam.gserviceaccount.com" \ --role="roles/osconfig.serviceAgent" # Grant the required role to the Progressive Rollout service agent gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-progrollout.s3ns-system.iam.gserviceaccount.com" \ --role="roles/progressiverollout.serviceAgent"
將 PROJECT_NUMBER 替換為要新增 IAM 政策繫結的專案 ID (數字)。
資料夾
# Grant the required role to the OS config rollout service agent gcloud resource-manager folders add-iam-policy-binding FOLDER_NUMBER \ --member="serviceAccount:service-folder-FOLDER_NUMBER@gcp-sa-osconfig-rollout.s3ns-system.iam.gserviceaccount.com" \ --role="roles/osconfig.rolloutServiceAgent" # Grant the required role to the OS config service agent gcloud resource-manager folders add-iam-policy-binding FOLDER_NUMBER \ --member="serviceAccount:service-folder-FOLDER_NUMBER@gcp-sa-osconfig.s3ns-system.iam.gserviceaccount.com" \ --role="roles/osconfig.serviceAgent" # Grant the required role to the Progressive Rollout service agent gcloud resource-manager folders add-iam-policy-binding FOLDER_NUMBER \ --member="serviceAccount:service-folder-FOLDER_NUMBER@gcp-sa-progrollout.s3ns-system.iam.gserviceaccount.com" \ --role="roles/progressiverollout.serviceAgent"
將 FOLDER_NUMBER 替換為要新增 IAM 政策繫結的資料夾數字 ID。
機構
# Grant the required role to the OS config rollout service agent gcloud organizations add-iam-policy-binding ORGANIZATION_NUMBER \ --member="serviceAccount:service-org-ORGANIZATION_NUMBER@gcp-sa-osconfig-rollout.s3ns-system.iam.gserviceaccount.com" \ --role="roles/osconfig.rolloutServiceAgent" # Grant the required role to the OS config service agent gcloud organizations add-iam-policy-binding ORGANIZATION_NUMBER \ --member="serviceAccount:service-org-ORGANIZATION_NUMBER@gcp-sa-osconfig.s3ns-system.iam.gserviceaccount.com" \ --role="roles/osconfig.serviceAgent" # Grant the required role to the Progressive Rollout service agent gcloud organizations add-iam-policy-binding ORGANIZATION_NUMBER \ --member="serviceAccount:service-org-ORGANIZATION_NUMBER@gcp-sa-progrollout.s3ns-system.iam.gserviceaccount.com" \ --role="roles/progressiverollout.serviceAgent"
將 ORGANIZATION_NUMBER 替換為要新增 IAM 政策繫結的組織數字 ID。
設定 VPC Service Controls 範圍中專案的存取權
如果您在受 VPC Service Controls 保護的專案中使用組織層級或資料夾層級的政策自動調度管理工具,則必須授予 OSConfig Rollout 服務代理程式存取 VPC Service Controls 服務周邊的權限。如果您未授予這項存取權,政策自動化調度管理工具就無法為這些專案建立、更新或刪除 OS 政策指派作業。
必要的角色
如要取得在 VPC Service Controls perimeter 內設定 OS 政策自動調度管理工具所需的權限,請要求系統管理員授予您組織的Access Context Manager Editor (roles/accesscontextmanager.policyEditor) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備相關權限,可在 VPC Service Controls perimeter 內設定 OS 政策協調器。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要在 VPC Service Controls 範圍內使用 OS 政策自動調度管理工具,必須具備下列權限:
-
授予服務代理專案存取權:
-
resourcemanager.projects.getIamPolicy -
resourcemanager.projects.setIamPolicy
-
-
授予服務代理人資料夾存取權:
-
resourcemanager.folders.getIamPolicy -
resourcemanager.folders.setIamPolicy
-
-
授予服務代理機構存取權:
-
resourcemanager.organizations.getIamPolicy -
resourcemanager.organizations.setIamPolicy
-
建立輸入規則
如要允許服務代理存取受 VPC Service Controls 保護的資源,請在相關服務範圍中新增輸入規則。
如要進一步瞭解如何建立輸入規則,請參閱「設定輸入和輸出政策」。
資料夾
控制台
- 前往 Cloud de Confiance 控制台的「VPC Service Controls」頁面。
- 選取您的機構。
- 在「VPC Service Controls」頁面中,選取要更新的服務範圍所屬的存取權政策。
- 按一下要更新的服務範圍名稱,然後點選「編輯」。
- 按一下「輸入政策」。
- 按一下「Add an ingress rule」(新增輸入規則)。
- 在「From」部分,指定服務代理的身分:
- 依序選取「身分」 >「身分」 >「選取身分和群組」。
- 按一下「Add identities」(新增身分)。
- 輸入可識別下列 OSconfig 推出服務代理程式的電子郵件地址:
service-folder-FOLDER_NUMBER@gcp-sa-osconfig-rollout.s3ns-system.iam.gserviceaccount.com將
FOLDER_NUMBER替換為資料夾的數字 ID。
- 在「To」(目的地) 部分中,指定允許的操作:
- 依序選取「資源」 >「專案」,然後選取「所有專案」。
- 在「作業或 IAM 角色」中,選取「選取作業」。
- 按一下「新增作業」,然後新增下列作業:
- 新增
osconfig.googleapis.com服務。 - 按一下「所有方法」。
- 新增
- 按一下 [完成]。
- 按一下 [儲存]。
gcloud
如要新增輸入規則,請建立包含輸入規則的 YAML 檔案,然後使用 gcloud access-context-manager perimeters update 指令和 --set-ingress-policies 旗標。
建立名為
ingress_policy.yaml的輸入政策 YAML 檔案,並在其中加入下列內容:- ingressFrom: identities: - serviceAccount:service-folder-FOLDER_NUMBER@gcp-sa-osconfig-rollout.s3ns-system.iam.gserviceaccount.com sources: - accessLevel: '*' ingressTo: operations: - serviceName: osconfig.googleapis.com methodSelectors: - method: "*" resources: - "*"將
FOLDER_NUMBER替換為資料夾的數字 ID。將輸入政策新增至範圍:
gcloud access-context-manager perimeters update PERIMETER_NAME \ --set-ingress-policies=ingress_policy.yaml將
PERIMETER_NAME替換為您的服務安全防護範圍名稱。例如:accessPolicies/1234567890/servicePerimeters/example_perimeter。
機構
控制台
- 前往 Cloud de Confiance 控制台的「VPC Service Controls」頁面。
- 選取您的機構。
- 在「VPC Service Controls」頁面中,選取要更新的服務範圍所屬的存取權政策。
- 按一下要更新的服務範圍名稱,然後點選「編輯」。
- 按一下「輸入政策」。
- 按一下「Add an ingress rule」(新增輸入規則)。
- 在「From」部分,指定服務代理的身分:
- 依序選取「身分」 >「身分」 >「選取身分和群組」。
- 按一下「Add identities」(新增身分)。
- 輸入可識別下列 OSconfig 推出服務代理程式的電子郵件地址:
service-org-ORGANIZATION_NUMBER@gcp-sa-osconfig-rollout.s3ns-system.iam.gserviceaccount.com將
ORGANIZATION_NUMBER替換為組織的數字 ID。
- 在「To」(目的地) 部分中,指定允許的操作:
- 依序選取「資源」 >「專案」,然後選取「所有專案」。
- 在「作業或 IAM 角色」中,選取「選取作業」。
- 按一下「新增作業」,然後新增下列作業:
- 新增
osconfig.googleapis.com服務。 - 按一下「所有方法」。
- 新增
- 按一下 [完成]。
- 按一下 [儲存]。
gcloud
如要新增輸入規則,請建立包含輸入規則的 YAML 檔案,然後使用 gcloud access-context-manager perimeters update 指令和 --set-ingress-policies 旗標。
建立名為
ingress_policy.yaml的輸入政策 YAML 檔案,並在其中加入下列內容:- ingressFrom: identities: - serviceAccount:service-org-ORGANIZATION_NUMBER@gcp-sa-osconfig-rollout.s3ns-system.iam.gserviceaccount.com sources: - accessLevel: '*' ingressTo: operations: - serviceName: osconfig.googleapis.com methodSelectors: - method: "*" resources: - "*"將
ORGANIZATION_NUMBER替換為組織的數字 ID。將輸入政策新增至範圍:
gcloud access-context-manager perimeters update PERIMETER_NAME \ --set-ingress-policies=ingress_policy.yaml將
PERIMETER_NAME替換為您的服務安全防護範圍名稱。例如:accessPolicies/1234567890/servicePerimeters/example_perimeter。
後續步驟
- 瞭解如何使用政策自動化調度管理工具管理 OS 政策指派作業。
- 瞭解如何查看及編輯政策協調器。