Cloud Scheduler 调用 Cloud Run 服务的身份验证

Posted

技术标签:

【中文标题】Cloud Scheduler 调用 Cloud Run 服务的身份验证【英文标题】:Authentication for Cloud Scheduler calling Cloud Run service 【发布时间】:2019-10-30 09:25:25 【问题描述】:

我有一个 Cloud Run 服务来执行一些后台任务,我需要它每 15 分钟执行一次。

我正在使用完全符合我需要的 Cloud Scheduler 作业每 15 分钟调用一次 HTTP 端点,但我还想设置身份验证以避免外部调用。

在作业配置页面中,它允许我添加身份验证标头,但我无法设置 OAuth 令牌,因为服务端点不被视为 Google 服务(它不以“googleapis.com”结尾)。

我应该如何处理 Cloud Scheduler - Cloud Run 身份验证?

【问题讨论】:

【参考方案1】:

Cloud Run 通过验​​证 OIDC 令牌而不是 OAuth 令牌进行身份验证。

有关如何设置 Cloud Scheduler,请参阅此文档: https://cloud.google.com/scheduler/docs/http-target-auth

【讨论】:

【参考方案2】:

如果你define your Cloud Scheduler job via the CLI 你可以手动specify headers that you could use for authentication。

这允许比 OIDC 和 OAuth 更轻量级的解决方案。

【讨论】:

这实际上是我当时最终做的,标记为接受的答案。

以上是关于Cloud Scheduler 调用 Cloud Run 服务的身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Cloud Run 完成,但 Cloud Scheduler 认为该作业已失败

GCP Cloud Scheduler 为 HTTP 目标类型抛出错误

如果我的 Google Cloud Scheduler 作业失败,如何发送电子邮件提醒?

使用 Cloud Scheduler 触发 Cloud Functions 的 HTTP

尝试运行 Cloud Run 作业时,Cloud Scheduler 的权限被拒绝

Cloud Run 和 Cloud Scheduler - 在完整数据集上获取失败结果