封闭出站流量网络模式的架构基于,将本地环境或其他云环境中选定的 API 公开给在 Google Cloud中部署的工作负载。这样,您无需将这些数据从本地环境或其他云环境直接公开到公共互联网。您可使用充当现有工作负载外观 (facade) 的 API 网关、代理或负载均衡器来促进这种有限的公开。您可以在隔离的边界网络段(例如边界网络)中部署 API 网关功能。
受控出站网络模式主要适用于分层应用架构模式和分区应用架构模式,但不限于这些模式。在内部网络中部署后端工作负载时,门控出站网络有助于在您的本地计算环境中保持更高级别的安全性。该模式要求您以符合以下通信要求的方式连接计算环境:
- 您在 Google Cloud 中部署的工作负载可以使用内部 IP 地址与公开应用的 API 网关或负载均衡器(或 Private Service Connect 端点)进行通信。
- 无法直接从 Google Cloud内部访问私有计算环境中的其他系统。
- 不允许从私有计算环境到部署在 Google Cloud 中的任何工作负载的通信。
- 流量仅可从 Google Cloud 环境内部发送到其他环境中的私有 API。
本指南重点介绍通过私有混合网络连接的混合云和多云环境。如果贵组织的安全要求允许,您可以通过互联网直接访问具有公共 IP 地址的远程目标 API 的 API 调用。但您必须考虑以下安全机制:
- 采用传输层安全协议 (TLS) 的 API OAuth 2.0。
- 速率限制。
- 威胁防范政策。
- 向 API 层的后端配置双向 TLS。
- IP 地址许可名单过滤功能已配置为仅允许双方与预定义的 API 来源和目的地进行通信。
如需保护 API 代理,请考虑以下其他安全方面。如需了解详情,请参阅使用 Apigee 保护应用和 API 的最佳实践。
架构
下图展示了支持上一部分中列出的通信要求的参考架构:
数据按以下方式流经上图:
- 在 Google Cloud 端,您可以将工作负载部署到虚拟私有云 (VPC) 中。VPC 可以是单个 VPC,也可以是多个 VPC(共享或非共享)。部署应与贵组织的项目和资源层次结构设计相符。
- Google Cloud 环境的 VPC 网络会扩展到其他计算环境。这些环境可以是本地环境,也可以是其他云环境。如需使用内部 IP 地址支持环境之间的通信,请使用合适的混合云和多云网络连接。
如需限制来自特定 VPC IP 地址且目的地为远程网关或负载平衡器的流量,请使用 IP 地址许可名单过滤。使用有状态的防火墙规则时,系统会允许来自这些连接的返回流量。您可以将以下功能任意组合使用,以确保通信安全并将其限制为仅与允许的来源和目的地 IP 地址通信:
具有新一代防火墙 (NGFW) 检查功能的网络虚拟设备 (NVA),放置在网络路径中。
具有入侵防御服务 (IPS) 的 Cloud Next Generation Firewall Enterprise,可实现深度数据包检测,以防范威胁。
所有环境共享无重叠的 RFC 1918 IP 地址空间。
变体
封闭出站流量架构模式可与其他方法结合使用以满足不同的设计要求,同时仍顾及该模式的通信要求。此模式提供以下选项:
使用 Google Cloud API Gateway 和全局前端
采用这种设计方法时,API 公开和管理位于Google Cloud中。如上图所示,您可以通过将 Apigee 实现为 API 平台来实现此目的。是否要在远程环境中部署 API 网关或负载均衡器取决于您的具体需求和当前配置。Apigee 提供两种预配连接选项:
- 使用 VPC 对等互连
- 不使用 VPC 对等互连
Google Cloud Cloud Load Balancing、Cloud CDN(通过 Cloud Interconnect 访问时)和跨云互连等全球前端功能可提高用户访问在本地环境和其他云环境中托管后端的应用的速度。
通过从 Google Cloud 接入点 (PoP) Google Cloud 分发这些应用,可优化内容传送速度。这些接入点遍布全球 180 多个互联网交换中心以及 160 多个互连设施。
如需了解在将 Apigee 与 Cloud CDN 搭配使用来实现以下目标时,POP 如何帮助提供高性能 API,请观看 YouTube 上的使用 Apigee 和 Cloud CDN 提供高性能 API:
- 缩短延迟时间。
- 在全球范围内托管 API。
- 提高高峰流量的可用性。
上图中所示的设计示例基于不使用 VPC 对等互连的 Private Service Connect。
此设计中的北向网络是通过以下方式建立的:
- 负载均衡器(图中的 LB),客户端请求会终止在此处,负载均衡器会处理流量,然后将其路由到 Private Service Connect 后端。
- Private Service Connect 后端可让 Google Cloud 负载均衡器使用 Private Service Connect 网络端点组 (NEG) 通过与提供方服务连接关联的 Private Service Connect 连接将客户端请求发送到已发布服务(Apigee 运行时实例)。
南向网络通过以下方式建立:
- 引用与客户 VPC 中的内部负载均衡器(图中的 ILB)关联的服务连接的 Private Service Connect 端点。
ILB 是与混合连接网络端点组(混合连接 NEG)一起部署的。
通过混合网络连接(例如 VPN 或 Cloud Interconnect)访问混合服务时,需要通过混合连接 NEG 进行访问。
如需了解详情,请参阅设置具有混合连接的区域级内部代理网络负载平衡器和 Private Service Connect 部署模式。
使用 Private Service Connect 公开远程服务
在以下场景中,您可以使用 Private Service Connect 选项公开远程服务:
- 您不使用 API 平台,或者出于以下原因,您希望避免将整个 VPC 网络直接连接到外部环境:
- 您有安全限制或合规性要求。
- 您有 IP 地址范围重叠的情况,例如在合并和收购场景中。
- 即使截止期限较短,也能在各个环境中实现客户端、应用和服务之间的安全单向通信。
- 您可能需要通过服务提供方 VPC(中转 VPC)提供与多个使用方 VPC 的连接,以提供高度可伸缩的多租户或单租户服务模型,以便访问其他环境中已发布的服务。
将 Private Service Connect 用于作为 API 使用的应用可为已发布的应用提供内部 IP 地址,以便跨区域和通过混合连接在专用网络中实现安全访问。这种抽象化有助于通过混合云和多云连接模型来集成来自各种云和本地环境的资源。您可以使用 Private Service Connect 发布服务,以精细控制的访问权限加速应用集成并安全地公开位于本地环境或其他云环境中的应用。在这种情况下,您可以使用以下选项:
- 引用区域级内部代理网络负载平衡器或内部应用负载平衡器的服务附件。
- 负载均衡器在提供方 VPC(在此设计中充当中转 VPC)中使用混合网络端点组(混合连接 NEG)。
在上图中,应用 VPC 网络中的工作负载可以通过 Private Service Connect 端点访问在本地环境或其他云环境中运行的混合服务,如下图所示。这种单向通信设计选项是与中转 VPC 对等互连的替代方案。
在上图的设计中,多个前端、后端或端点可以连接到同一个服务连接,从而允许多个 VPC 网络或多个使用方访问同一个服务。如下图所示,您可以让应用可供多个 VPC 访问。这种可访问性在多租户服务场景中非常有用,在这种场景中,您的服务会被多个使用方 VPC 使用,即使其 IP 地址范围重叠也是如此。
在集成位于不同环境中的应用时,IP 地址重叠是最常见的问题之一。下图中的 Private Service Connect 连接有助于避免 IP 地址重叠问题。无需预配或管理任何其他网络组件(例如 Cloud NAT 或 NVA)即可执行 IP 地址转换。如需查看示例配置,请参阅使用 Private Service Connect 发布混合服务。
此设计具有以下优势:
- 避免潜在的共享伸缩依赖项和大规模复杂的管理性。
- 通过提供精细的连接控制,提高安全性。
- 减少服务提供方和使用方与远程外部环境之间的 IP 地址协调。
上图中的设计方法可以在后续阶段扩展,以便使用之前讨论的网络设计选项(包括 Private Service Connect 选项)将 Apigee 集成为 API 平台。
您可以使用 Private Service Connect 全球访问权限,让 Private Service Connect 端点可从其他区域访问。
连接到 Private Service Connect 端点的客户端可以位于端点所在的区域,也可以位于其他区域。此方法可用于为托管在多个区域的服务提供高可用性,或从其他区域访问单个区域中提供的服务。当其他区域托管的资源访问 Private Service Connect 端点时,区域间出站流量费用会应用于目的地为具有全球访问权限的端点的流量。
最佳做法
- 将 Apigee 和 Apigee Hybrid 作为 API 平台解决方案有诸多好处。它为后端服务 API 提供了代理层以及抽象或 Facade,并结合了安全功能、速率限制、配额和分析。
- 在适用于您的要求和架构的情况下,将 Apigee Adapter for Envoy 与使用 Kubernetes 的 Apigee Hybrid 部署架构(如适用)搭配使用。
- Google Cloud 中的 VPC 和项目设计应遵循您的资源层次结构和安全通信模型要求。
- 使用 API 网关的 API 时,您还应使用 IP 地址许可名单。许可名单可限制通信,仅允许与 API 使用方和 API 网关(可能托管在不同环境中)的特定 IP 地址源和目的地进行通信。
- 使用 VPC 防火墙规则或防火墙政策通过 Private Service Connect 端点控制对 Private Service Connect 资源的访问。
- 如果应用通过应用负载平衡器公开到外部,不妨考虑使用 Google Cloud Armor 作为额外的安全层,以防范 DDoS 攻击和应用层安全威胁。
如果实例需要访问互联网,请在应用(使用方)VPC 中使用 Cloud NAT 以允许工作负载访问互联网。这样,您就可以避免在 API 网关或负载均衡器后方部署的系统中为虚拟机实例分配外部公共 IP 地址。
查看混合云和多云网络模式的一般最佳实践。