如何在 App Engine 中设计通信
How to design communication in App Engine
我想使用 GCP App Engine 实现以下设置:
- 服务 A - 充当 API 网关,执行身份验证和授权
- 服务 B、C 和 D - 充当后端微服务。他们没有暴露在互联网上。此微服务的源代码不包含任何与授权或身份验证相关的逻辑。他们在知道请求来自其他受信任的微服务的情况下接受请求。
如何在 App Engine 中实现这样的设置?
原理是可以的,但不是完全相同的术语。
首先,您必须在您的服务A中激活IAP on AppEngine. Then, you have to define a custom service account。然后,仅授权该服务帐户通过IAM授权使用IAP访问服务B、C和D(授予IAP-secured web您的服务帐户上的用户角色)。
这样,只有服务A可以访问服务B、C、D,鉴权机制由App Engine环境执行。
你也可以想象一些更接近你想要的东西。你可以设置ingress on service B, C and D to internal only。这样,只允许来自您项目的 VPC 的请求。您的服务是内部服务。
但是,您的服务 A 不在您项目的 VPC 中,您必须通过 serverless VPC connector(最低费用为每月 17 美元)Google 云无服务器世界与您的 VPC 连接
但是,您的服务仍然公开暴露在互联网上。这不是问题,因为未经身份验证和未经授权(基于身份验证或网络来源)的流量会被 GFE(Google 前端)过滤并自动丢弃(您不会为不良流量付费)
我想使用 GCP App Engine 实现以下设置:
- 服务 A - 充当 API 网关,执行身份验证和授权
- 服务 B、C 和 D - 充当后端微服务。他们没有暴露在互联网上。此微服务的源代码不包含任何与授权或身份验证相关的逻辑。他们在知道请求来自其他受信任的微服务的情况下接受请求。
如何在 App Engine 中实现这样的设置?
原理是可以的,但不是完全相同的术语。
首先,您必须在您的服务A中激活IAP on AppEngine. Then, you have to define a custom service account。然后,仅授权该服务帐户通过IAM授权使用IAP访问服务B、C和D(授予IAP-secured web您的服务帐户上的用户角色)。
这样,只有服务A可以访问服务B、C、D,鉴权机制由App Engine环境执行。
你也可以想象一些更接近你想要的东西。你可以设置ingress on service B, C and D to internal only。这样,只允许来自您项目的 VPC 的请求。您的服务是内部服务。
但是,您的服务 A 不在您项目的 VPC 中,您必须通过 serverless VPC connector(最低费用为每月 17 美元)Google 云无服务器世界与您的 VPC 连接
但是,您的服务仍然公开暴露在互联网上。这不是问题,因为未经身份验证和未经授权(基于身份验证或网络来源)的流量会被 GFE(Google 前端)过滤并自动丢弃(您不会为不良流量付费)