在受 VPC Service Controls 保護的專案中執行 Workload Manager 評估時,您必須為附加至 Compute Engine 執行個體的服務帳戶設定輸入和輸出規則,該執行個體會執行運算工作負載代理。這些規則可讓服務帳戶存取 VPC Service Controls 範圍內的必要 API。如未設定這些規則,代理程式就無法將資料傳送至 Workload Manager,評估作業也會失敗。
詳情請參閱「VPC Service Controls 總覽」。
事前準備
為專案設定 VPC Service Controls 前,請先完成下列工作:
- 設定 VPC Service Controls perimeter。
- 找出附加至 Compute Engine 執行個體的服務帳戶,該執行個體會執行運算工作負載代理。例如
sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com。您可以在 Google Cloud 控制台的「VM 執行個體詳細資料」頁面中找到這項資訊。 - 確認服務帳戶具備必要的角色。例如,請參閱「代理程式和 SAP 工作負載的必要角色」。
必要的角色
如要取得在 VPC Service Controls perimeter 內設定 Workload Manager 所需的權限,請要求系統管理員授予您專案的Access Context Manager 編輯者 (roles/accesscontextmanager.policyEditor) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
為 service perimeter 建立輸入和輸出規則
如要讓運算工作負載代理與必要服務通訊,您必須在 VPC Service Controls perimeter 中設定輸入和輸出規則。
如要進一步瞭解如何建立輸入規則,請參閱「設定輸入和輸出政策」。
控制台
前往 Google Cloud 控制台的「VPC Service Controls」頁面。
選取專案。
按一下 service perimeter 名稱,然後點選「Edit」(編輯)。
按一下「輸入政策」或「輸出政策」。
按一下「Add an ingress rule」(新增輸入規則)。
在「From」(寄件者) 部分,指定服務代理的身分:
- 在「身分」部分,選取「選取身分和群組」。
- 按一下「Add identities」(新增身分)。
- 輸入代理程式服務帳戶的電子郵件地址。例如
sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com。
在「To」部分,指定允許的操作:
- 針對「資源」,選取「所有專案」。
- 在「作業」部分,選取「選取作業」。
- 按一下「新增作業」,然後選取「所有方法」,新增下列服務:
compute.googleapis.comworkloadmanager.googleapis.comsecretmanager.googleapis.com
依序按一下 [完成] 及 [儲存]。
gcloud
如要新增輸入規則,請建立包含輸入規則的 YAML 檔案,並使用 gcloud access-context-manager perimeters update 指令搭配 --set-ingress-policies 旗標。
建立名為
ingress_policy.yaml的輸入政策 YAML 檔案,並在其中加入下列內容:- ingressFrom: identities: - serviceAccount:SERVICE_ACCOUNT_EMAIL sources: - accessLevel: '*' ingressTo: operations: - serviceName: compute.googleapis.com methodSelectors: - method: "*" - serviceName: workloadmanager.googleapis.com methodSelectors: - method: "*" - serviceName: secretmanager.googleapis.com methodSelectors: - method: "*" resources: - "*"將
SERVICE_ACCOUNT_EMAIL替換為附加至 Compute Engine 執行個體的服務帳戶電子郵件地址,該執行個體會執行運算工作負載代理。將輸入政策新增至範圍:
gcloud access-context-manager perimeters update PERIMETER_NAME \ --set-ingress-policies=ingress_policy.yaml將
PERIMETER_NAME替換為您的服務安全防護範圍名稱。例如:accessPolicies/1234567890/servicePerimeters/example_perimeter。
排解 VPC Service Controls 違規問題
如要查看專案中的 VPC Service Controls 違規事項並排解問題,請使用 Logs Explorer。
詳情請參閱「排解 VPC Service Controls 問題」。