你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
与大多数 Azure 平台即服务 (PaaS) 服务一样,默认情况下可以从 Internet 访问 Azure Web 应用和函数应用。 如果要限制到 Web 应用或函数应用的入站流量,Azure 提供了两个内置选项:访问限制和专用终结点。
如果使用访问限制,可以通过定义允许和拒绝规则列表来配置资源的内部防火墙。 可以基于 IP 地址(IPv4 和 IPv6)或服务标记进行限制,也可以使用服务终结点来限制访问。 使用服务终结点时,只有来自所选子网和虚拟网络的流量可以访问应用。 使用访问限制不会产生任何费用,并且所有 Azure 应用程序服务和 Azure Functions 计划中都提供此选项。 但访问限制存在一些缺点。 维护允许和拒绝规则可能具有挑战性。 此外,若要允许第三方使用你的服务,你需要在允许规则中列出其 IP 地址。 一些第三方服务具有动态 IP,并且一些组织将 IP 地址视为敏感信息。
第二个内置选项(专用终结点)通过 Azure 专用链接为专用网络中的客户端提供对应用的安全访问。 专用终结点使用 Azure 虚拟网络地址空间的 IP 地址。 专用网络中的客户端与应用之间的网络流量将通过虚拟网络以及 Microsoft 主干网络上的专用链接。 使用此解决方案就不会将信息公开到公共 Internet。 还可以使用专用终结点在 Azure 租户之间建立临时连接。 具体而言,可以创建安全的站点到点虚拟专用网 (VPN) 隧道。 隧道可以从一个租户中的使用者虚拟网络运行到另一个租户中的 Azure Web 应用或函数应用。 使用此方法就无需设置和维护站点到站点 VPN 或虚拟网络对等互连。
本指南介绍使用专用终结点选项的体系结构。 专用终结点将一个租户中的 Azure Web 应用安全地公开到使用另一个 Azure 租户中的应用的客户端。 如果你有针对 Functions 的高级或应用程序服务计划,还可以对函数应用使用此方法。
体系结构
下载此体系结构的 Visio 文件。
数据流
- 虚拟机 (VM) 上的用户或服务在
webapp.azurewebsites.net上提交针对 Azure Web 应用的 DNS 请求。 Web 应用在提供商租户中运行。 - Azure 公共 DNS 服务处理针对
webapp.azurewebsites.net的查询。 响应为 CNAME 记录webapp.privatelink.azurewebsites.net。 - Azure DNS 专用区域处理针对
webapp.privatelink.azurewebsites.net的 DNS 查询。 - 响应是包含专用终结点 IP 地址的 A 记录。
- VM 通过专用终结点 IP 地址向 Azure Web 应用发出 HTTPS 请求。
- Web 应用处理该请求并响应 VM。
- 如果用户或服务无权访问专用 DNS 区域,Azure 公共 DNS 服务将通过返回公共 IP 地址将 DNS 查询解析为
webapp.privatelink.azurewebsites.net。 针对该公共 IP 地址的 HTTPS 请求会收到“403 禁止访问”响应。
组件
- 应用服务 及其 Web 应用功能提供用于生成、部署和缩放 Web 应用程序的托管平台。 在此体系结构中,Web 应用在提供程序租户中托管应用程序,并通过专用终结点进行保护以限制公共访问。
- Functions 是事件驱动的无服务器计算服务。 在此体系结构中,Functions 可用作 Web 应用的替代方法。 函数也通过专用终结点进行保护,以确保跨租户访问保持专用。
- Azure 虚拟网络 是 Azure 中的基础网络层,可实现 Azure 资源、Internet 和本地网络之间的安全通信。 在此体系结构中,虚拟网络托管专用终结点和 DNS 区域,从而促进提供程序和使用者租户之间的安全连接。
- 专用链接 通过将服务终结点映射到虚拟网络中的专用 IP 地址,实现 Azure 服务和虚拟网络之间的安全专用连接。 可以使用专用终结点连接到 Azure PaaS 服务,或者连接到客户或合作伙伴服务。 在此体系结构中,专用链接安全地向另一个租户公开 Web 应用或函数应用,而无需遍历公共 Internet。
- Azure DNS 是一种可缩放的 DNS 托管服务,它使用 Azure 基础结构提供名称解析。 Azure DNS 专用服务管理和解析虚拟网络和连接的虚拟网络中的域名。 此服务不需要配置自定义 DNS 解决方案。 在此体系结构中,Azure DNS 处理公共 DNS 查询,并与专用 DNS 区域集成以解析专用终结点地址。
- Azure DNS 专用区域 允许虚拟网络中的 DNS 解析,而无需向公共 Internet 公开记录。 在此体系结构中,专用 DNS 区域管理专用终结点的内部名称解析,这可确保租户内部和跨租户进行安全准确的路由。
- Azure 虚拟机 提供可缩放的计算资源来运行应用程序和服务。 在此体系结构中,使用者租户中的 VM 通过专用终结点向提供程序的 Web 应用发起 DNS 和 HTTPS 请求。
提供程序安装程序
第一步是在拥有 Azure Web 应用的租户中保护该应用。 目标是确保 Web 应用在公共 Internet 上不再可用。 可以通过在 Azure Web 应用上创建专用终结点来实现此目标。
Web 应用和函数应用在与专用终结点相关联后立即无法公开访问。 如果想要再次启用公共访问,可以通过访问限制设置执行此操作。 将其他 Azure 服务与专用终结点相关联后,它们仍可公开可用。 要使这些服务不可访问,需要额外的访问控制。
激活专用终结点之前,请准备好可在其中部署专用终结点的 NIC 的虚拟网络和子网。 此步骤使用子网的 IP 地址。 此外,请定义 DNS 策略。 需要在 DNS 区域中注册 NIC 的 A 记录。
如果使用 Azure 默认提供的 DNS 服务,建议使用 Azure DNS 专用区域服务,并允许在创建专用终结点期间自动集成。 此方法可确保:
- 系统会根据需要自动创建专用 DNS 区域 (
privatelink.azurewebsites.net)。 - DNS 区域链接到专用终结点的 NIC 的虚拟网络。
- A 记录是在专用 DNS 区域中自动注册和管理的。
- 系统会根据需要自动创建专用 DNS 区域 (
如果不使用 Azure 默认提供的 DNS 服务,则必须配置和管理你自己的 DNS 服务器和区域:
- 创建
privatelink.azurewebsites.netDNS 区域。 - 请确保可以在需要解析专用终结点的 NIC 的虚拟网络中解析
privatelink.azurewebsites.net。 - 使用专用终结点的 IP 地址在
privatelink.azurewebsites.netDNS 区域中注册 A 记录。 - 根据设置,可能需要配置 DNS 转发器来解析 Azure DNS 公用区域
azurewebsites.net。
有关详细信息,请参阅 Azure 专用终结点 DNS 配置。
- 创建
在这两种情况下,在创建专用终结点期间,Azure DNS 公用区域 (azurewebsites.net) 都会使用指向专用 DNS 区域的 CNAME 记录自动更新。 用户可以尝试从无法解析专用 DNS 区域的源访问 Web 应用,以检索实际的 A 记录及其内部 IP 地址。 这些用户获取可解析的公共 IP 地址,但响应为“403 禁止访问”。
使用者设置
下一步是使另一个租户中的客户端能够访问提供商的 Azure Web 应用。 使用者启动此设置。 激活连接需要提供商的手动批准。
步骤 1(使用者):创建专用终结点
在使用者端,设置过程的第一步是创建专用终结点资源。 与提供商一样,使用者需要准备好可在其中部署专用终结点的 NIC 的虚拟网络和子网。 此步骤使用子网的 IP 地址。 该虚拟网络的专用 IP 范围没有限制。 提供商和使用者租户中的 IP 范围是可重叠的。
使用者不具有目标资源,因此必须使用提供商租户中 Azure Web 应用的完整资源 ID。 该资源 ID 包含提供商的订阅 ID、资源组名称和 Azure Web 应用资源名称。 因此,建议提供商采用安全的方式与使用者共享此信息。 目前无法使用别名。 某些 Azure 资源有多个子资源。 例如, Azure 存储资源 具有 Blob、 表、 队列、 文件、 Web 和 dfs 子资源。 提供商还必须提供有关子资源的信息。 Azure Web 应用和函数应用只有一个子资源,即 sites。 有关专用终结点子资源及其值的详细信息,请参阅专用链接资源。 由于专用终结点的连接不会自动获得批准,因此使用者可以提供消息以供提供商读取。
无法自动执行 DNS 区域集成设置。 因此,使用者需要手动配置 DNS 记录,如步骤 3 中所述。
创建专用终结点资源后,连接状态为“挂起”。 在提供商批准请求之前,连接会一直处于这种不可用状态。
步骤 2(提供商):查看和批准连接请求
提供商不会收到有关存在挂起的专用终结点连接请求的通知。 使用者需要在发出请求时通知提供商。
提供商可以在 Azure 门户中的以下任一位置检索、审查并批准或拒绝挂起的请求:
- 在“专用链接中心”页上。 审批者可以在此页上输入审批消息。
- 在 Web 应用的“网络”边栏选项卡上,选择“专用终结点”。
或者,提供商可以使用 Azure CLI 或 Azure PowerShell 来检索、审查并批准或拒绝挂起的请求。
提供商可以读取创建专用终结点时提供的消息。 提供商还可以查看使用者为专用终结点提供的名称。 在 Azure CLI 和 Azure PowerShell 中,还提供了使用者的租户 ID、资源组名称和专用终结点资源名称。 Azure 门户在一定程度上隐藏了此信息 - 它创建指向使用者专用终结点的超链接。 由于使用者位于不同的租户中,因此提供商通常无法访问。
无法自动执行批准专用终结点连接的过程。 相比之下,借助专用链接,可以使用自动审批属性预先批准一组订阅,以便自动访问服务。
步骤 3(使用者):DNS 设置
在步骤 1 中创建专用终结点资源后,可以立即执行本部分中的步骤。 但为了避免重复任务,我们建议你等待提供商批准连接。
使用者需要设置和配置专用 DNS 区域,以确保其客户端可以找到专用终结点的 NIC。 与提供商一样,租户中的 DNS 策略确定必需步骤。
如果使用者使用 Azure 默认提供的 DNS 服务,建议使用 Azure DNS 专用区域服务。 使用者可根据需要创建专用 DNS 区域
privatelink.azurewebsites.net,并将其链接到包含专用终结点的 NIC 的虚拟网络。 对于此 DNS 区域,不需要自动注册。 下一步是让使用者添加新的 DNS 配置:- 在 Azure 门户中,搜索并选择专用终结点。
- 打开“DNS 配置”边栏选项卡。
- 选择专用 DNS 区域并提供连接名称以添加新的 DNS 配置。
这些操作会在专用 DNS 区域中创建 A 记录。 批准连接时,会自动填充 FQDN。
如果使用者管理其自己的 DNS 区域,则使用者需要按照前面提供商设置中所述配置其环境。
在本指南的体系结构中,使用者 VM 使用专用终结点访问 Azure Web 应用。 只要连接获得批准且 DNS 已正确配置,就可以立即进行该访问。
连接管理
创建和批准专用终结点连接后,提供程序和使用者都可以对其进行管理。
- 使用者可以直接通过专用终结点资源、“专用链接中心”页、Azure CLI 或 Azure PowerShell 移除连接。 生成者无需参与。
- 提供商可以通过 Azure Web 应用的“网络”边栏选项卡、Azure CLI 或 Azure PowerShell 移除与其服务的连接。 删除专用终结点后,将阻止使用者访问服务。 使用者会看到专用终结点上的连接状态为“已断开连接”,并且 DNS 记录已从专用 DNS 区域中移除。 使用者需要手动删除专用终结点资源。
无法暂时暂停或禁用连接。 使用者或提供商删除连接后,你必须创建新的专用终结点来恢复连接。
成本优化
与免费访问限制相比,对于提供商和使用者而言,专用终结点可产生固定成本和可变成本。
固定成本
可变成本
VM 未包含在此定价概述中,因为它们不是体系结构的绝对要求。
其他注意事项
- 提供商需要与使用者共享订阅 ID、资源组名称和 Azure Web 应用资源名称。 同样,使用者需要与提供商共享订阅 ID、资源组名称和专用终结点资源名称。
- 可以在订阅中创建的专用终结点的数量存在限制。 但是,由于专用终结点是在使用者订阅中创建的,因此该限制应该不是问题。 有关详细信息,请参阅 Azure 订阅和服务限制、配额与约束。
- 包含专用链接资源的订阅必须注册到 Micosoft.Network 资源提供程序。 包含专用终结点的订阅也必须注册到 Micosoft.Network 资源提供程序。 有关详细信息,请参阅 Azure 资源提供程序和类型。
- 如果遇到连接问题,请参阅排查 Azure 专用终结点连接问题。 具体而言,请验证 DNS 配置。
部署此方案
有关包含可用于部署此体系结构的 Bicep 模板的 GitHub 存储库,请参阅项目“通过专用终结点跨租户安全访问 Azure Web 应用和 Azure Functions”。
作者
本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。
主要作者:
- Robbie De Sutter | 数字云解决方案架构师
其他参与者:
- Rajkumar (Raj) Balakrishnan | 数字云解决方案架构师
若要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。
后续步骤
- 适用于 Azure 专用链接的 Azure RBAC 权限
- 将存储帐户限制到虚拟网络中(适用于 Functions)
- Microsoft Azure 架构良好的框架 - 安全性
- 设置 Azure 应用程序服务访问限制
- 为 Azure Web 应用使用专用终结点
- Azure Functions 网络选项
- 什么是专用终结点?
- 管理 Azure 专用终结点
- Azure 专用终结点 DNS 配置
- 多租户和 Azure 专用链接