你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

多租户和 Azure 专用链接

Azure 专用链接为 Azure 平台服务以及托管在 Azure 虚拟机上的你自己的应用程序提供专用 IP 寻址。 可以使用专用链接从租户的 Azure 环境启用专用连接。 当租户通过虚拟专用网络网关(VPN 网关)或 ExpressRoute 进行连接时,租户还可以使用专用链接从其本地环境访问你的解决方案。

Azure 专用链接由许多大型 SaaS 提供商(包括 SnowflakeConfluent CloudMongoDB Atlas)使用。

本文介绍如何为 Azure 托管的多租户解决方案配置专用链接。

重要注意事项

IP 地址空间重叠

专用链接为多租户解决方案提供强大的功能,租户可以在其中通过专用地址空间访问服务。

不同的租户经常使用相同的或重叠的专用 IP 地址空间。 例如,多租户解决方案可能使用 10.1.0.0/16 的 IP 地址空间。 假设租户 A 通过相同的 IP 地址空间使用自己的本地网络,巧合的是租户 B 也使用相同的 IP 地址空间。 你便无法直接连接网络或将网络对等互连,因为 IP 地址范围重叠。

使用专用链接启用从每个租户到多租户解决方案的连接时,每个租户的流量都会自动应用网络地址转换 (NAT)。 每个租户都可以在各自的网络中使用专用 IP 地址,流量以透明方式流向多租户解决方案。 专用链接对流量执行 NAT,即使租户和服务提供商都使用重叠的 IP 地址范围:

显示两个租户和一个多租户服务之间的连接的示意图,它们全都使用相同的 IP 地址空间。

当流量到达多租户解决方案时,它已被转换。 这意味着流量似乎源自多租户服务自己的虚拟网络 IP 地址空间。 专用链接提供 TCP 代理协议 v2 功能,使多租户服务能够知道发送请求的租户,甚至是来自源网络的原始 IP 地址。

服务选择

使用专用链接时,请务必考虑希望允许入站连接的服务。

Azure 专用链接服务与标准负载均衡器后面的虚拟机配合使用。

还可以将专用链接与其他 Azure 服务配合使用。 这些服务包括应用程序托管平台,如 Azure 应用服务。 还包括 Azure 应用程序网关或 Azure API 管理,它们是网络和 API 网关。

你使用的应用程序平台决定了专用链接配置的许多方面以及适用的限制。 此外,某些服务不支持入站流量的专用链接。 查看用于了解其专用链接支持的 Azure 服务的文档。

限制

根据解决方案体系结构,仔细考虑可以创建的专用终结点的数量。 如果使用平台即服务 (PaaS) 应用程序平台,请务必了解单个资源可以支持的专用终结点的最大数量。 如果运行虚拟机,则可以将专用链接服务实例附加到标准负载均衡器 (SLB)。 在此配置中,通常可以连接更多专用终结点,但仍然存在限制。 这些限制可能决定了你可以使用专用链接连接到资源的租户数量。 查看 Azure 订阅和服务限制、配额和约束,了解终结点和连接数的限制。

此外,某些服务需要专门的网络配置才能使用专用链接。 例如,如果将专用链接与 Azure 应用程序网关配合使用,则除了应用程序网关资源的标准子网外,还必须预配专用子网

在启用专用链接配置的情况下,仔细测试解决方案,包括部署和诊断配置。 在某些 Azure 服务上启用专用终结点时,公共 Internet 流量将被阻止。 此行为可能要求您更改部署和管理过程。

可以选择将解决方案部署为既面向 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 Front Door 以及绕过 Front Door 的专用终结点发出的请求的示意图。

隔离模型

专用链接旨在支持多个单独的客户端(例如租户)可以使用单个应用程序层的场景。 考虑为专用链接实现隔离时,主要关注的是必须部署多少资源来支持需求。 可用于专用链接的租户隔离模型取决于所使用的服务。

如果将专用链接服务与标准负载均衡器后面的虚拟机配合使用,则可以考虑几种隔离模型。

注意事项 共享专用链接服务和共享负载均衡器 专用专用链接服务和专用负载均衡器 专用专用链接服务和共享负载均衡器
部署复杂性 中高,具体取决于租户数 中高,具体取决于租户数
操作复杂性 中高,具体取决于资源数量 中高,具体取决于资源数量
要考虑的限制 同一专用链接服务上的专用终结点数 每个订阅的专用链接服务数 每个标准负载均衡器的专用链接服务数
示例方案 具有共享应用程序层的大型多租户解决方案 每个租户的单独部署标记 单个标记中的共享应用程序层,其中包含大量租户

在所有三个模型中,数据隔离级别和性能取决于解决方案的其他元素,专用链接服务部署不会对这些因素产生实质性影响。

可以考虑部署连接到标准负载均衡器的共享专用链接服务。 每个租户都可以创建专用终结点,并使用它连接到解决方案。

单个专用链接服务实例支持大量专用终结点。 如果耗尽了限制,可以部署更多专用链接服务实例,尽管在单个负载均衡器上可以部署专用链接服务的数量也有限制。 如果希望接近这些限制,请考虑使用基于部署标记的方法,并将共享负载均衡器和专用链接服务实例部署到每个标记中。

可以为每个租户部署专用的专用链接服务和专用负载均衡器。 如果为每个租户提供一组专用的虚拟机(例如租户具有严格的合规性要求时),此方法非常有用。

还可以使用共享标准负载均衡器为每个租户部署专用专用链接服务实例。 但是,此模型不太可能带来多大好处。 此外,由于可以在单个标准负载均衡器上部署的专用链接服务数有限,因此模型不太可能扩展到小型多租户解决方案之外。

更常见的是,可以部署多个共享专用链接服务。 通过此方法,可以扩展解决方案可在一个共享负载均衡器上支持的专用终结点数。

具有专用终结点的 Azure PaaS 服务的隔离模型

部署 Azure 平台即服务 (PaaS) 服务并希望租户能够使用专用终结点访问这些服务时,需要考虑特定服务的功能和约束。 此外,需要考虑应用程序层资源是专用于特定租户,还是在租户之间共享。

如果为每个租户部署一组专用的应用程序层资源,则有可能可为该租户部署一个专用终结点来访问其资源。 你不太可能耗尽任何与专用链接相关的服务限制,因为每个租户都有自己专用的资源。

在租户之间共享应用程序层资源时,可以考虑为每个租户部署专用终结点。 可以附加到单个资源的专用终结点的数量是有限制的,并且这些限制对于每个服务都是不同的。

专用链接有几个功能,在多租户环境中非常有用。 但是,可用的特定功能取决于所使用的服务。 用于虚拟机和负载均衡器的基础 Azure 专用链接服务支持下面描述的所有功能。 其他支持专用链接的服务可能只提供这些功能的一部分。

服务别名

当租户使用专用链接配置对服务的访问权限时,他们需要能够识别服务,以便 Azure 可以建立连接。

通过专用链接服务以及其他与专用链接兼容的 Azure 服务,可配置别名以提供给租户。 通过使用别名,可以避免披露 Azure 订阅 ID 和资源组名称。

服务可见性

使用专用链接服务可以控制专用终结点的可见性。 如果 Azure 客户知道其别名或资源 ID,则可以允许所有客户连接到服务。 或者可将访问限制到仅限一组已知的 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 专用链接服务说明和演示:一段视频,介绍了支持多租户服务提供商(例如构建 SaaS 产品的独立软件供应商)的 Azure 专用链接服务功能。 此解决方案让使用者能够使用自己的 Azure 虚拟网络的专用 IP 地址访问提供者的服务。
  • 带有 Azure 专用链接服务的 TCP 代理协议 v2 - 深入探讨:一段视频,深入探讨了 TCP 代理协议 v2,这是 Azure 专用链接服务的高级功能。 在多租户和 SaaS 方案中都非常有用。 这段视频向你展示了如何在 Azure 专用链接服务中启用代理协议 v2。 它还向你展示了如何配置 NGINX 服务以读取原始客户端的源专用 IP 地址(而不是 NAT IP),以通过专用终结点访问服务。
  • 使用 NGINX Plus 解码来自 Azure 专用链接服务的代理协议 TLV linkIdentifier:一段视频,介绍如何使用 NGINX Plus 从 Azure 专用链接服务获取 TCP 代理协议 v2 TLV,然后。 该视频演示如何提取和解码专用终结点连接的数字 linkIdentifier(也称为 LINKID)。 此解决方案对于需要识别建立连接的特定使用者租户的多租户提供商很有用。
  • SaaS 专用连接模式:一个示例解决方案,说明了使用 Azure 托管应用程序自动批准专用终结点连接的一种方法。

作者

本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。

主要作者:

其他参与者:

若要查看非公开领英个人资料,请登录领英。

后续步骤

查看多租户的网络方法