为 Azure 应用服务应用使用专用终结点

注意

从 2024 年 6 月 1 日开始,新创建的应用服务应用可以生成使用命名约定 <app-name>-<random-hash>.<region>.azurewebsites.net 的唯一默认主机名。 例如: myapp-ds27dh7271aah175.westus-01.azurewebsites.net。 现有应用名称保持不变。

有关详细信息,请参阅 有关创建具有唯一默认主机名的 Web 应用的博客文章

可以将专用终结点用于 Azure 应用服务应用。 专用终结点允许位于专用网络的客户端通过 Azure 专用链接安全地访问应用。 专用终结点使用 Azure 虚拟网络地址空间的 IP 地址。 专用网络上的客户端与应用之间的网络流量通过虚拟网络和Microsoft主干网络上的专用链接。 此配置消除了暴露在公共互联网的风险。

为应用使用专用终结点时,可以:

  • 确保应用安全,在配置专用终结点并禁用公共网络访问时,避免公共暴露。
  • 从使用 VPN 或 ExpressRoute 专用对等互连连接到虚拟网络的本地网络安全地连接到应用。
  • 避免从虚拟网络泄露任何数据。

重要

专用终结点适用于托管在以下应用服务计划上的 Windows 和 Linux 应用(无论是否容器化):基本、标准、PremiumV2、PremiumV3、IsolatedV2、Functions 高级(有时称为“弹性高级”计划)。

概念概述

专用终结点是虚拟网络子网中应用服务应用的网络接口。

为应用创建专用终结点时,它会在专用网络上的客户端与应用之间提供安全连接。 从虚拟网络的 IP 地址范围为专用终结点分配 IP 地址。 专用终结点与应用之间的连接使用安全的 专用链接。 专用终结点仅用于传入应用程序的流量。 传出流量不使用专用终结点。 可以通过虚拟网络集成功能将传出流量注入到你的网络中的另一个子网。

应用的每个槽都将进行单独配置。 对于每个槽最多可以使用 100 个专用终结点。 不能在槽之间共享专用终结点。 槽的 subresource 名称为 sites-<slot-name>

用于插入专用终结点的子网中可以包含其他资源。 不需要专用的空子网。

你还可以在与应用不同的区域中部署专用终结点。

注意

虚拟网络集成功能不可使用与专用终结点相同的子网。

安全注意事项

专用终结点和公共访问可以在应用上共存。 有关详细信息,请参阅 此访问限制概述

为了确保隔离,在为应用启用专用终结点时,请务必禁用公用网络访问。 可以在其他虚拟网络和子网中启用多个专用终结点,包括其他区域中的虚拟网络。

应用的访问限制规则不会针对通过专用终结点的流量进行评估。 可以消除虚拟网络中的数据外泄风险。 删除目标为标记互联网或 Azure 服务的所有网络安全组 (NSG) 规则。

可以在应用的 Web HTTP 日志中找到客户端源 IP。 此功能是使用传输控制协议 (TCP) 代理实现的,该代理将客户端 IP 属性转发到应用。 有关详细信息,请参阅 使用 TCP 代理 v2 获取连接信息

显示应用服务专用终结点全局视图的图表。

DNS(域名系统)

对应用服务应用使用专用终结点时,请求的 URL 必须与应用的名称匹配,该名称默认 <app-name>.azurewebsites.net为 。 使用 唯一的默认主机名时,应用名称的格式为 <app-name>-<random-hash>.<region>.azurewebsites.net。 在以下示例中, mywebapp 还可以表示完整的区域化唯一主机名。

默认情况下,如果没有专用终结点,则 Web 应用的公共名称是群集的规范名称。 例如,名称解析是:

名称 类型 价值
mywebapp.azurewebsites.net CNAME clustername.azurewebsites.windows.net
clustername.azurewebsites.windows.net CNAME cloudservicename.cloudapp.net
cloudservicename.cloudapp.net A 192.0.2.13

部署专用终结点时,该方法会将域名系统 (DNS) 条目更新为指向规范名称:mywebapp.privatelink.azurewebsites.net。 例如,名称解析是:

名称 类型 价值 备注
mywebapp.azurewebsites.net CNAME mywebapp.privatelink.azurewebsites.net
mywebapp.privatelink.azurewebsites.net CNAME clustername.azurewebsites.windows.net
clustername.azurewebsites.windows.net CNAME cloudservicename.cloudapp.net
cloudservicename.cloudapp.net A 192.0.2.13 <--此公共 IP 不是您的专用终结点。 收到 403 错误。

必须设置专用 DNS 服务器或 Azure DNS 专用区域。 要进行测试,可以修改测试计算机的主机条目。 需要创建的 DNS 区域为:privatelink.azurewebsites.net。 使用 A 记录和专用终结点 IP 为应用注册记录。 使用 Azure 专用 DNS 区域组,DNS 记录会自动添加到专用 DNS 区域。

例如,名称解析是:

名称 类型 价值 备注
mywebapp.azurewebsites.net CNAME mywebapp.privatelink.azurewebsites.net <--Azure 在 Azure 公共 DNS 中创建此 CNAME 条目,将应用地址指向专用终结点地址。
mywebapp.privatelink.azurewebsites.net A 10.10.10.8 <--在 DNS 系统中管理此条目以指向专用终结点 IP 地址。

设置此 DNS 配置时,可以使用默认名称 mywebapp.azurewebsites.net私下访问应用。 必须使用此名称,因为为 *.azurewebsites.net 颁发了默认证书。

自定义域名

如果需要使用自定义域名,请在应用中添加自定义名称。 必须使用公共 DNS 解析来验证自定义名称(如任何自定义名称)。 有关详细信息,请参阅 自定义 DNS 验证

在自定义 DNS 区域中,需要更新 DNS 记录以指向专用终结点。 如果应用已为默认主机名配置 DNS 解析,则首选方法是为指向 mywebapp.azurewebsites.net 的自定义域添加 CNAME 记录。 如果只想将自定义域名解析为专用终结点,可以直接添加 A 具有专用终结点 IP 的记录。

Kudu/scm 终结点

例如,对于 Kudu 控制台或 Kudu REST API(用于使用 Azure DevOps Services 自承载代理进行部署),必须创建指向 Azure DNS 专用区域或自定义 DNS 服务器中的专用终结点 IP 的第二条记录。 第一个用于应用,第二个用于应用的 SCM(源代码管理)。 使用 Azure 专用 DNS 区域组时,会自动添加 scm 终结点。

名称 类型 价值
mywebapp.privatelink.azurewebsites.net A PrivateEndpointIP
mywebapp.scm.privatelink.azurewebsites.net A PrivateEndpointIP

应用服务环境 v3 特殊注意事项

要为托管在 IsolatedV2 计划(应用服务环境 v3)的应用启用专用终结点,请启用应用服务环境级别的专用终结点支持。 可以使用应用服务环境配置窗格中的 Azure 门户或通过以下 CLI 激活该功能:

az appservice ase update --name myasename --allow-new-private-endpoint-connections true

特定要求

如果虚拟网络与应用位于不同的订阅中,请确保包含虚拟网络的订阅已为 Microsoft.Web 资源提供程序进行注册。 若要显式注册提供程序,请参阅 “注册资源提供程序”。 在订阅中创建第一个 Web 应用时会自动注册该提供程序。

定价

有关定价详细信息,请参阅 Azure 专用链接定价

限制

  • 在具有专用终结点的弹性高级计划中使用 Azure 函数时,必须能够直接访问网络才能在 Azure 门户中运行该函数。 否则,你将收到 HTTP 403 错误。 你的浏览器必须能够访问专用终结点,以便从 Azure 门户运行该函数。
  • 最多可以将 100 个专用终结点连接到特定应用。
  • 远程调试功能无法通过专用终结点使用。 我们建议将代码部署到部署槽,并在那里进行远程调试。
  • FTP 访问是通过入站公共 IP 地址提供的。 专用终结点不支持对应用的 FTP 访问。
  • 专用终结点不支持基于 IP 的 TLS。
  • 使用专用终结点配置的应用无法接收来自启用了服务终结点的 Microsoft.Web 子网的公共流量,也不能使用 基于服务终结点的访问限制规则
  • 专用终结点的命名必须遵循为Microsoft.Network/privateEndpoints类型资源定义的规则。 有关详细信息,请参阅 命名规则和限制

有关限制的最新信息,请参阅本文档