建立 Eventarc 觸發條件時,系統會將其與 Identity and Access Management (IAM) 服務帳戶建立關聯。觸發程序會使用服務帳戶做為預設身分。
根據預設,您無法在某個Google Cloud 專案中建立 IAM 服務帳戶,並附加至其他專案中的資源。不過,您可能已在個別專案中集中管理貴機構的服務帳戶,這樣會比較容易管理服務帳戶。本文將說明必要步驟,協助您將一個專案中的服務帳戶附加至另一個專案中的 Eventarc 觸發程序。
如果沒有執行這些步驟的權限,請管理員代為完成。
啟用跨專案服務帳戶
在服務帳戶專案中完成下列步驟。
前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面。
如果強制執行「停用跨專案服務帳戶」政策,您必須停用該政策。
詳情請參閱「啟用跨專案附加服務帳戶的功能」。
建立服務帳戶,並記下其名稱。
授予服務帳戶驗證權限
主體可透過幾種方式使用服務帳戶進行驗證。 每種驗證類型都要求主體具備服務帳戶的特定 IAM 權限。詳情請參閱「服務帳戶驗證適用的角色」。
將服務帳戶權杖建立者 (
roles/iam.serviceAccountTokenCreator) IAM 角色授予含有觸發程序的 Google Cloud 專案 Eventarc 服務代理程式。這項權限可讓服務代理程式管理服務帳戶的跨專案存取權。服務代理程式是特定專案中特定 Google Cloud 服務的身分。詳情請參閱「服務專員」。控制台
前往 Google Cloud 控制台的「Service accounts」(服務帳戶) 頁面。
選取擁有要附加至 Eventarc 觸發條件的服務帳戶的專案。
按一下您先前建立的服務帳戶電子郵件地址。
按一下「具備存取權的主體」分頁標籤。
按一下 「授予存取權」。
在「New principals」(新增主體) 欄位中,輸入 Eventarc 服務代理的電子郵件地址:
service-EVENTARC_PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com
將
EVENTARC_PROJECT_NUMBER替換為包含觸發程序的專案的專案編號。Google Cloud按一下 [Add another role] (新增其他角色)。
在「Select a role」(選取角色) 清單中,篩選「Service Account Token Creator」(服務帳戶權杖建立者),然後選取該角色。
按一下 [儲存]。
gcloud
執行
gcloud iam service-accounts add-iam-policy-binding指令:gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member='serviceAccount:service-EVENTARC_PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com' \ --role='roles/iam.serviceAccountTokenCreator'
更改下列內容:
SERVICE_ACCOUNT_NAME:服務帳戶名稱SERVICE_ACCOUNT_PROJECT_ID:擁有服務帳戶的專案 ID Google CloudEVENTARC_PROJECT_NUMBER:包含觸發條件的專案 Google Cloud專案編號
將服務帳戶使用者 (
roles/iam.serviceAccountUser) IAM 角色授予所有建立觸發程序的主體,例如包含觸發程序的 Google Cloud 專案的 Eventarc 服務代理程式。這個預先定義的角色具備iam.serviceAccounts.actAs權限,可將服務帳戶附加至資源。控制台
在專案中授予角色,允許主體模擬多個服務帳戶:
前往 Google Cloud 控制台的「IAM」(身分與存取權管理) 頁面。
選取擁有服務帳戶的專案。
按一下 「授予存取權」。
在「New principals」(新增主體) 欄位中,輸入主體的電子郵件地址。
在「Select a role」(選取角色) 清單中,篩選「Service Account User」(服務帳戶使用者),然後選取該角色。
按一下 [儲存]。
或者,將服務帳戶的角色授予主體,允許主體僅模擬特定服務帳戶:
前往 Google Cloud 控制台的「Service accounts」(服務帳戶) 頁面。
選取擁有服務帳戶的專案。
按一下您先前建立的服務帳戶電子郵件地址。
按一下「Permissions」(權限) 分頁標籤。
在「可存取這個服務帳戶的主體」部分中,按一下 「授予存取權」。
在「New principals」(新增主體) 欄位中,輸入主體的電子郵件地址。
按一下 [Add another role] (新增其他角色)。
在「Select a role」(選取角色) 清單中,篩選「Service Account User」(服務帳戶使用者),然後選取該角色。
按一下 [儲存]。
gcloud
執行
gcloud projects add-iam-policy-binding指令,並將專案角色授予主體,允許主體模擬多個服務帳戶:gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
或者,執行
gcloud iam service-accounts add-iam-policy-binding指令,並在服務帳戶上授予角色,允許主體僅模擬特定服務帳戶:gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_RESOURCE_NAME \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
更改下列內容:
SERVICE_ACCOUNT_PROJECT_ID:擁有服務帳戶的專案 ID Google CloudPRINCIPAL:觸發條件建立者的 ID,格式為user|group|serviceAccount:email或domain:domain。例如:user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.com公尺
SERVICE_ACCOUNT_RESOURCE_NAME:服務帳戶的完整資源名稱。例如:projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com其中:
SERVICE_ACCOUNT_PROJECT_ID是Google Cloud 擁有服務帳戶的專案 IDSERVICE_ACCOUNT_NAME是服務帳戶的名稱
授予支援事件路由的權限
建立 Eventarc 觸發條件前,您必須授予其他 IAM 權限,才能使用 Eventarc 轉送事件。