封闭入站流量

Last reviewed 2023-12-14 UTC

封闭入站流量模式的架构基于,将 Google Cloud 中运行的工作负载的选定 API 公开给私有计算环境,但不向公共互联网公开。此模式与封闭出站流量模式相对应,非常适合边缘混合分层混合分区多云场景。

与封闭出站流量模式一样,您可以使用充当现有工作负载或服务外观 (facade) 的 API 网关或负载均衡器来促进这种有限的公开。这样,就可以从私有计算环境、本地环境或其他云环境访问相应的工作负载或服务,具体如下所示:

  • 部署在私有计算环境或其他云环境中的工作负载可以使用内部 IP 地址与 API 网关或负载均衡器进行通信。无法访问部署在 Google Cloud 中的其他系统。
  • 不允许从 Google Cloud 到私有计算环境或其他云环境的通信。流量仅可从私有环境或其他云环境发送到 Google Cloud 中的 API。

架构

下图展示了满足封闭入站流量模式要求的参考架构。

数据从本地环境或云端通过 Cloud VPN 或 Cloud Interconnect 单向流入 Google Cloud 环境,并最终流入工作负载。

上图中架构的说明如下:

  • 在 Google Cloud 端,您将工作负载部署到应用 VPC(或多个 VPC)中。
  • Google Cloud 环境网络通过使用混合或多云网络连接来扩展到其他计算环境(本地或其他云),以促进环境之间的通信。
  • (可选)您可以使用中转 VPC 来实现以下目的:
    • 提供额外的边界安全层,以允许访问应用 VPC 之外的特定 API。
    • 将流量路由到 API 的 IP 地址。您可以创建 VPC 防火墙规则,以防止某些来源通过端点访问特定 API。
    • 通过集成网络虚拟设备 (NVA) 检查中转 VPC 中的第 7 层流量。
  • 通过 API 网关或负载均衡器(代理或应用负载均衡器)访问 API 以提供代理层,并为您的服务 API 提供抽象层或外观。如果您需要将流量分发到多个 API 网关实例,可以使用内部直通式网络负载均衡器
  • 使用通过 Private Service Connect 的负载均衡器公开应用或服务,以针对通过 Private Service Connect 端点访问已发布服务的方式提供精细控制的有限访问权限。
  • 所有环境都应使用一个无重叠的 RFC 1918 IP 地址空间。

下图说明了此模式的设计,使用 Apigee 作为 API 平台。

本地或云环境的数据通过 Cloud VPN 或 Cloud Interconnect 流入 Google Cloud 环境,并发送到 Apigee 实例中的项目。

在上图中,使用 Apigee 作为 API 平台提供了以下特性和功能来实现封闭入站流量模式:

  • 网关或代理功能
  • 安全功能
  • 速率限制
  • 分析

在该设计中:

  • 北向网络连接(对于来自其他环境的流量)通过与 Apigee VPC 关联的应用 VPC 中的 Private Service Connect 端点。
  • 在应用 VPC 中,内部负载均衡器用于通过 Apigee VPC 中提供的 Private Service Connect 端点公开应用 API。如需了解详情,请参阅停用了 VPC 对等互连的架构
  • 在应用 VPC 中配置防火墙规则和流量过滤。这样可以提供精细的受控访问机制。它还可帮助阻止系统不通过 Private Service Connect 端点和 API 网关而直接访问您的应用。

    此外,您还可以将应用 VPC 中后端工作负载的内部 IP 地址子网的通告限制为本地网络,以避免不通过 Private Service Connect 端点和 API 网关直接访问。

某些安全要求可能需要在应用 VPC 之外进行边界安全检查,包括混合连接流量。在这种情况下,您可以加入中转 VPC 来实现一个额外的安全层。这些层(例如具有多个网络接口的下一代防火墙 [NGFW] NVA 或具有入侵防御服务 (IPS) 的 Cloud Next Generation Firewall Enterprise)会在应用 VPC 外部执行深度数据包检测,如以下图所示:

本地或云环境的数据通过 Cloud VPN 或 Cloud Interconnect 流入 Google Cloud 环境,并发送到应用中。

如上图所示:

  • 北向网络连接(对于来自其他环境的流量)通过单独的中转 VPC 流向与 Apigee VPC 关联的中转 VPC 中的 Private Service Connect 端点。
  • 在应用 VPC 中,内部负载均衡器(图中的 ILB)用于通过 Apigee VPC 中的 Private Service Connect 端点公开应用。

您可以在同一 VPC 网络中预配多个端点,如下图所示。如需覆盖不同的应用场景,您可以使用 Cloud Router 路由器和 VPC 防火墙规则来控制可能的不同网络路径。例如,如果您使用多个混合网络连接将本地网络连接到 Google Cloud,则可以通过一个连接将部分流量从本地发送到特定 Google API 或已发布的服务,并通过另一个连接发送其余流量。此外,您还可以使用 Private Service Connect 全球访问权限来提供故障切换选项。

本地或云环境的数据通过 Cloud VPN 或 Cloud Interconnect 流入 Google Cloud 环境,并通过多个 Private Service Connect 端点发送到多个提供方 VPC。

变体

封闭入站流量架构模式可与其他方法结合使用以满足不同的设计要求,同时仍顾及该模式的通信要求。此模式提供以下选项:

从其他环境访问 Google API

对于需要访问 Google 服务(如 Cloud Storage 或 BigQuery),但又不希望通过公共互联网发送流量的场景,Private Service Connect 提供了一种解决方案。如下图所示,它支持使用 Private Service Connect 端点的 IP 地址,从本地或其他云环境通过混合网络连接访问受支持的 Google API 和服务(包括 Google 地图、Google Ads 和 Google Cloud)。如需详细了解如何通过 Private Service Connect 端点访问 Google API,请参阅通过端点访问 Google API 的简介

数据从本地环境流入 Google Cloud 环境,进入 Google 服务。

在上图中,您的本地网络必须使用 Cloud VPN 隧道或 Cloud Interconnect VLAN 连接来连接到中转(使用方)VPC 网络。

您可以使用端点后端访问 Google API。端点可让您定位一组 Google API。后端可让您定位某个特定的区域级 Google API

使用 Private Service Connect 将应用后端公开给其他环境

在特定场景中(如分层混合模式重点介绍),您可能需要在 Google Cloud 中部署后端,同时在私有计算环境中保留前端。虽然此方法不太常见,但它适用于处理可能依赖于旧版组件的重量级单体式前端。适用此方法的一个更常见的场景是,跨多个环境(包括本地和其他云环境)管理分布式应用,需要通过混合网络连接到托管在 Google Cloud 中的后端。

在这种架构中,您可以在私有本地环境或其他云环境中使用本地 API 网关或负载均衡器,以直接将应用前端公开给公共互联网。在 Google Cloud 中使用 Private Service Connect 支持使用 Private Service Connect 端点通过私有连接来连接到公开的后端,最好使用预定义的 API,如下图所示:

数据从本地环境或其他云环境流入 Google Cloud 环境。数据流经非 Google Cloud 环境中的 Apigee 实例和前端服务,最终进入使用方项目应用 VPC。

上图中的设计使用 Apigee Hybrid 部署,其中包含 Google Cloud 中的管理平面和托管在其他环境中的运行时平面。您可以在本地环境或其他云环境中的某个受支持 Kubernetes 平台上安装和管理分布式 API 网关上的运行时平面。根据您对跨 Google Cloud 和其他环境的分布式工作负载的要求,您可以将 Apigee on Google Cloud 与 Apigee Hybrid 搭配使用。如需了解详情,请参阅分布式 API 网关

使用中心辐射型架构将应用后端公开给其他环境

在某些情况下,您可能需要公开托管在 Google Cloud 不同 VPC 网络中的应用后端的 API。如下图所示,hub VPC 作为各种 VPC(spoke) 的中心互连点,通过私有混合连接实现安全通信。您可以选择在其他环境中使用本地 API 网关功能(例如 Apigee Hybrid),以在托管应用前端的位置本地终结客户端请求。

数据在 Google Cloud 环境与本地环境或其他云环境之间流动,并公开托管在 Google Cloud 不同 VPC 网络中的应用后端的 API。

如上图所示:

  • 如需提供额外的 NGFW 第 7 层检查功能,可以选择在设计中集成具有 NGFW 功能的 NVA。您可能需要这些能力以满足组织的特定安全要求和安全政策标准。
  • 此设计假设 spoke VPC 不需要直接的 VPC 到 VPC 通信。

    • 如果需要进行 spoke 到 spoke 的通信,您可以使用 NVA 来促进此类通信。
    • 如果您在不同的 VPC 中拥有不同的后端,则可以使用 Private Service Connect 将这些后端公开给 Apigee VPC。
    • 如果使用 VPC 对等互连来实现 spoke VPC 与 hub VPC 之间的北向和南向连接,您需要考虑基于 VPC 对等互连的 VPC 网络的传递性限制。如需避开此限制,您可以使用以下任一选项:
      • 如需互连 VPC,请使用 NVA
      • 在适用的情况下,考虑使用 Private Service Connect 模型。
      • 如需在 Apigee VPC 与位于同一组织的其他 Google Cloud 项目中的后端之间建立连接,而不使用额外的网络组件,请使用共享 VPC
  • 如果需要使用 NVA 进行流量检查(包括来自其他环境的流量),则应在混合中转 VPC 上终结到本地环境或其他云环境的混合连接。

  • 如果设计不包含 NVA,您可以在 hub VPC 上终结混合连接。

  • 如果需要某些负载均衡功能或安全功能(例如添加 Google Cloud Armor DDoS 防护或 WAF),您可以选择通过外部 VPC 在边界处部署外部应用负载均衡器,然后再将外部客户端请求路由到后端。

最佳实践

  • 如果需要由托管在私有本地环境或其他云环境中的前端在本地接收来自互联网的客户端请求,请考虑使用 Apigee Hybrid 作为 API 网关解决方案。此方法还有助于将解决方案无缝迁移到完全由 Google Cloud 托管的环境,同时保持 API 平台 (Apigee) 的一致性。
  • 在适用于您的要求和架构的情况下,将 Apigee Adapter for Envoy 与使用 Kubernetes 的 Apigee Hybrid 部署架构(如适用)搭配使用。
  • Google Cloud 中的 VPC 和项目的设计应遵循本指南中所述的资源层次结构和安全通信模型要求。
  • 将中转 VPC 纳入此设计可让您灵活地在工作负载 VPC 之外提供额外的边界安全措施和混合连接。
  • 使用 Private Service Connect 通过混合连接网络使用端点的内部 IP 地址从本地环境或其他云环境访问 Google API 和服务。如需了解详情,请参阅从本地主机访问端点
  • 为了帮助保护项目中的 Google Cloud 服务并降低数据渗漏的风险,请使用 VPC Service Controls 在项目或 VPC 网络级层指定服务边界。
  • 使用 VPC 防火墙规则防火墙政策通过 Private Service Connect 端点控制对 Private Service Connect 资源的网络级访问。例如,应用(使用方)VPC 中的出站防火墙规则可以限制从虚拟机实例到端点的 IP 地址或子网的访问。如需详细了解 VPC 防火墙规则,请参阅 VPC 防火墙规则
  • 在设计包含 NVA 的解决方案时,请务必考虑 NVA 的高可用性 (HA),以避免可能阻止所有通信的单点故障。请遵循您的 NVA 供应商提供的高可用性和冗余设计及实现指南。如需详细了解如何在虚拟设备之间实现高可用性,请参阅 Google Cloud 上的集中式网络设备的“架构选项”部分
  • 如需增强边界安全性并保护部署在相应环境中的 API 网关,您可以选择在其他计算环境(混合云或其他云)中实现负载均衡和 Web 应用防火墙机制。请在直接连接到互联网的边界网络上实现这些选项。
  • 如果实例需要访问互联网,请在应用 VPC 中使用 Cloud NAT 以允许工作负载访问互联网。这样,您就可以避免在 API 网关或负载均衡器后方部署的系统中为虚拟机实例分配外部公共 IP 地址。
  • 对于出站网络流量,请使用安全 Web 代理。该代理具有多项优势

  • 查看混合云和多云网络模式的一般最佳实践