所有角色和权限

借助 Eventarc,您可以安全地将事件从 Google Cloud 服务和其他事件提供方路由到各种目标位置。如需管理此访问权限,请根据事件来源和目标,向创建触发器或部署工作负载的主账号、触发器服务账号以及 Google 管理的服务代理授予特定的 Identity and Access Management (IAM) 角色。如需了解详情,请参阅表格的事件目标列中链接的指南。

事件来源和目标所需的角色

当您按特定事件来源或目标过滤下表时,结果会自动包含适用的所有事件来源和所有事件目标行。除了任何特定于来源或特定于目标的角色之外,这些基准角色也适用。

例如,当您为路由到 Cloud Run functions 的 Cloud Storage 直接事件授予角色时,所有事件来源和所有事件目标行中的角色也适用。

事件来源 主账号或服务代理 所需角色 必要时 事件目标
所有事件来源 source-all source-cloud-storage source-pubsub 调用 Eventarc 的主账号(例如,触发器创建者) Eventarc Admin
(roles/eventarc.admin)

在项目上是必需的:授予对 Eventarc 资源的完全控制权,包括在创建触发器时指定服务账号。

所有事件目标 target-vpc target-cloud-run-functions target-cloud-run-service target-gke target-workflows
所有事件来源 source-all source-cloud-storage source-pubsub 调用 Eventarc 的主账号(例如,触发器创建者) Service Account User
(roles/iam.serviceAccountUser)

对项目或服务账号的要求:让您能够将用户代管式服务账号附加到触发器,并在部署目标时充当运行时、构建或工作流服务账号。

所有事件目标 target-vpc target-cloud-run-functions target-cloud-run-service target-gke target-workflows
所有事件来源 source-all source-cloud-storage source-pubsub Eventarc 服务代理
(service-PROJECT_NUMBER@gcp-sa-eventarc.)
Eventarc Service Agent
(roles/eventarc.serviceAgent)

默认在项目上授予:允许服务代理管理底层传输资源并验证事件源。

在您首次创建 Eventarc 资源时自动授予,但如果此角色被移除,您必须恢复此角色。

所有事件目标 target-vpc target-cloud-run-functions target-cloud-run-service target-gke target-workflows
所有事件来源 source-all source-cloud-storage 触发器服务账号 Eventarc Event Receiver
(roles/eventarc.eventReceiver)

在项目上是必需的:让触发器可以接收来自事件提供方的事件。对于来自 Cloud Pub/Sub 的直接事件,此角色不是必需的。

所有事件目标 target-vpc target-cloud-run-functions target-cloud-run-service target-gke target-workflows
所有事件来源 source-all source-cloud-storage source-pubsub Cloud Pub/Sub 服务代理
(service-PROJECT_NUMBER@gcp-sa-pubsub.)
Service Account Token Creator
(roles/iam.serviceAccountTokenCreator)

默认在项目上授予(有条件):允许服务代理为经过身份验证的推送请求创建身份令牌。

只有在 2021 年 4 月 8 日或之前启用了 Cloud Pub/Sub 服务代理时,您才必须手动授予此角色。

所有事件目标 target-vpc target-cloud-run-functions target-cloud-run-service target-gke target-workflows
Cloud Storage 直接事件 source-cloud-storage Cloud Storage 服务代理
(service-PROJECT_NUMBER@gs-project-accounts.)
Pub/Sub Publisher
(roles/pubsub.publisher)

项目必需:允许服务代理将存储桶通知发布到基础传输主题。

所有事件目标 target-vpc target-cloud-run-functions target-cloud-run-service target-gke target-workflows
所有事件来源 source-all source-cloud-storage source-pubsub 触发器服务账号 Cloud Run Invoker
(roles/run.invoker)

在 Cloud Run 服务或项目上必需(有条件):允许触发器调用经过身份验证的 Cloud Run 目标服务。

Cloud Run target-cloud-run-service
所有事件来源 source-all source-cloud-storage source-pubsub 部署函数的主体

根据您的部署方法,选择以下其中一项:

对项目而言是必需的:可让您创建和更新函数。根据您的部署方法,授予以下角色之一:

  • gcloud run deploy 或 Cloud Run Admin API:授予 roles/run.sourceDeveloper 和 roles/serviceusage.serviceUsageConsumer。
  • gcloud functions deploy 或 Cloud Functions v2 API:授予 roles/cloudfunctions.developer 或 roles/cloudfunctions.admin。
Cloud Run functions target-cloud-run-functions
所有事件来源 source-all source-cloud-storage source-pubsub 触发器服务账号 Cloud Run Invoker
(roles/run.invoker)

底层 Cloud Run 服务或项目所需的角色(有条件):允许触发器调用经过身份验证的 Cloud Run functions 函数。

Cloud Run functions target-cloud-run-functions
所有事件来源 source-all source-cloud-storage source-pubsub Cloud Functions 服务代理
(service-PROJECT_NUMBER@gcf-admin-robot.)
Cloud Functions Service Agent
(roles/cloudfunctions.serviceAgent)

默认在项目上授予(有条件):使用 gcloud functions deploy 或 Cloud Functions v2 API 部署函数时需要此角色,以便服务代理可以创建和管理 Eventarc 触发器和底层 Cloud Run 服务。在您启用 Cloud Functions API 时自动授予。

注意:此角色已弃用,仅适用于使用 Cloud Functions API 创建的函数。对于使用 Cloud Run 创建的函数,请参阅 Cloud Run 角色和权限页面。

Cloud Run functions target-cloud-run-functions
所有事件来源 source-all source-cloud-storage source-pubsub 触发器服务账号 Pub/Sub Subscriber
(roles/pubsub.subscriber)

在项目上是必需的:让触发器可使用来自 Pub/Sub 的消息并将订阅关联到主题。

GKE target-gke
所有事件来源 source-all source-cloud-storage source-pubsub 触发器服务账号 Monitoring Metric Writer
(roles/monitoring.metricWriter)

在项目上是必需的:让 Eventarc 的事件转发器可以使用 Cloud Monitoring 和其他提供指标的系统写入指标。

GKE target-gke
所有事件来源 source-all source-cloud-storage source-pubsub Eventarc 服务代理
(service-PROJECT_NUMBER@gcp-sa-eventarc.)

以下所有条件:

项目所需的角色:允许服务代理创建事件转发器组件并管理 GKE 集群中的资源。在您运行 gcloud eventarc gke-destinations init 时绑定。

GKE target-gke
所有事件来源 source-all source-cloud-storage source-pubsub Eventarc 服务代理
(service-PROJECT_NUMBER@gcp-sa-eventarc.)
DNS 对等互连
(roles/dns.peer)

在 VPC 宿主项目中是必需的(有条件):当内部 HTTP 端点 URI 使用可由 Cloud DNS 解析的内部 DNS 名称时,允许触发器项目的服务代理使用 DNS 对等互连区域访问目标网络。

VPC 网络中的内部 HTTP 端点 target-vpc
所有事件来源 source-all source-cloud-storage source-pubsub 触发器服务账号 Workflows Invoker
(roles/workflows.invoker)

对项目而言是必需的:让触发器能够启动目标工作流执行。

Workflows target-workflows
所有事件来源 source-all source-cloud-storage source-pubsub 工作流服务账号 Logs Writer
(roles/logging.logWriter)

对项目而言是必需的(有条件):如果您的工作流将日志发送到 Cloud Logging,则此角色是必需的。

Workflows target-workflows

后续步骤