如何为 HTTP 触发器验证 google 云函数?

How to authenticate google cloud function for HTTP trigger?

我有一个函数应用程序托管在我的 GCP 项目中,并且启用了身份验证。 此应用程序将根据事件从 Jfrog 容器注册表 Webhook 触发。

我在这里面临的问题是 authenticate/authorize HTTP 请求。我尝试使用“Authorization: bearer”header,效果很好。但是该令牌似乎会在 60 分钟后过期。

问:authorize/authenticate 云函数 HTTP 请求是否有永久的方式(没有过期)? Jfrog webhooks 无法以编程方式创建令牌,因为它是一个简单的 HTTP POST 触发器,可以接受额外的 headers.

我发现很难从 GCP 文档中找到解决方案。我确实有使用“roles/cloudfunctions.invoker”角色创建的服务帐户。

关于 Jfrog artifactory webhooks 的参考:https://www.jfrog.com/confluence/display/JFROG/Webhooks

正是出于这个原因,我写道 article. It's based on ESPv2 and Cloud Run, but API Gateway 是该技术堆栈的托管版本。原理和OpenAPI spec是一样的。

该解决方案将安全级别从短期令牌 (1h) 降级为长期令牌(无限制)。但是你可以使用 API 网关来确保 API 密钥检查和查询转发。

一个更简单的模式是删除对 Cloud Functions 的身份验证检查(并使其成为 public)并在您的函数中执行 API 键(实际上是随机字符串比较)本身。


在这两种情况下,API 都可以 public 访问(API 网关或云功能),并且在 DDoS 攻击的情况下,没有任何东西可以保护您的服务(和你的钱)。设置正确的 Cloud Functions Max 实例以防止出现意外情况。