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

GCP服务账户调用SKU查询接口返回403权限拒绝求助

问题分析与解决步骤

你遇到的服务账号调用Cloud Billing SKU接口返回403的问题,通常并非GCP调整了访问规则,而是由以下常见配置问题导致,可逐一排查:

1. 验证Access Token的Scope是否正确

调用Cloud Billing的SKU查询接口,要求token包含正确的权限范围,需满足以下任一条件:

  • 包含https://www.googleapis.com/auth/cloud-billing.readonly(只读权限,推荐)
  • 包含https://www.googleapis.com/auth/cloud-billing(读写权限)
  • 包含https://www.googleapis.com/auth/cloud-platform(全平台权限)

检查方法:
执行命令查看当前token的scope字段:

curl https://oauth2.googleapis.com/tokeninfo?access_token=<your-service-account-token>

若返回结果中scope未包含上述任一值,生成token时需指定对应scope:

  • 使用gcloud生成:
gcloud auth application-default print-access-token --scopes=https://www.googleapis.com/auth/cloud-billing.readonly
  • 使用服务账号密钥生成JWT时,在claims的scope字段中添加对应权限范围。

2. 确认服务账号拥有结算账号级权限

项目级的Owner角色仅覆盖项目内资源权限,而SKU查询接口的部分数据关联到结算账号资源。即使服务账号是项目Owner,若未获得结算账号的访问权限,仍会返回403。

解决方法:

  1. 打开GCP控制台的结算账号页面
  2. 找到目标结算账号,进入「权限」标签页
  3. 添加服务账号邮箱,授予Billing Viewer或Billing Account Administrator角色

3. 检查Cloud Billing API是否已启用

确保服务账号所属的GCP项目已启用Cloud Billing API:

  1. 进入GCP控制台的API库
  2. 搜索「Cloud Billing API」
  3. 确认状态为「已启用」,若未启用则点击启用按钮

4. 验证Token的有效性

检查token是否过期或关联错误的服务账号:

  • 同样使用tokeninfo接口,查看exp字段(过期时间戳)是否在当前时间之后
  • 查看issued_to字段是否与服务账号的OAuth2客户端ID一致

内容的提问来源于stack exchange,提问作者Evgeni Dimitrov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:45:37