排查授权错误

本页面介绍了您在授权变更后可能会遇到的授权错误,以及如何解决这些错误。

操作被拒通常由以下两种原因之一造成:

  • “以…身份运行”服务账号:调用方缺少以服务账号身份执行操作的权限,或者服务账号缺少所需的资源权限。请参阅“运行身份”服务账号错误。
  • 调用方 IAM 角色:调用方没有执行该操作所需的 IAM 角色。请参阅 IAM 角色错误。

由于 Application Integration 会检查这两项要求,因此解决其中一项要求的问题并不会自动解决另一项要求的问题。

“以…身份运行”服务账号错误

由于其中一些授权检查仍在逐步推出,您可能不会立即遇到所有这些错误。在出错提示中,PRINCIPAL 是系统评估的账号。如果无法确定账号身份,消息会显示 The caller。

条件 错误或行为 解决方法
主账号(用户、自动化或触发器)启动了集成,但无权充当集成的运行身份服务账号。 执行被拒绝,并显示以下错误: PRINCIPAL needs roles/iam.serviceAccountUser on SERVICE_ACCOUNT (or its project) to run this integration.
  • API 调用会直接返回错误,并且执行日志中不会显示任何条目。
  • Cloud Pub/Sub、Eventarc 或 Integration Connectors 事件触发器会在执行日志中记录失败的执行,并且不会重新传送该事件。
  • Cloud Scheduler 作业报告 PERMISSION_DENIED 错误。
向启动集成的主账号授予 Service Account User 角色。对于触发器,请将其授予触发器的服务账号。
在 2026 年 10 月 15 日或之后创建的集成,如果使用 API 或 Private 以外的触发器,则没有运行身份服务账号。 发布和测试失败,并显示以下错误:Set a run-as service account. These triggers run with no caller: TRIGGERS. Required for integrations created on or after October 15, 2026 (UTC). 设置运行身份服务账号。
在没有用户凭据的情况下触发的执行没有运行身份服务账号。 如果为该区域启用了集成治理,则无论集成的创建日期如何,发布和测试都会失败,并显示以下错误:Your project requires a run-as service account. Set one before publish or test.治理是指修改区域中所述的启用治理设置。

自 2026 年 10 月 15 日起,对于未启用治理功能的区域,系统不会拒绝这些执行。不过,以下各项计划在未来版本中失败:
  • 缺少身份的任务,例如连接器、调用 REST 端点或 Cloud Run functions 任务。
  • 异步执行,将失败并显示以下错误:Integration NAME needs a run-as service account to run asynchronously via trigger TRIGGER_ID.
设置运行身份服务账号。
“调用集成”任务无法启动其子集成。 调用集成的“调用集成”任务由于以下原因之一而失败:
  • 子集成是异步调用的,没有“以…身份运行”服务账号,即使调用集成有:Integration NAME needs a run-as service account to run asynchronously via trigger TRIGGER_ID.
  • 启动调用集成的服务账号或调用集成的运行身份服务账号缺少充当子集成的运行身份服务账号的权限:PRINCIPAL needs roles/iam.serviceAccountUser on SERVICE_ACCOUNT (or its project) to run this integration.
在子集成上设置运行身份服务账号,或将调用配置为同步运行。然后,在子集成的服务账号上授予 Service Account User 角色。
主账号发布或测试使用身份验证配置文件的集成,但无权充当其服务账号,或者执行到达使用该配置文件的任务。 发布或测试失败,或者任务失败,并显示以下错误:PRINCIPAL needs roles/iam.serviceAccountUser on SERVICE_ACCOUNT (or its project) to use auth config "AUTH_PROFILE_NAME".。执行是否继续取决于任务如何配置为处理错误。 向配置文件中指定的服务账号授予 Service Account User 角色。
主账号在没有权限充当指定服务账号的情况下创建或修改服务账号或 OIDC 令牌身份验证配置文件。 保存配置文件失败,并显示以下错误: PRINCIPAL needs roles/iam.serviceAccountUser on SERVICE_ACCOUNT (or its project) to save this auth config. 向管理该账号的主账号授予 Service Account User 角色。
审批者无权充当执行身份服务账号。 批准或恢复执行失败,并出现以下错误:PRINCIPAL needs roles/iam.serviceAccountUser on SERVICE_ACCOUNT (or its project) to resume this execution.。执行会保持暂停状态,直到过期,这可能会使批准看起来像是已停止工作。 向所有潜在审批者授予 Service Account User 角色。
主账号在没有权限的情况下发布或测试集成,以充当其运行身份服务账号。 PRINCIPAL needs roles/iam.serviceAccountUser on SERVICE_ACCOUNT (or its project) to publish or test this integration. 之前发布的版本会继续运行。如果您使用自动化功能进行发布,此错误会显示在部署流水线日志中,而不是 Google Cloud 控制台中。 向发布者、测试人员和自动部署服务账号授予 Service Account User 角色。
任务使用触发该任务的主账号的凭据运行,而该主账号缺少对目标资源的访问权限。在新的集成中,以及从 2026 年 10 月 15 日开始,在任何集成的测试中,JavaScript、数据转换器脚本和数据映射任务都以这种方式运行。 执行正常启动,但任务在引用资源时失败,即使未对集成进行任何更改也是如此。 向主账号授予对资源的访问权限,或为集成指定一个已拥有所需访问权限的运行身份服务账号。建议使用运行身份服务账号,因为这样可以确保无论由谁触发集成,集成的访问权限都保持一致。

如需查看 Application Integration 错误代码的完整列表,请参阅错误代码。

IAM 角色错误

除了验证 run-as 服务账号之外,Application Integration 还会验证调用方对每项操作的 IAM 权限。如果您在与集成互动时遇到 PERMISSION_DENIED 错误,或者执行日志无法加载,请确保您拥有授予所需权限的角色:

操作 所需的角色
查看和打开集成 roles/integrations.integrationViewer
查看执行日志和详细信息 roles/integrations.integrationViewer 或 roles/integrations.integrationInvoker
运行集成 roles/integrations.integrationInvoker 或 roles/integrations.integrationEditor
创建和修改集成 roles/integrations.integrationEditor
发布集成 roles/integrations.integrationDeployer 或 roles/integrations.integrationEditor
批准或恢复已暂停的运行 roles/integrations.suspensionResolver 或 roles/integrations.integrationAdmin
获得所有集成的完整访问权限 roles/integrations.integrationAdmin

如需授予角色,请运行以下命令:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='user:PRINCIPAL' \
    --role='ROLE'

如需了解详情,请参阅以下资源:

排查无效授权问题

  • 授权应用于错误的项目:必须在拥有服务账号的项目中进行授权,该项目不一定是拥有集成的项目。
  • 传播延迟:除了标准 IAM 传播延迟之外,授权决策还会短暂缓存。请等待几分钟,然后重试。
  • 涉及多个服务账号:系统会分别评估运行身份服务账号、每个身份验证配置文件的服务账号以及每个子集成的运行身份服务账号。每项权限都需要单独明确授予。
  • 授权应用于错误的主账号:对于 Cloud Scheduler、Cloud Pub/Sub、Eventarc 或 Integration Connectors 事件触发器,需要授权的主账号是触发器的服务账号,而不是您的用户账号。请参阅谁需要 Service Account User 角色。
  • 被调用方角色屏蔽:Service Account User 角色决定了您是否可以以运行身份服务账号身份执行操作。不过,您是否可以执行集成操作本身由单独的 IAM 角色控制。请参阅 IAM 角色错误。