首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Cloud Scheduler在尝试运行Cloud run作业时权限被拒绝

Cloud Scheduler在尝试运行Cloud run作业时权限被拒绝
EN

Stack Overflow用户
提问于 2021-08-11 17:26:43
回答 2查看 624关注 0票数 0

我已经创建了一个简单的Cloud Run作业。我可以通过curl命令触发此代码:

代码语言:javascript
运行
复制
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" https://sync-<magic>.a.run.app

(显然是其他的东西)

为Ingress配置了Cloud Run,以允许所有流量,并要求进行身份验证。

我遵循了以下文档:https://cloud.google.com/run/docs/triggering/using-scheduler

并创建了一个服务帐户,授予它Cloud Run Invoker角色,然后设置一个HTTP调度作业,以获得我使用CURL测试的相同URL。我已经选择了Add OIDC Token,并且我提供了上面创建的服务帐户和受众,这与我在curl中使用的URL相同。

当我尝试触发此作业时(或当它基于本机cron触发时),它会失败,并显示以下错误:

代码语言:javascript
运行
复制
{ "status": "PERMISSION_DENIED", "@type": "type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished", "targetType": "HTTP", "jobName": "projects/<project>/locations/<region>/jobs/sync", "url": "https://sync-<magic>.a.run.app/" }

再说一次,并且有真正的价值。

我尝试使用YOUR_PROJECT_NUMBER适当更新的service-YOUR_PROJECT_NUMBER@gcp-sa-cloudscheduler.iam.gserviceaccount.com作为运行计划作业的服务帐户。它也有同样的错误。

任何关于如何调试它的建议都将不胜感激!

EN

Stack Overflow用户

发布于 2021-09-13 14:28:44

以下是我所做的事情,完全解决了这个问题,现在我通过Cloud Scheduler作业运行安全的云运行服务时,得到了success标志。

  1. 在云运行时创建您的服务-让我们将其命名为"allUsers“,并通过从权限主体列表中删除”allUsers“权限来保护它-当您转到终结点时会出现错误-错误:禁止您的客户端没有从此服务器获取URL /的权限。
  2. 为云计划程序创建一个IAM服务帐户-让我们将其称为" Cloud - scheduler”您将看到这个: cloud-scheduler@project-ID.iam.gserviceaccount.com现在是重要的部分:
  3. 给您的SA通过添加以下命令,可以运行调度程序作业-

Cloud Run Invoker & Cloud Scheduler Job Runner permissions

  • Create您的云调度器作业,并根据google procedure添加新的SA : Auth header: add OIDC token service account: cloud-scheduler@project-id.iam.gserviceaccount.com Audience:https://Service.url.from.cloud.run.service/

  • Add到您的云运行服务将允许您的SA访问cloud run invoker

运行你的调度程序,瞧--全是绿色的!尽情享受

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68746496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档