You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置GCP IAM实现服务账号仅访问指定Pub/Sub订阅及403排查

问题分析

你遇到的403错误根源在于list_subscriptions是项目级API调用,仅在订阅层面配置Pub/Sub Admin角色,无法让服务账号发起项目范围的订阅列表查询。要实现「仅能访问指定订阅+列表查询仅返回该订阅」的最小权限需求,需要搭配项目级权限、订阅级权限,并通过IAM条件做过滤。

解决方案

1. 配置最小权限组合

给目标服务账号添加以下两组权限:

  • 项目级别:授予pubsub.subscriptions.list权限(推荐创建自定义角色来封装这个单一权限,比预定义的Pub/Sub Viewer更贴合最小权限要求)
  • 订阅级别:授予pubsub.subscriptions.consume权限(仅用于拉取订阅消息,替代权限过大的Pub/Sub Admin)

2. 绑定IAM过滤条件(核心步骤)

在项目级的权限绑定上添加IAM条件,限制服务账号仅能查看指定订阅:

resource.name == "projects/[你的项目ID]/subscriptions/[目标订阅ID]"

添加该条件后,服务账号调用list_subscriptions时,只会返回符合条件的订阅,其他订阅会被自动过滤。

3. 代码验证

你提供的测试代码无需修改,权限配置完成后重新执行,即可正常输出指定订阅的名称,不会再触发403错误。

4. Splunk场景适配

针对Splunk的使用场景,确保权限完全匹配需求:

  • Splunk拉取Pub/Sub消息仅依赖pubsub.subscriptions.consume权限
  • 若Splunk需要通过列表查询配置数据源,上述IAM条件会确保它只能看到指定的专属订阅,完全满足最小权限开放要求

内容的提问来源于stack exchange,提问作者Tom K.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 12:02:54