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

跨项目及同项目Cloud Run认证调用失败求助(401错误)

解决Cloud Run跨/同项目认证调用401问题

跨项目调用(Project A的CR-A1调用Project B的CR-B1)

核心检查点

  • 确认权限绑定有效性:
    确保Project B中已将Cloud Run Invoker(roles/run.invoker)权限直接绑定到SA-Project A,而非通过组或间接绑定,同时检查是否存在IAM Deny策略覆盖该权限。
  • 验证运行服务账号匹配:
    进入Cloud Run控制台的CR-A1详情页,确认「容器」标签下的运行服务账号确实是SA-Project A,而非默认的Compute Engine服务账号。
  • 检查Token生成逻辑:
    生成Bearer Token时必须指定CR-B1的完整URL作为受众(Audience),示例gcloud命令:
    gcloud auth print-identity-token --audiences=https://cr-b1-xxxx.a.run.app --impersonate-service-account=sa-project-a@project-a.iam.gserviceaccount.com
    
    用该Token执行curl测试:
    curl -H "Authorization: Bearer $(上述命令生成的Token)" https://cr-b1-xxxx.a.run.app
    
    若测试仍报错,说明权限配置存在问题;若测试成功,需排查CR-A1内部的Token生成代码是否符合要求。

同项目调用(如CR-A1调用CR-A2)

  • 同项目内开启认证的Cloud Run实例互调,同样需要给调用方的运行服务账号配置Cloud Run Invoker权限,或根据场景给项目内所有服务账号批量添加该权限。
  • 注意:同项目下开启认证后不会自动允许调用,必须显式配置IAM权限。

通用排查步骤

  • 查看审计日志:在Cloud Logging中搜索CR-B1的访问日志,401错误日志会包含具体原因(如Token受众不匹配、服务账号无权限等),这是定位问题的关键。
  • 检查VPC配置:若实例使用VPC连接器,确认网络策略未阻止跨项目/同项目的请求流量。
  • 确认服务账号状态:在IAM控制台检查SA-Project A是否处于启用状态,禁用的服务账号无法生成有效Token。

内容的提问来源于stack exchange,提问作者Nagender Varma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:52:38