建立 Eventarc 觸發條件時,系統會將觸發條件與身分與存取權管理 (IAM) 服務帳戶建立關聯。觸發程序會使用服務帳戶做為預設身分。
根據預設,您無法在某個Google Cloud 專案中建立 IAM 服務帳戶,並附加至其他專案中的資源。不過,您可能已在個別專案中集中管理機構的服務帳戶,這樣會比較容易管理服務帳戶。本文說明將一個專案中的服務帳戶附加至另一個專案的 Eventarc 觸發條件時,需要執行的步驟。
如果沒有執行這些步驟的權限,請管理員代為完成。
啟用跨專案服務帳戶
在服務帳戶專案中完成下列步驟。
前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面。
如果系統強制執行「停用跨專案服務帳戶」政策,您必須停用這項政策。
詳情請參閱「啟用服務帳戶,以便跨專案附加」。
建立服務帳戶,並記下其名稱。
授予服務帳戶驗證權限
主體可透過幾種不同的方式,使用服務帳戶進行驗證。每種驗證類型都要求主體對服務帳戶具有特定的 IAM 權限。詳情請參閱「服務帳戶驗證的角色」。
將服務帳戶憑證建立者 (
roles/iam.serviceAccountTokenCreator
) IAM 角色授予包含觸發程序的 Google Cloud 專案的 Eventarc 服務代理程式。這項權限可讓服務代理管理服務帳戶的跨專案存取權。服務代理程式是特定專案中特定服務的身分。 Google Cloud 詳情請參閱服務代理程式。控制台
前往 Google Cloud 控制台的「Service accounts」(服務帳戶) 頁面。
選取擁有要附加至 Eventarc 觸發條件的服務帳戶的專案。
按一下先前建立的服務帳戶電子郵件地址。
按一下「Permissions」(權限) 分頁標籤。
在「可存取這個服務帳戶的主體」部分中,按一下「授予存取權」
。在「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.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain: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 轉送事件。