借助 Eventarc,您可以安全地将事件从 Google Cloud 服务和其他事件提供方路由到各种目标位置。如需管理此访问权限,请根据事件来源和目标,向创建触发器或部署工作负载的主账号、触发器服务账号以及 Google 管理的服务代理授予特定的 Identity and Access Management (IAM) 角色。如需了解详情,请参阅表格的事件目标列中链接的指南。
事件来源和目标所需的角色
当您按特定事件来源或目标过滤下表时,结果会自动包含适用的所有事件来源和所有事件目标行。除了任何特定于来源或特定于目标的角色之外,这些基准角色也适用。
例如,当您为路由到 Cloud Run functions 的 Cloud Storage 直接事件授予角色时,所有事件来源和所有事件目标行中的角色也适用。
| 事件来源 | 主账号或服务代理 | 所需角色 | 必要时 | 事件目标 |
|---|---|---|---|---|
| 所有事件来源 | 调用 Eventarc 的主账号(例如,触发器创建者) |
Eventarc
Admin ( roles/eventarc.admin)
|
在项目上是必需的:授予对 Eventarc 资源的完全控制权,包括在创建触发器时指定服务账号。 |
所有事件目标 |
| 所有事件来源 | 调用 Eventarc 的主账号(例如,触发器创建者) |
Service
Account User ( roles/iam.serviceAccountUser)
|
对项目或服务账号的要求:让您能够将用户代管式服务账号附加到触发器,并在部署目标时充当运行时、构建或工作流服务账号。 |
所有事件目标 |
| 所有事件来源 | Eventarc 服务代理 ( service-PROJECT_NUMBER@gcp-sa-eventarc.) |
Eventarc
Service Agent ( roles/eventarc.serviceAgent)
|
默认在项目上授予:允许服务代理管理底层传输资源并验证事件源。 在您首次创建 Eventarc 资源时自动授予,但如果此角色被移除,您必须恢复此角色。 |
所有事件目标 |
| 所有事件来源 | 触发器服务账号 |
Eventarc
Event Receiver ( roles/eventarc.eventReceiver)
|
在项目上是必需的:让触发器可以接收来自事件提供方的事件。对于来自 Cloud Pub/Sub 的直接事件,此角色不是必需的。 |
所有事件目标 |
| 所有事件来源 | Cloud Pub/Sub 服务代理 ( service-PROJECT_NUMBER@gcp-sa-pubsub.) |
Service
Account Token Creator ( roles/iam.serviceAccountTokenCreator)
|
默认在项目上授予(有条件):允许服务代理为经过身份验证的推送请求创建身份令牌。 只有在 2021 年 4 月 8 日或之前启用了 Cloud Pub/Sub 服务代理时,您才必须手动授予此角色。 |
所有事件目标 |
| Cloud Storage 直接事件 | Cloud Storage 服务代理 ( service-PROJECT_NUMBER@gs-project-accounts.) |
Pub/Sub
Publisher ( roles/pubsub.publisher)
|
项目必需:允许服务代理将存储桶通知发布到基础传输主题。 |
所有事件目标 |
| 所有事件来源 | 触发器服务账号 |
Cloud Run
Invoker ( roles/run.invoker)
|
在 Cloud Run 服务或项目上必需(有条件):允许触发器调用经过身份验证的 Cloud Run 目标服务。 |
Cloud Run |
| 所有事件来源 | 部署函数的主体 |
根据您的部署方法,选择以下其中一项:
|
对项目而言是必需的:可让您创建和更新函数。根据您的部署方法,授予以下角色之一:
|
Cloud Run functions |
| 所有事件来源 | 触发器服务账号 |
Cloud Run
Invoker ( roles/run.invoker)
|
底层 Cloud Run 服务或项目所需的角色(有条件):允许触发器调用经过身份验证的 Cloud Run functions 函数。 |
Cloud Run functions |
| 所有事件来源 | Cloud Functions 服务代理 ( service-PROJECT_NUMBER@gcf-admin-robot.) |
Cloud
Functions Service Agent ( roles/cloudfunctions.serviceAgent)
|
默认在项目上授予(有条件):使用 注意:此角色已弃用,仅适用于使用 Cloud Functions API 创建的函数。对于使用 Cloud Run 创建的函数,请参阅 Cloud Run 角色和权限页面。 |
Cloud Run functions |
| 所有事件来源 | 触发器服务账号 |
Pub/Sub
Subscriber ( roles/pubsub.subscriber)
|
在项目上是必需的:让触发器可使用来自 Pub/Sub 的消息并将订阅关联到主题。 |
GKE |
| 所有事件来源 | 触发器服务账号 |
Monitoring
Metric Writer ( roles/monitoring.metricWriter)
|
在项目上是必需的:让 Eventarc 的事件转发器可以使用 Cloud Monitoring 和其他提供指标的系统写入指标。 |
GKE |
| 所有事件来源 | Eventarc 服务代理 ( service-PROJECT_NUMBER@gcp-sa-eventarc.) |
以下所有条件:
|
项目所需的角色:允许服务代理创建事件转发器组件并管理 GKE 集群中的资源。在您运行 |
GKE |
| 所有事件来源 | Eventarc 服务代理 ( service-PROJECT_NUMBER@gcp-sa-eventarc.) |
DNS 对等互连 ( roles/dns.peer)
|
在 VPC 宿主项目中是必需的(有条件):当内部 HTTP 端点 URI 使用可由 Cloud DNS 解析的内部 DNS 名称时,允许触发器项目的服务代理使用 DNS 对等互连区域访问目标网络。 |
VPC 网络中的内部 HTTP 端点 |
| 所有事件来源 | 触发器服务账号 |
Workflows
Invoker ( roles/workflows.invoker)
|
对项目而言是必需的:让触发器能够启动目标工作流执行。 |
Workflows |
| 所有事件来源 | 工作流服务账号 |
Logs
Writer ( roles/logging.logWriter)
|
对项目而言是必需的(有条件):如果您的工作流将日志发送到 Cloud Logging,则此角色是必需的。 |
Workflows |