首页 > 解决方案 > 使用 API 密钥在 Google Cloud Run 上获得 403 Forbidden

问题描述

我在 Google Cloud Run 上使用 Express 设置了一个非常简单的 Node 应用程序。

它很好用,但是当我使用“允许未经身份验证的调用 [service] (y/N)?”进行设置时 403 Forbidden即使我创建了一个 API 密钥并且我正在调用添加key=[My API key]到查询字符串中,我也得到了一个,如文档中所述。我的 URL 最终看起来像 https://service-wodkdj77sba-ew.a.run.app?key=[My API key].

我尝试过使用受限(用于 Google Cloud Run)和不受限制的 API 密钥。

有什么我想念的吗?

标签: api-keygoogle-cloud-run

解决方案


Cloud Run 与 GCP 中的许多产品一样,不支持 API Key 授权。如您提供的链接中所述,只有一部分服务使用 API KEY。还提到:

API 密钥不会识别发出 API 请求的用户或应用程序,因此您不能限制对特定用户或服务帐户的访问。

Cloud Run 身份验证部分在此处指定此内容

默认情况下,所有 Cloud Run 服务都是私有部署的,这意味着如果不在请求中提供身份验证凭据,就无法访​​问它们。

顺便说一句,Cloud Run 期望和 API Key 功能不兼容。

但是,如果您想使用 API 密钥访问您的 Cloud Run 私有服务,则存在一种解决方法。您可以在另一个 Cloud Run 服务上部署可扩展服务代理 (ESP) 。在其中验证 API 密钥,如果有效,则使用 E​​SP 的 ServiceAccount(必须具有角色/run.invoke 角色)调用 Cloud Run 私有服务。


推荐阅读