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

点击Cloud Run安全按钮后,Scheduler调用API遇权限拒绝问题

Cloud Scheduler调用Cloud Run权限拒绝问题排查与解答

问题背景

原本运行正常的配置:

  • Google Cloud Run:API通过公开URL可正常访问(示例:https://some_name-ab3adasmjk-oa.a.run.app)
  • Google Cloud Scheduler:通过HTTP调用上述API(URL示例:https://some_name-ab3adasmjk-oa.a.run.app/v1/myapi?id=0)

在Cloud Run控制台的SECURITY页面为服务账号添加SECRET MANAGER SECRET ACCESSOR权限后,Scheduler调用API开始出现permission denied错误,按Stack Overflow相关操作处理后仍未解决。

已执行操作

  • A) 为Cloud Run的服务账号添加SECRET MANAGER SECRET ACCESSOR权限
  • B) 在Scheduler中配置OIDC Token
  • C) Cloud Run与Scheduler处于不同区域(此前运行正常)

用户疑问

基础疑问

  1. 服务账号获得SECRET MANAGER SECRET ACCESSOR权限后,Scheduler是否仍使用原Cloud Run URL?
  2. 在Scheduler中添加OIDC Token时,指定Cloud Run服务账号、Audience留空是否正确?

补充疑问

  1. Cloud Run与Scheduler跨区域部署是否会影响调用?
    I) 为Cloud Run创建服务账号SA1,并赋予SECRET MANAGER SECRET ACCESSOR权限,此配置是否正确?
    II) 在IAM中创建服务账号SA2(格式:service-YOUR_PROJECT_NUMBER@gcp-sa-cloudscheduler.iam.gserviceaccount.com),并赋予Cloud Scheduler Service Agent角色,此配置是否正确?
    III) 添加OIDC Token时,应该指定SA1还是SA2?
    IV) 需授予roles/run.invoker权限,具体操作步骤是什么?控制台中该权限的名称是什么?应该赋予SA1还是SA2?

问题解答

基础疑问解答

  1. 是,仍使用原URL。Cloud Run的访问URL不会因服务账号权限变更而改变,只要服务本身未重新部署或修改域名配置,Scheduler继续用原有API URL即可。
  2. 不正确。OIDC Token的Audience字段不能留空,必须填写Cloud Run服务的根URL(示例:https://some_name-ab3adasmjk-oa.a.run.app);指定的服务账号应为Scheduler发起请求的身份账号,而非Cloud Run的服务账号SA1。

补充疑问解答

  1. 无影响。Cloud Scheduler支持跨区域调用Cloud Run服务,此前正常运行也验证了这一点,权限问题与跨区域无关。
    I) 配置正确但不相关。SA1作为Cloud Run的服务账号,若服务本身需要访问Secret Manager,赋予SECRET MANAGER SECRET ACCESSOR是必要的,但这个权限是给Cloud Run服务内部使用的,和Scheduler调用Cloud Run的权限问题无关。
    II) 无需手动创建。SA2是Google自动生成的Cloud Scheduler服务代理账号,默认已存在且通常自带Cloud Scheduler Service Agent角色,不需要手动创建;只有当该角色缺失时,才需要手动补充。
    III) 指定SA2。OIDC Token需要使用Cloud Scheduler的服务代理账号(SA2),因为是SA2代表Scheduler发起请求,需要用自身身份获取Token访问Cloud Run。
    IV) 权限配置说明:
    • 控制台权限名称:Cloud Run Invoker(对应权限ID:roles/run.invoker)
    • 赋予对象:SA2(Cloud Scheduler服务代理账号),因为是SA2发起调用请求,需要获得Cloud Run的访问权限
    • 操作步骤:
      1. 打开Google Cloud Console的IAM与管理 -> IAM页面
      2. 在IAM列表中找到SA2(格式:service-YOUR_PROJECT_NUMBER@gcp-sa-cloudscheduler.iam.gserviceaccount.com),点击右侧的编辑图标
      3. 点击添加角色,在搜索框输入Cloud Run Invoker并选中该角色
      4. 点击保存完成配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:52:53