本文档介绍如何向服务帐号授予 Identity and Access Management (IAM) 角色,以便 Eventarc 可以从 Google Cloud 和第三方来源接收事件,并将事件传递给 GKE 和 Cloud Run for Anthos 服务。
如需详细了解 Eventarc 中的访问权限控制选项,请参阅访问权限控制。
所需 IAM 角色
向服务帐号授予适当的角色。
Cloud Audit Logs
为了接收来自 Google Cloud 来源的事件,Eventarc 使用 Cloud Audit Logs 向 GKE 目标传送事件。
用户角色
向用户授予 Eventarc Admin 角色 (roles/eventarc.admin
):
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role="roles/eventarc.admin"
替换以下值:
PROJECT_ID
:Google Cloud 项目 ID。PRINCIPAL
:要添加绑定的主账号。格式应为user|group|serviceAccount:email
或domain:domain
。示例:
user:test-user@gmail.com
、group:admins@example.com
、serviceAccount:test123@example.domain.com
或domain:example.domain.com
。
服务帐号角色
-
向服务帐号授予 Pub/Sub Subscriber 角色 (
roles/pubsub.subscriber
):gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:MY_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/pubsub.subscriber"
-
向服务帐号授予 Monitoring Metric Writer 角色 (
roles/monitoring.metricWriter
):gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:MY_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"
-
向服务帐号授予 Eventarc Event Receiver 角色 (
roles/eventarc.eventReceiver
):gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:MY_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/eventarc.eventReceiver"
替换以下值:
PROJECT_ID
:Google Cloud 项目 ID。MY_SERVICE_ACCOUNT
:您的服务帐号的名称。
直接事件
Eventarc 向目标 GKE 服务发送直接事件通知,例如对 Cloud Storage 存储桶的更新。
用户角色
向用户授予 Eventarc Admin 角色 (roles/eventarc.admin
):
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role="roles/eventarc.admin"
替换以下值:
PROJECT_ID
:Google Cloud 项目 ID。PRINCIPAL
:要添加绑定的主账号。格式应为user|group|serviceAccount:email
或domain:domain
。示例:
user:test-user@gmail.com
、group:admins@example.com
、serviceAccount:test123@example.domain.com
或domain:example.domain.com
。
服务帐号角色
-
向服务帐号授予 Pub/Sub Subscriber 角色 (
roles/pubsub.subscriber
):gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:MY_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/pubsub.subscriber"
-
向服务帐号授予 Monitoring Metric Writer 角色 (
roles/monitoring.metricWriter
):gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:MY_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"
-
向服务帐号授予 Eventarc Event Receiver 角色 (
roles/eventarc.eventReceiver
):gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:MY_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/eventarc.eventReceiver"
替换以下值:
PROJECT_ID
:Google Cloud 项目 ID。MY_SERVICE_ACCOUNT
:您的服务帐号的名称。
Cloud Storage 服务帐号角色
如果要为直接 Cloud Storage 事件(而不是其他直接事件)创建触发器,请将 Pub/Sub Publisher 角色 (roles/pubsub.publisher
) 授予 Cloud Storage 服务帐号:
SERVICE_ACCOUNT="$(gsutil kms serviceaccount -p PROJECT_ID)" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:${SERVICE_ACCOUNT}" \ --role="roles/pubsub.publisher"
将 PROJECT_ID
替换为 Google Cloud 项目 ID。
Pub/Sub 主题
为了接收来自第三方来源的事件,Eventarc 使用 Pub/Sub 通知向 GKE 目标传送事件。
用户角色
向用户授予 Eventarc Admin 角色 (roles/eventarc.admin
):
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role="roles/eventarc.admin"
替换以下值:
PROJECT_ID
:Google Cloud 项目 ID。PRINCIPAL
:要添加绑定的主账号。格式应为user|group|serviceAccount:email
或domain:domain
。示例:
user:test-user@gmail.com
、group:admins@example.com
、serviceAccount:test123@example.domain.com
或domain:example.domain.com
。
服务帐号角色
-
向服务帐号授予 Pub/Sub Subscriber 角色 (
roles/pubsub.subscriber
):gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:MY_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/pubsub.subscriber"
-
向服务帐号授予 Monitoring Metric Writer 角色 (
roles/monitoring.metricWriter
):gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:MY_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"
替换以下值:
PROJECT_ID
:Google Cloud 项目 ID。MY_SERVICE_ACCOUNT
:您的服务帐号的名称。