1

我使用 opeanapi yaml 文件作为配置应用了 Google 的 API 网关,并收到了新的网关 URL。

我的问题是,如果原始 Cloud Run URL 仍可访问,网关的意义何在?

我可以对网关 URL 和 Cloud Run URL 进行完全相同的 Postman 调用,例如https://gateway.api.url.google.com/ordershttps://cloud.run.url.google.com/orders

我的假设(和希望)是网关 URL 现在是主 URL,并且对 Cloud Run URL 的任何请求都会被路由到 API 网关。任何人都可以对此有所了解吗?

4

1 回答 1

5

API 网关只是一个门户(实际上是网关),位于一个或多个 API 前面。API 网关的目标是将来自不同后端的 API 端点集中在一个地方,并为消费者提供一致的体验(安全性、域名......)

API 网关出现在几个后端之前,但无论如何都会改变这些后端的行为。因此,它们仍然可以通过 API 网关直接访问。


如果您不想要这个,我可以为您提供 2 个解决方案

  1. 将您的 Cloud Run 服务设置为私有(我的意思是使用参数部署它--no-allow-unauthenticated,或删除 allUsers 访问权限)。像这样,只有经过身份验证的请求者才能访问它。在 API Gateway 中,设置自定义服务帐户,并仅授予此服务帐户角色roles/run.invoker。最后,只有 API 网关才能调用 Cloud Run 服务。所有直接调用,无论是否经过身份验证,都将被拒绝,因为只有 API Gateway 有权访问它。

  2. 如果您的 API Gateway OpenApi 配置中没有特殊功能,您可以在 Cloud Run 服务前使用 HTTPS 负载均衡器。并将Cloud Run 入口参数设置为internal-and-cloud-load-balancing

于 2021-03-11T10:59:00.430 回答