1

我正在构建一个微服务架构,我需要内部/外部通信方面的帮助。

我有部署在 GCP App Engine Flex 上的微服务,并且在它们前面有 GCP API 网关。API Gateway 使用通过服务帐户私钥签名的请求标头中发送的 JWT 令牌处理外部通信身份验证。

在 App Engine 上,我们已经配置了 Ingress(内部 + 负载均衡器),因此 App Engine 的 apppot URL 被外部阻止。每个服务都有启用 IAP 的负载均衡器,并且只有 API Gateway 的服务帐户具有 IAP-Secured Web App User 角色以将请求传递给 LB。

我的问题是:

  • GCP API Gateway 是否应该用于内部服务到服务的通信?
  • 由于我们在 App Engine 上启用了入口(内部 + 负载均衡器)并且 apppot URL 只能在 GCP 项目内部访问,这些 URL 可以用于内部服务到服务的通信吗?这是安全/推荐的方法吗?

上述 2 中哪一个非常适合管理安全通信的架构。另外,如果可能,请提出一些替代方案。

更新:为两种方法添加流程图

方法一 方法二

4

1 回答 1

1

如果使用 ingress internal + LB 进行内部通信,则意味着只有来自 VPC(当前项目)的流量或来自 LB(当前项目)的流量才能到达服务。请记住,即使您将流量设置为内部,IP 也始终可以公开访问。只需对流量来源进行额外检查。

如果您的项目中的 App Engine flex 上有其他服务,它应该使用 LB(可能)或 VPC(即使它是公共 URL,也将流量路由到 VPC -> Cloud Functions Cloud Run 可以实现最新案例和 App Engine 标准(出口控制功能,将所有流量路由到无服务器 VPC 连接器),但您不能使用弹性环境。

此外,API Gateway 只能访问公共 URL,因此您只能使用 LB 访问您的 App Engine flex,而不是“内部”VPC 流量。

于 2022-01-03T19:31:57.510 回答