本文說明如何授予 Identity and Access Management (IAM) 角色和權限,以支援使用 Eventarc 將Google Cloud 和其他來源的事件路由至 GKE 目的地,包括在 GKE 叢集中執行的私人和公用服務的公開端點。
授予主體專案層級的權限,以便叫用 Eventarc API (例如 Eventarc 觸發條件建立者):
- Eventarc 管理員角色可讓您完全控管所有 Eventarc 資源,包括在建立觸發程序時指定服務帳戶。
- 服務帳戶使用者角色可讓主體模擬及使用服務帳戶。服務帳戶與 Eventarc 觸發程序相關聯,代表觸發程序的 ID。
-
- Eventarc 事件接收者角色可讓 Eventarc 觸發條件接收來自事件提供者的事件。如果您是從 Cloud Pub/Sub 傳送直接事件,則不需要授予角色。
- Pub/Sub 訂閱者角色可讓 Eventarc 觸發程序調用 Pub/Sub 的訊息,以及將訂閱項目附加至主題。
- 「Monitoring Metric Writer」角色可讓 Eventarc 的事件轉送器使用 Cloud Monitoring 和其他提供指標的系統寫入指標。
-
- 如要為 Cloud Storage 的直接事件建立觸發條件,請授予 Pub/Sub 發布者角色。
- 如果您是在 2021 年 4 月 8 日當天或之前啟用 Cloud Pub/Sub 服務代理,請授予「服務帳戶憑證建立者」角色。
如要進一步瞭解如何授予 IAM 角色,請參閱管理存取權。您或許還可透過自訂角色或其他預先定義的角色取得必要權限。
授予專案層級的權限
如果您是專案建立者,系統會授予您基本擁有者角色 (roles/owner
)。根據預設,這個角色包含完全存取大多數Google Cloud 資源所需的權限。否則,管理員必須在適當的資源上,將必要角色授予適當的主體 (也稱為成員)。
舉例來說,主體可以是 Google 帳戶 (用於使用者) 或服務帳戶 (用於應用程式和運算工作負載)。每個主體都有專屬的 ID,通常是電子郵件地址。
Eventarc 管理員角色 (
roles/eventarc.admin
) 可讓您完整控管所有 Eventarc 資源。在專案中授予角色:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=roles/eventarc.admin
更改下列內容:
PROJECT_ID
:您的 Google Cloud 專案 ID。PRINCIPAL
:觸發條件建立者的 ID,通常具有以下形式:PRINCIPAL_TYPE:ID
。例如:user:my-user@example.com
。如需可能的PRINCIPAL_TYPE
值完整清單,請參閱政策繫結參考資料。
服務帳戶使用者角色 (
roles/iam.serviceAccountUser
) 可讓主體以服務帳戶身分執行作業。建立 Eventarc 觸發條件時,您需要這個角色,才能將使用者管理的服務帳戶與觸發條件建立關聯,並代表觸發條件的身分。詳情請參閱「服務帳戶驗證的角色」。
您可以授予專案角色,允許主體模擬多個服務帳戶,也可以授予服務帳戶角色,允許主體僅模擬特定服務帳戶。
在專案中授予角色:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=roles/iam.serviceAccountUser
或者,在服務帳戶中授予角色:
gcloud iam service-accounts add-iam-policy-binding \ projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member=PRINCIPAL \ --role=roles/iam.serviceAccountUser
更改下列內容:
SERVICE_ACCOUNT_PROJECT_ID
:包含服務帳戶的專案 ID。 Google CloudSERVICE_ACCOUNT_NAME
:服務帳戶名稱。## 授予 Eventarc 觸發條件權限
建立 Eventarc 觸發程序時,每個觸發程序都會與 IAM 服務帳戶建立關聯。您可以指定觸發程序做為預設身分的使用者管理服務帳戶。如果在建立觸發條件時未指定服務帳戶,觸發條件會使用 Compute Engine 預設服務帳戶做為身分。
建議您建立自己的使用者代管服務帳戶,以便在管理觸發條件時,享有更大的控制權和彈性。
建立服務帳戶並記下其名稱:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
更改下列內容:
SERVICE_ACCOUNT_NAME
:服務帳戶的名稱。這個名稱會顯示在用來識別服務帳戶的電子郵件地址中。DESCRIPTION
:服務帳戶的選填說明DISPLAY_NAME
:要顯示在 Google Cloud 控制台的服務帳戶名稱
將專案的 Eventarc 事件接收者角色 (
roles/eventarc.eventReceiver
) 授予與 Eventarc 觸發條件相關聯的服務帳戶,以便接收事件提供者的事件。請注意,如果您是直接從 Cloud Pub/Sub 路由事件,則不需要授予 Eventarc 事件接收者角色。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/eventarc.eventReceiver
將
SERVICE_ACCOUNT_NAME
替換為您在上一步記下的服務帳戶名稱。將專案的 Pub/Sub 訂閱者角色 (
roles/pubsub.subscriber
) 授予與 Eventarc 觸發程序相關聯的服務帳戶,以便該帳戶取用 Pub/Sub 訊息,並將訂閱項目附加至主題。gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/pubsub.subscriber
將
SERVICE_ACCOUNT_NAME
替換為您先前記下的服務帳戶名稱。將專案的監控指標寫入者角色 (
roles/monitoring.metricWriter
) 授予與 Eventarc 觸發程序相關聯的服務帳戶,讓 Eventarc 的事件轉送器可以使用 Cloud Monitoring 和其他提供指標的系統寫入指標。gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.metricWriter
授予 Google 服務代理人權限
部分 Google Cloud 服務有服務代理,可讓服務存取您的資源。如果 API 需要服務代理人,Google 會在您啟用及使用 API 後建立服務代理人。
如要為 Cloud Storage 的直接事件建立觸發程序,以便將訊息發布至主題,請在專案中授予 Cloud Storage 服務代理 Pub/Sub 發布者角色 (
roles/pubsub.publisher
):gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com \ --role=roles/pubsub.publisher
將
PROJECT_NUMBER
替換為專案編號。 Google Cloud您可以在 Google Cloud 控制台的「歡迎」頁面找到專案編號,也可以執行下列指令:gcloud projects describe PROJECT_ID --format='value(projectNumber)'
如果您是在 2021 年 4 月 8 日當天或之前啟用 Cloud Pub/Sub 服務代理,請將專案的服務帳戶權杖建立者角色 (
roles/iam.serviceAccountTokenCreator
) 授予 Pub/Sub 服務代理,以支援已驗證的 Pub/Sub 推送要求。否則,系統會預設授予這個角色:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
後續步驟
瞭解如何為 GKE 建立 IAM 政策。
瞭解使用服務帳戶的最佳做法。
瞭解如何說明觸發程序並驗證相關聯的服務帳戶。