api-key - 使用 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 密钥。
有什么我想念的吗?
解决方案
Cloud Run 与 GCP 中的许多产品一样,不支持 API Key 授权。如您提供的链接中所述,只有一部分服务使用 API KEY。还提到:
API 密钥不会识别发出 API 请求的用户或应用程序,因此您不能限制对特定用户或服务帐户的访问。
Cloud Run 身份验证部分在此处指定此内容
默认情况下,所有 Cloud Run 服务都是私有部署的,这意味着如果不在请求中提供身份验证凭据,就无法访问它们。
顺便说一句,Cloud Run 期望和 API Key 功能不兼容。
但是,如果您想使用 API 密钥访问您的 Cloud Run 私有服务,则存在一种解决方法。您可以在另一个 Cloud Run 服务上部署可扩展服务代理 (ESP) 。在其中验证 API 密钥,如果有效,则使用 ESP 的 ServiceAccount(必须具有角色/run.invoke 角色)调用 Cloud Run 私有服务。
推荐阅读
- java - 如何将瞬态字段写入 Android 中的文件?
- sql - SQL 查询结果和 SSRS 结果不匹配
- amazon-web-services - 根据角色获取 PermissionsBoundary
- java - 单个浏览器中的多个会话
- java - 如何修复不显示应用程序图标到应用程序抽屉?
- javascript - 选择每个不同类的第一个兄弟
- javascript - 如何在路由器导航中发送数组?
- pandas - 将字典列表字符串转换为数据框
- amazon-web-services - How do you measure the energy consumption of an EC2 instance ?
- swift - Swift:“Self”(请求)类型的 Alamofire 值没有成员“responseJSON”扩展