Azure专用链接在多租户环境中的应用指南
Azure专用链接在多租户环境中的应用指南
Azure专用链接为Azure平台服务以及托管在Azure虚拟机上的应用程序提供专用IP寻址。本文将详细介绍如何为Azure托管的多租户解决方案配置专用链接,包括重叠IP地址空间、服务选择、限制、与面向公众的服务相结合、隔离模型以及支持多租户的Azure专用链接的功能。
本文内容
Azure专用链接为Azure平台服务以及托管在Azure虚拟机上的你自己的应用程序提供专用IP寻址。可以使用专用链接从租户的Azure环境启用专用连接。当租户通过虚拟专用网络网关(VPN网关)或ExpressRoute进行连接时,还可以使用专用链接从其本地环境访问解决方案。
许多大型SaaS提供商都使用Azure专用链接,包括Snowflake、Confluent Cloud以及MongoDB Atlas。本文介绍如何为Azure托管的多租户解决方案配置专用链接。
关键注意事项
重叠IP地址空间
专用链接为多租户解决方案提供了强大的功能,租户可以通过专用地址空间访问服务。不同的租户经常使用相同的或重叠的专用IP地址空间。例如,多租户解决方案可能使用10.1.0.0/16的IP地址空间。假设租户A使用具有相同IP地址空间的自己的本地网络,巧合租户B也使用相同的IP地址空间。你便无法直接连接网络或将网络对等互连,因为IP地址范围重叠。
使用专用链接启用从每个租户到多租户解决方案的连接时,每个租户的流量会自动应用网络地址转换(NAT)。每个租户都可以在其各自的网络中使用专用IP地址,流量以透明方式流向多租户解决方案。专用链接对流量执行NAT,即使租户和服务提供商都使用重叠的IP地址范围:
当流量到达多租户解决方案时,它已被转换。这意味着流量似乎源自多租户服务自己的虚拟网络IP地址空间。专用链接提供TCP代理协议v2功能,使多租户服务能够知道发送请求的租户,甚至源网络中的原始IP地址。
服务选择
使用专用链接时,请务必考虑希望允许入站连接的服务。Azure专用链接服务与标准负载均衡器后面的虚拟机配合使用。还可以将专用链接与其他Azure服务配合使用。这些服务包括应用程序托管平台,如Azure应用服务。它们还包括Azure应用程序网关或Azure API管理,它们是网络和API网关。
你使用的应用程序平台决定了专用链接配置的许多方面,以及适用的限制。此外,某些服务不支持入站流量的专用链接。查看Azure服务的文档,以了解其对专用链接的支持情况。
限制
请仔细考虑可以根据解决方案的体系结构创建专用终结点的数量。如果使用平台即服务(PaaS)应用程序平台,请务必注意单个资源可以支持的最大专用终结点数。如果运行虚拟机,可以将专用链接服务实例附加到标准负载均衡器(SLB)。在此配置中,通常可以连接更多专用终结点,但限制仍适用。这些限制可能决定了你可以使用专用链接连接到资源的租户数量。查看Azure订阅和服务限制、配额和约束以了解终结点和连接数的限制。
此外,某些服务需要专用网络配置才能使用专用链接。例如,如果将专用链接与Azure应用程序网关配合使用,除了应用程序网关资源的标准子网之外,还必须预配专用子网。
在启用专用链接配置的情况下,仔细测试解决方案,包括部署和诊断配置。在某些Azure服务上启用专用终结点时,将阻止公共Internet流量。此行为可能要求更改部署和管理过程。
专用链接与面向公众的服务相结合
您可以选择将解决方案同时部署为面向互联网的,并通过专用终结点公开的。例如,某些租户可能需要专用连接,而另一些租户则依赖于公共Internet连接。考虑整个网络拓扑以及每个租户的流量所遵循的路径。
当解决方案基于标准负载均衡器后面的虚拟机时,可以通过专用链接服务公开终结点。在这种情况下,Web应用程序防火墙和应用程序路由可能已是基于虚拟机的工作负荷的一部分。
许多Azure PaaS服务都支持专用链接进行入站连接,即使在不同的Azure订阅和Microsoft Entra租户之间也是如此。可以使用该服务的专用链接功能来公开终结点。
使用其他面向Internet的服务(如Azure Front Door)时,请务必考虑它们是否支持入站流量的专用链接。如果不支持,请考虑流量如何流经解决方案的每个路径。
例如,假设你生成一个面向Internet的应用程序,该应用程序在虚拟机规模集上运行。使用Azure Front Door(包括其Web应用程序防火墙(WAF))来实现安全性和流量加速,并将Front Door配置为通过专用终结点将其流量发送到后端(源)服务。租户A使用公共终结点连接到解决方案,租户B使用专用终结点进行连接。由于Front Door不支持用于传入连接的专用链接,因此租户B的流量会绕过Front Door及其WAF:
隔离模型
专用链接旨在支持多个单独的客户端(例如租户)可以使用单个应用程序层的场景。当考虑为专用链接进行隔离时,主要关注的是必须部署多少资源来支持你的需求。可用于专用链接的租户隔离模型取决于所使用的服务。
专用链接服务的隔离模型
如果您在标准负载均衡器后面的虚拟机中使用私有链路服务,则可以考虑几种隔离模型。
注意事项 | 共享专用链接服务和共享负载均衡器 | 专用专用链接服务和专用负载均衡器 | 专用专用链接服务和共享负载均衡器 |
---|---|---|---|
部署复杂性 | 低 | 中高,具体取决于租户数 | 中高,具体取决于租户数 |
操作复杂性 | 低 | 中高,具体取决于资源数量 | 中高,具体取决于资源数量 |
需要考虑的限制 | 同一专用链接服务上的专用终结点数 | 每个订阅的专用链接服务数 | 每个标准负载均衡器的专用链接服务数 |
示例方案 | 具有共享应用程序层的大型多租户解决方案 | 每个租户的单独部署标记 | 单个标记中的共享应用程序层,其中包含大量租户 |
在所有三个模型中,数据隔离和性能级别取决于解决方案的其他元素,专用链接服务部署不会对这些因素产生重大影响。
共享专用链接服务和共享标准负载均衡器
可以考虑部署连接到标准负载均衡器的共享专用链接服务。每个租户都可以创建专用终结点,并使用它连接到解决方案。单个专用链接服务实例支持大量专用终结点。如果耗尽了限制,则可以部署更多专用链接服务实例,不过,在单个负载均衡器上部署的专用链接服务数量也有限制。如果希望接近这些限制,请考虑使用基于部署标记的方法,并将共享负载均衡器和专用链接服务实例部署到每个标记中。
专用专用链接服务和每个租户的专用标准负载均衡器
可以为每个租户部署专用链接服务和专用负载均衡器。当你为每个租户配置一组专用的虚拟机时,例如当租户有严格的合规性要求,此方法是有意义的。
每个租户的专用链接服务和共享的标准负载均衡器
还可以使用共享的标准负载均衡器为每个租户部署专用链接服务实例。但是,此模型不太可能带来很大的好处。此外,由于可以在单个标准负载均衡器上部署的专用链接服务的数量有限制,因此此模型不太可能扩展到小型多租户解决方案之外。
更常见的是,可以部署多个共享专用链接服务。通过此方法,可以扩展解决方案可在一个共享负载均衡器上支持的专用终结点数量。
具有专用终结点的Azure PaaS服务的隔离模型
部署Azure平台即服务(PaaS)服务并希望让租户能够使用专用终结点访问这些服务时,请考虑特定服务的功能和约束。此外,请考虑应用程序层资源是专用于特定租户,还是它们是否在租户之间共享。
如果为每个租户部署一组专用的应用程序层资源,则可能为该租户部署一个专用终结点来访问其资源。你不太可能耗尽任何与专用链接相关的服务限制,因为每个租户都有自己专用的资源。
在租户之间共享应用程序层资源时,可以考虑为每个租户部署专用终结点。可以附加到单个资源的专用终结点数量有限制,并且每个服务的限制不同。
支持多租户的Azure专用链接的功能
专用链接具有多个在多租户环境中有用的功能。但是,可用的特定功能取决于所使用的服务。虚拟机和负载均衡器的基础Azure专用链接服务支持下面介绍的所有功能。具有专用链接支持的其他服务可能仅提供这些功能的子集。
服务别名
当租户使用专用链接配置对服务的访问权限时,他们需要能够识别服务,以便Azure能够建立连接。通过专用链接服务以及其他与专用链接兼容的Azure服务,可配置别名以提供给租户。通过使用别名,可以避免泄露Azure订阅ID和资源组名称。
服务可见性
使用专用链接服务可以控制专用终结点的可见性。如果所有Azure客户知道其别名或资源ID,则可以允许所有Azure客户连接到服务。或者,可以限制对一组已知Azure客户的访问。
你还可以指定一组预先批准Azure订阅ID,这些ID可以连接到你的专用终结点。如果选择使用此方法,请考虑如何收集和授权订阅ID。例如,可以在应用程序中提供管理用户界面来收集租户的订阅ID。然后,可以动态重新配置专用链接服务实例,以预先批准连接的订阅ID。
接入审批
在客户端(如租户)和专用终结点之间请求连接后,专用链接要求批准该连接。在连接获得批准之前,流量无法流经专用终结点连接。
专用链接服务支持多种类型的审批流,包括:
- 手动审批,此时团队将显式批准每个连接。只有少数租户通过专用链接使用服务时,这种方法是可行的。
- 基于API的审批,其中专用链接服务将连接视为需要手动审批,应用程序使用更新专用终结点连接API、Azure CLI或Azure PowerShell批准连接。如果拥有已授权使用专用终结点的租户列表,此方法非常有用。
- 自动审批,此时将由专用链接服务本身维护应自动批准自身连接的订阅ID列表。
有关详细信息,请参阅控制服务访问。
代理协议v2
使用专用链接服务时,默认情况下,应用程序只能查看已通过网络地址转换(NAT)的IP地址。此行为意味着流量似乎从自己的虚拟网络中流动。
通过专用链接,可以在租户的虚拟网络中访问原始客户端IP地址。此功能使用TCP代理协议v2。
例如,假设租户的管理员需要添加基于IP地址的访问限制,例如主机10.0.0.10可以访问该服务,但主机10.0.0.20无法。使用代理协议v2时,可以让租户在应用程序中配置这些类型的访问限制。但是,应用程序代码需要检查客户端的原始IP地址并强制实施限制。
相关资源
- 来自提供商(SaaS ISV)和消费者观点的Azure专用链接服务说明和演示:一个视频,介绍Azure专用链接服务功能,该功能可实现多租户服务提供商(例如构建SaaS产品的独立软件供应商)。此解决方案使使用者能够使用使用者自己的Azure虚拟网络中的专用IP地址访问提供程序的服务。
- 使用Azure专用链接服务的TCP代理协议v2—深入探讨:这是一段深入探讨Azure专用链接服务的高级功能,即TCP代理协议v2的视频。它在多租户和SaaS方案中非常有用。视频介绍如何在Azure专用链接服务中启用代理协议v2。它还演示如何将NGINX服务配置为读取原始客户端(而不是NAT IP)的源专用IP地址,以通过专用终结点访问该服务。
- 使用NGINX Plus从Azure专用链接服务解码代理协议TLV:视频介绍如何使用NGINX Plus从Azure专用链接服务获取TCP代理协议v2 TLV。该视频演示如何提取和解码专用终结点连接的数值(也称为LINKID)。此解决方案对于需要识别建立连接的特定使用者租户的多租户提供商很有用。
- SaaS专用连接模式:一个示例解决方案,演示了使用Azure托管应用程序自动批准专用终结点连接的一种方法。