排查授权错误

本页是为即将到来的授权变更做好准备的一部分。其中说明了您可能会遇到的错误以及如何修正这些错误。

被拒绝的操作有两种原因,值得区分:

这两项检查都适用,因此修复其中一项并不能修复另一项。

以服务账号身份运行时的错误

其中一些检查仍在逐步推出,因此您可能暂时还未看到所有错误。在消息中,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 错误。
向启动它的任何人授予服务账号用户权限。对于触发器,这是触发器的服务账号。
如果集成是在 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.
在子集成上设置以服务账号身份运行,或以同步方式调用子集成。然后,向其授予服务账号用户权限。
有人发布或测试了使用身份验证配置文件的集成,但他们无法以该配置文件的服务账号的身份进行操作,或者运行到达了使用该配置文件的任务 发布或测试失败,或者任务失败,并显示以下错误: 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. 向个人资料中指定的账号的管理者授予服务账号用户权限
审批人无法充当以运行身份运行的服务账号 批准或恢复运行失败,并显示以下错误: 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.已发布的所有内容将继续运行。如果自动化流程为您发布,则此信息会显示在部署流水线中,而不是控制台中 向发布者、测试者和自动化流程授予 Service Account User
任务以触发者的身份运行,但该用户无法访问相应资源。在新集成中,以及从 2026 年 10 月 15 日开始,在任何集成的测试中,JavaScript、数据转换器脚本和数据映射任务都以这种方式运行 运行正常开始,然后一个任务失败,并命名了一个资源,即使集成的任何方面都没有变化 向这些人员授予对资源的访问权限,或将集成迁移到已拥有该权限的以服务账号身份运行的账号上 - 通常是更好的解决方案,因为这样可以防止集成的访问权限随运行者而变化

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

IAM 角色错误

除了运行身份服务账号之外,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 角色。
  • 该块是您自己的角色,而不是服务账号。“服务账号用户”权限是指您是否可以以运行身份服务账号身份行事;是否允许您执行相应操作由单独的 IAM 角色控制。请参阅 IAM 角色错误。