如何对 api 网关以外的所有人隐藏我的 public 微服务?
How to hide my public microservices from everyone except the api gateway?
我在 google 云 运行 上部署了容器化服务。该应用程序由一些微服务和一个 api 网关组成。由于 google 云 运行 提供 public 个端点,我所有的微服务都是 public。我只想将 api 网关设置为 public,其余服务只能作为反向代理通过网关访问。如何在 public 眼中隐藏微服务?来自 api 网关以外任何地方的请求都应该被拒绝。
您可以在您的微服务前面添加一个API网关并激活微服务的安全性。
只有网关将被授权访问您的微服务,所有其他请求,即使端点是 public 也会被 Google 前端丢弃(我的意思是,它是 Google 层,您无需为此支付任何费用)。
作为API 网关,您可以使用云端点等。 I wrote an article on this to access to secure backend with a simple API Key。在你的情况下,你可以停用 API 密钥安全,你将拥有一个 public API 网关,只有网关才能访问私有服务
编辑
对于您的情况,您不需要 API 密钥。只需删除安全定义(在文件末尾)并且不要将 security:
定义放入后端定义(或全局)。
然后
- 在 public 云 运行 上部署云端点。这个 URL 是 public,任何人都可以到达它,无需 API 键
- 以私有模式(IAP 后面的 AppEngine)部署您的后端服务(Cloud 运行、Cloud Functions)。这次只能通过经过身份验证和授权的帐户访问此服务。
- 授予 Cloud Endpoint 服务帐户访问后端服务(Cloud Functions 的云函数调用程序,Cloud 运行 Cloud 的调用程序 运行,AppEngine 的 IAP Web 安全访问)
最后,只有 Cloud Endpoint 服务帐户被授权访问您的后端。
我在 google 云 运行 上部署了容器化服务。该应用程序由一些微服务和一个 api 网关组成。由于 google 云 运行 提供 public 个端点,我所有的微服务都是 public。我只想将 api 网关设置为 public,其余服务只能作为反向代理通过网关访问。如何在 public 眼中隐藏微服务?来自 api 网关以外任何地方的请求都应该被拒绝。
您可以在您的微服务前面添加一个API网关并激活微服务的安全性。
只有网关将被授权访问您的微服务,所有其他请求,即使端点是 public 也会被 Google 前端丢弃(我的意思是,它是 Google 层,您无需为此支付任何费用)。
作为API 网关,您可以使用云端点等。 I wrote an article on this to access to secure backend with a simple API Key。在你的情况下,你可以停用 API 密钥安全,你将拥有一个 public API 网关,只有网关才能访问私有服务
编辑
对于您的情况,您不需要 API 密钥。只需删除安全定义(在文件末尾)并且不要将 security:
定义放入后端定义(或全局)。
然后
- 在 public 云 运行 上部署云端点。这个 URL 是 public,任何人都可以到达它,无需 API 键
- 以私有模式(IAP 后面的 AppEngine)部署您的后端服务(Cloud 运行、Cloud Functions)。这次只能通过经过身份验证和授权的帐户访问此服务。
- 授予 Cloud Endpoint 服务帐户访问后端服务(Cloud Functions 的云函数调用程序,Cloud 运行 Cloud 的调用程序 运行,AppEngine 的 IAP Web 安全访问)
最后,只有 Cloud Endpoint 服务帐户被授权访问您的后端。