为即将到来的授权变更做好准备
Application Integration 正在更新其授权集成的方式。这些变更将于 2026 年 10 月 15 日起对新集成生效,并将在日后对现有集成生效。 大多数集成无需更改即可继续运行,但有些集成需要更新配置才能继续运行。您现在就可以进行本页面中描述的更改,因为这些更改使用的是您已控制的配置。
即将发生的授权变更
Application Integration 正在更新其处理集成运行身份的方式。现在,每次运行都必须具有明确的身份,充当以下角色之一:
- 触发运行的用户。被调用的系统会应用相应用户的访问权限。
- 以其他服务账号身份运行。您可以像控制 Google Cloud 云项目中的任何其他服务账号一样,控制、限定范围和审核此账号。
本次更新后:
- 如需运行集成,您必须有权充当运行身份服务账号。
- 自 2026 年 10 月 15 日起,如果您没有运行身份服务账号,就无法发布或测试具有预定触发器或事件触发器的新集成。我们计划在后续版本中让到达没有身份的任务的运行失败。为防止这些故障,请立即设置以服务账号身份运行。
这些更新何时生效
这些更新将分两个阶段应用于您的集成:
| 集成 | 更新的应用时间 |
|---|---|
| 创建时间不早于 2026 年 10 月 15 日 | 从您创建的第一个版本开始。之后发布的每个版本都会保留新行为。 |
| 创建时间早于 2026 年 10 月 15 日 | 这些集成在稍后日期之前会保持当前行为,Application Integration 会另行公布该日期。 |
无论您的集成处于哪个阶段,现在都应进行本页所述的更改。 它们使用您已控制的配置,在您进行设置后立即生效,并且在两个阶段中都相同。
准备工作
按顺序完成以下任务。请先执行第一个,因为其他两个都以发布结束,而发布本身会检查权限。
- 向所有运行、审批、修改或发布集成的人员(包括自动化使用的服务账号)授予每个 run-as 服务账号的 Service Account User 权限。
- 为无人值守且没有运行身份的服务账号的集成设置运行身份服务账号。
- 为类型为服务账号或 OIDC 令牌的每个 身份验证 配置文件中指定的服务账号 授予服务账号用户权限。这些账号通常与您的“以服务账号身份运行”服务账号不同。
需要以服务账号身份运行的集成
确定集成是否需要
只有在整个运行过程中都没有可用的凭据时,您才需要运行身份服务账号。这种情况只会在以下两种情况下发生:
| 集成运行方式 | 是否有人的凭据可用? | 需要以服务账号身份运行? |
|---|---|---|
| 同步 - 某人启动了该操作,并等待结果 | 是,整个跑步过程 | 否 |
| 异步 - 任务会排队,并在稍后完成 | 仅在触发时 | 是 |
| 无人值守 - 由时间表或事件启动 | 否,从来没有真人 | 是 |
确定受影响的集成
首先,它是否会在无人时运行?如果存在以下任���情况,则会:
- 它具有 API 或专用触发器以外的任何触发器,例如时间表、Cloud Scheduler、Cloud Pub/Sub、Salesforce、Integration Connectors 事件或 Eventarc 触发器。
- 通过 API 使用
scheduleIntegrations安排了该任务。 - 另一个集成使用调用集成任务将其作为异步子集成进行调用。
- 它使用 Suspend 或 Approval 任务,其中运行可以等待,然后自行过期。
其次,其 run-as 服务账号是否为空?如需列出某个区域中的每个已发布版本及其以运行身份运行的服务账号,请运行以下命令:
curl -s -G -H "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-urlencode "filter=state=ACTIVE" \
--data-urlencode "pageSize=1000" \
"https://REGION-integrations.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/integrations/-/versions" \
| jq -r '.integrationVersions[]
| [ .name, (.runAsServiceAccount // "NONE") ]
| @tsv'
替换以下内容:
REGION:集成所在的区域。如需查看受支持区域的列表,请参阅位置。PROJECT_ID:您的 Google Cloud 项目的 ID
- 如果显示
NONE的行也符合前半部分条件,则需要采取行动。 - 如需改为检查单个集成,请在 Google Cloud 控制台中打开该集成,然后查看集成工具栏中的 集成摘要窗格。
更新集成
授予 Service Account User 角色
如需向某人授予该角色,请运行以下命令:
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT \
--project=SERVICE_ACCOUNT_PROJECT_ID \
--member='user:PRINCIPAL' \
--role='roles/iam.serviceAccountUser'
替换以下内容:
SERVICE_ACCOUNT:以运行身份服务账号的电子邮件地址,或身份验证配置文件中指定的账号的电子邮件地址SERVICE_ACCOUNT_PROJECT_ID:拥有服务账号的项目的 IDPRINCIPAL:用户的电子邮件地址。
对于其他主体类型,请使用相应的 --member 前缀:
- 群组:使用
group:。我们建议您使用 Google 群组,而不是个人用户账号,以便在团队成员发生变化时简化访问权限管理。 - 服务账号:使用
serviceAccount:进行自动化流程和应用。
如需在 Google Cloud 控制台中执行相同的操作,请执行以下操作:
- 前往 IAM 和管理 > 服务账号。
- 选择服务账号。
- 依次点击权限 > 授予访问权限。
如需了解详情,请参阅管理对服务账号的访问权限。
设置以服务账号身份运行
- 选择或创建服务账号,并向其授予集成任务所需的角色,以便其访问相关资源。如需确定要授予哪些角色,请查看项目 Application Integration 服务代理
service-PROJECT_NUMBER@gcp-sa-integrations.目前所拥有的角色,然后仅向新账号授予此集成所使用的部分角色。 - 向运行���审批、修改或发布集成(包括任何自动化)的所有人授予“服务账号用户”权限。
- 打开集成,然后在集成工具栏的 集成摘要窗格中设置服务账号。
- 发布集成。如需了解详情,请参阅测试和发布集成。
Google Cloud 建议您为每个集成使用专用的、范围最小的服务账号,而不是使用一个在所有集成中共享的广泛特权账号,因为这样做可以:
- 包含任何一个集成的影响。
- 按名称显示在审核日志中。
如需了解详情,请参阅使用服务账号的最佳实践。
排查权限缺失问题
被拒绝的操作有两种原因,值得区分:
- 以运行身份运行的服务账号 - 您无法以该账号的身份运行,或者该账号无法访问任务所需的内容。
- 您自己的 IAM 角色 - 您完全不允许执行该操作。
这两项检查都适用,因此修复其中一项并不能修复另一项。
以服务账号身份运行时的错误
| 情况 | 您将看到的内容 | 您需要采取的措施 |
|---|---|---|
| 有人触发了集成,但无法充当其以运行身份运行的服务账号 | 触发器被拒绝,并显示 PERMISSION_DENIED。检查在运行排队之前进行,因此执行日志中不会显示任何内容,看起来好像什么都没发生,而不是任务失败 |
向触发者授予 Service Account User 角色 |
| 如果集成是在 2026 年 10 月 15 日或之后创建的,且触发器不是 API 或 Private,则没有以服务账号身份运行。 | 发布和测试失败,并显示以下错误:
The integration is missing a run-as service account, so its executions would
run as the platform service identity rather than an identity you control. One is
required for an integration created on or after October 15, 2026 (UTC) whose
triggers run with no caller: TRIGGERS. Please provide a run-as service account
for your integration before publish/test. |
设置以服务账号身份运行 |
| 没有用户凭据的运行没有以服务账号身份运行。 | 如果您为项目启用项目治理,发布会失败,并显示以下错误:
The integration is missing run-as service account since governance is
enabled for your project.
对于其他项目,自 2026 年 10 月 15 日起,系统不会拒绝这些运行。不过,在未来的版本中,没有身份的任务(例如连接器、调用 REST 端点或 Cloud Run functions 函数任务)将计划失败。 |
设置以服务账号身份运行 |
| 任务使用的身份验证配置文件的服务账号是调用方无法充当的 | 在运行的其余部分继续进行时,该任务被拒绝:
You do not have permission to use Auth Config ID because you
cannot act as its service account: SERVICE_ACCOUNT. |
授予 Service Account User 角色(针对配置文件中指定的账号) |
| 审批人无法充当以运行身份运行的服务账号 | 审批流程静默失败,不会生成可见的错误。运行会一直保持暂停状态,直到过期,因此您会注意到审批似乎已停止运行 | 向可能批准的所有人授予 Service Account User |
| 有人未经许可修改或发布集成 | Publisher does not have required permission to publish integration with
service account: SERVICE_ACCOUNT. 任何已发布的内容都会继续运行。如果自动化流程为您发布,则此信息会显示在部署流水线中,而不是控制台中 |
向编辑者、发布者和自动化账号授予 Service Account User 角色 |
| 任务以触发者的身份运行,但该用户无法访问相应资源。在新的集成中,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 角色,查看角色及其所含权限的完整列表。
- 访问权限控制,了解 Application Integration 如何使用 IAM。
常见问题
我已授予该角色,但仍失败。我错���了什么?
- 补助金发放给了错误的项目。必须在拥有服务账号的项目中进行,该项目不一定拥有集成。
- 尚未生效。请稍等几分钟。除了正常的 IAM 传播延迟之外,授权决策还会���暂���存。
- ���及第二个服务账号。您的以服务账号身份运行的服务账号和每个身份验证配置文件的服务账号是分开的,两者都需要授权。
- 该块是您自己的角色,而不是服务账号。“服务账号用户”角色决定了您是否可以以运行身份服务账号身份行事;是否允许您执行相应操作则由另一个 IAM 角色决定。请参阅 IAM 角色错误。
为什么 Integration Invoker 角色不再足够?
但您仍然可以运行集成。但它从未允许您以集成运行所用的服务账号身份执行操作,而这正是决定运行可获取多少访问权限的因素。以下任何角色均不会授予 iam.serviceAccounts.actAs,因此它始终是一项单独的授权:
roles/integrations.integrationAdminroles/integrations.integrationEditorroles/integrations.integrationInvoker
我的集成只能同步运行。我需要以服务账号身份运行吗?
否。同步运行已有身份:触发运行的人员。请参阅确定集成是否需要一个。
控制台中未标记任何内容。我是否可以安全地继续使用该应用?
不一定。警告在一定程度上取决于观测到的运行情况,因此,如果集成以不频繁的安排运行,或者最近没有人触发过,则可能需要采取措施,但系统不会向您显示警告。请完成需要以服务账号身份运行的集成,而不是将安静的控制台视为一切正常。
后续步骤
- 阅读应用集成安全指南。
- 查看 Application Integration 的预定义 IAM 角色。
- 了解如何配置身份验证配置文件。
- 阅读使用服务账号的最佳实践。