你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
多租户和 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
linkIdentifier
:视频介绍如何使用 NGINX Plus 从 Azure 专用链接服务获取 TCP 代理协议 v2 TLV。 该视频演示如何提取和解码专用终结点连接的数值linkIdentifier
(也称为LINKID
)。 此解决方案对于需要识别建立连接的特定使用者租户的多租户提供商很有用。 - SaaS 专用连接模式:一个示例解决方案,演示了使用 Azure 托管应用程序自动批准专用终结点连接的一种方法。
贡献者
本文由Microsoft维护。 它最初由以下参与者编写。
主要作者:
- 约翰·唐斯 |首席软件工程师
- 阿森·弗拉基米尔斯基 |Azure 的 FastTrack 首席客户工程师
其他参与者:
- Sumeet Mittal | Azure 专用链接首席产品经理
若要查看非公开领英个人资料,请登录领英。
后续步骤
查看多租户的网络方法。