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

专用应用程序网关部署(预览版)

介绍

从历史上看,应用程序网关 v2 SKU(有时为 v1)需要公共 IP 寻址才能启用服务管理。 此要求在网络安全组和路由表中使用精细控制方面施加了多项限制。 具体而言,已经观察到以下挑战:

  • 所有应用程序网关 v2 部署都必须包含面向公众的前端 IP 配置,才能与网关管理器服务标记进行通信。
  • 网络安全组关联要求规则允许来自 GatewayManager 的入站访问和对 Internet 的出站访问。
  • 引入默认路由 (0.0.0.0/0) 以转发 Internet 以外任何位置的流量时,网关的指标、监视和更新会导致失败状态。

应用程序网关 v2 现在可以解决其中每个项的问题,以进一步消除数据外泄和控制虚拟网络中通信隐私的风险。 这些更改包括以下功能:

  • 仅专用 IP 地址前端 IP 配置
    • 不需要公共 IP 地址资源
  • 通过网络安全组消除来自 GatewayManager 服务标记的入站流量
  • 能够定义“拒绝所有”出站网络安全组 (NSG) 规则以限制流出到 Internet 的流量
  • 能够替代到 Internet (0.0.0.0/0) 的默认路由
  • 通过虚拟网络上定义的解析程序进行 DNS 解析了解更多,包括专用链接,专用 DNS 区域。

每一项功能都可以独立配置。 例如,可以使用公共 IP 地址允许来自 Internet 的流量入站,并且可以在网络安全组配置中定义拒绝所有出站规则,防止数据外泄。

加入公共预览版

专用 IP 前端配置新控件的功能、通过 NSG 规则控制,以及通过路由表控制目前处于公共预览版阶段。 可以使用 Azure 门户、PowerShell、CLI 或 REST API 选择加入公共预览版进行体验。

加入预览版时,所有新应用程序网关都会预配以下能力:定义任意组合的 NSG、路由表或专用 IP 配置功能。 如果希望选择退出新功能并返回到当前应用程序网关的正式版本功能,可以取消注册预览版

有关预览功能的详细信息,请参阅在 Azure 订阅中设置预览功能

注册预览版

使用以下步骤通过 Azure 门户注册公共预览版,体验增强的应用程序网关网络控制:

  1. 登录 Azure 门户

  2. 在搜索框中,输入“订阅” 然后选择“订阅”。

    Azure 门户搜索的屏幕截图。

  3. 选择订阅名称的链接。

    选择 Azure 订阅的屏幕截图。

  4. 从左侧菜单的“设置”下,选择“预览功能” 。

    Azure 预览功能菜单的屏幕截图。

  5. 你会看到包含可用预览功能和当前注册状态的列表。

    Azure 门户预览功能列表的屏幕截图。

  6. 从“预览功能”键入筛选框 EnableApplicationGatewayNetworkIsolation,查看功能单击“注册”。

    Azure 门户筛选器预览功能的屏幕截图。

注意

功能注册从“正在注册”变为“已注册”状态可能需要 30 分钟。

有关预览功能的详细信息,请参阅在 Azure 订阅中设置预览功能

取消注册预览版

使用以下步骤通过 Azure 门户选择退出公共预览版,取消注册体验增强的应用程序网关网络控制:

  1. 登录 Azure 门户

  2. 在搜索框中,输入“订阅” 然后选择“订阅”。

    Azure 门户搜索的屏幕截图。

  3. 选择订阅名称的链接。

    选择 Azure 订阅的屏幕截图。

  4. 从左侧菜单的“设置”下,选择“预览功能” 。

    Azure 预览功能菜单的屏幕截图。

  5. 你会看到包含可用预览功能和当前注册状态的列表。

    Azure 门户预览功能列表的屏幕截图。

  6. 从“预览功能”键入筛选框 EnableApplicationGatewayNetworkIsolation,查看功能单击“取消注册”。

    Azure 门户筛选器预览功能的屏幕截图。

区域和可用性

专用应用程序网关预览版目前面向所有支持应用程序网关 v2 sku 的公共云区域开放注册。

网络控件的配置

注册加入公共预览版后,可以使用任意方法执行 NSG 配置、路由表,以及专用 IP 地址前端配置。 例如:REST API、ARM 模板、Bicep 部署、Terraform、PowerShell、CLI 或门户。 此公共预览版未引入 API 或命令更改。

资源更改

预配网关后,会自动为资源标记分配 EnhancedNetworkControl 的名称和为 True 的值。 请参阅以下示例:

EnhancedNetworkControl 标记的屏幕截图。

资源标记在外观上用于确认已为网关预配配置仅专用网关功能任意组合的功能。 修改或删除标记或值不会更改网关的任何功能工作。

提示

如果订阅中在功能启用前已部署现有的应用程序网关,则 EnhancedNetworkControl 可派出用场,并且希望区别哪个网关可以利用新功能。

应用程序网关子网

应用程序网关子网是将部署应用程序网关资源的虚拟网络中的子网。 在前端专用 IP 配置中,此子网必须以专用方式访问要连接到公开的应用或站点的资源。

出站 Internet 连接

仅包含专用前端 IP 配置的应用程序网关部署(不包含与请求路由规则关联的公共 IP 前端配置)无法流出以 Internet 为目标的流量。 此配置会影响与通过 Internet 公开访问的后端目标的通信。

若要启用应用程序网关的出站连接到面向后端目标的 Internet,可以利用“虚拟网络 NAT”或将流量转发到有权访问 Internet 的虚拟设备。

虚拟网络 NAT 提供对于应使用哪些 IP 地址或前缀,以及可配置空闲超时的控制权。 若要配置,请使用公共 IP 地址或公共前缀创建新的 NAT 网关,并将其与包含应用程序网关的子网关联。

如果 Internet 流出量需要虚拟设备,请参阅本文档的路由表控制一节。

需要公共 IP 使用的常见应用场景:

  • 不使用专用终结点或服务终结点与密钥保管库进行通信
    • 直接上传到应用程序网关的 pfx 文件不需要出站通信
  • 通过 Internet 与后端目标进行通信
  • 与面向 CRL 或 OCSP 终结点的 Internet 进行通信

网络安全组控制

与应用程序网关子网关联的网络安全组的 GatewayManager 不再需要入站规则,也不需要对 Internet 的出站访问。 唯一需要的规则是 Allow inbound from AzureLoadBalancer,以确保运行状况探测可以到达网关。

以下配置是最严格入站规则的示例,此套规则拒绝所有流量,但 Azure 运行状况探测除外。 除了定义的规则外,还明确定义了规则允许流量到达网关的侦听器。

入站安全组规则的屏幕截图。

注意

如果“DenyAll”规则无意间限制对于运行状况探测的访问,应用程序网关会显示警报要求确保指定 Allow LoadBalanceRule

示例方案

此示例逐步讲解如何使用 Azure 门户创建 NSG,并遵循以下规则:

  • 允许源自 Internet 的客户端请求通过端口 80 和 8080 将流量传入到应用程序网关
  • 拒绝所有其他入站流量
  • 允许出站流量到另一个虚拟网络中的后端目标
  • 允许出站流量到可以访问 Internet 的后端目标
  • 拒绝所有其他出站流量

首先,创建网络安全组。 此安全组包含入站和出站规则。

入站规则

该安全组中已经预配了三个入站默认规则。 请参阅以下示例:

默认安全组规则的屏幕截图。

接下来,创建以下四个新的入站安全规则:

  • 允许入站端口 80,tcp,来自 Internet(任何)
  • 允许入站端口 8080,tcp,来自 Internet(任何)
  • 允许来自 AzureLoadBalancer 的入站
  • 拒绝任何入站

若要创建以下规则,请执行以下操作:

  • 选择“入站安全规则
  • 选择“添加”
  • 在“添加入站安全规则”窗格中,为每个规则输入以下信息。
  • 输入信息后,选择“添加”创建规则。
  • 需要一些时间来创建每个规则。
规则 # 源服务标记 源端口范围 目标 服务 目标端口范围 协议 操作 优先级 名称
1 任意 * 任意 HTTP 80 TCP 允许 1028 AllowWeb
2 任意 * 任意 “自定义” 8080 TCP 允许 1029 AllowWeb8080
3 服务标记 AzureLoadBalancer * 任意 自定义 * 任意 允许 1045 AllowLB
4 任意 * 任意 自定义 * 任意 拒绝 4095 DenyAllInbound

选择“刷新”,即可在预配完成后查看所有规则。

入站安全组规则示例的屏幕截图。

出站规则

优先级为 65000、65001 和 65500 的三个默认出站规则已经预配。

创建以下三个新的出站安全规则:

  • 允许来自 10.10.4.0/24 的 TCP 443 传到后端目标 203.0.113.1
  • 允许来自源 10.10.4.0/24 的 TCP 80 传到目标 10.13.0.4
  • DenyAll 流量规则

为这些规则分配的优先级分别为 400、401 和 4096。

注意

  • 10.10.4.0/24 是应用程序网关子网地址空间。
  • 10.13.0.4 对等互连 VNet 中的计算机。
  • 203.0.113.1 是后端目标 VM。

若要创建以下规则,请执行以下操作:

  • 选择“出站安全规则
  • 选择“添加”
  • 在“添加出站安全规则”窗格中,为每个规则输入以下信息。
  • 输入信息后,选择“添加”创建规则。
  • 需要一些时间来创建每个规则。
规则 # Source 源 IP 地址/CIDR 范围 源端口范围 目标 目标 IP 地址/CIDR 范围 服务 目标端口范围 协议 操作 优先级 名称
1 IP 地址 10.10.4.0/24 * IP 地址 203.0.113.1 HTTPS 443 TCP 允许 400 AllowToBackendTarget
2 IP 地址 10.10.4.0/24 * IP 地址 10.13.0.4 HTTP 80 TCP Allow 401 AllowToPeeredVnetVM
3 任意 * 任意 自定义 * 任意 拒绝 4096 DenyAll

选择“刷新”,即可在预配完成后查看所有规则。

应用程序网关出站安全规则的屏幕截图。

将 NSG 关联到子网

最后一步是将网络安全组关联到包含应用程序网关的子网

将 NSG 关联到子网的屏幕截图。

结果:

NSG 概述的屏幕截图。

重要

定义 DenyAll 规则时要谨慎,因为可能会无意间拒绝来自想要允许访问的客户端的入站流量。 也有可能无意间拒绝出站流量传送到后端目标,导致后端出现运行状况异常,产生 5XX 响应。

路由表控制

在应用程序网关当前的产品/服务中,不支持路由表与被当作为包含下一个跃点作为虚拟设备的 0.0.0.0/0 的规则(或创建规则)进行关联,以确保妥善管理应用程序网关。

注册公共预览版功能后,可通过规定包含到虚拟设备的下一个跃点的 0.0.0.0/0 的路由表规则,将流量转发到虚拟设备。

强制通过隧道传递或通过 BGP 广告学习 0.0.0.0/0 路由,不会影响应用程序网关的运行状况,并且适用于流量流。 当使用的是 VPN、ExpressRoute、路由服务器或虚拟 WAN 时,适用此应用场景。

示例方案

在以下示例中,我们创建一张路由表并将其关联到应用程序网关子网,以确保来自该子网的出站 Internet 访问能够从虚拟设备上发出。 图 1 在高级别上总结了以下设计:

  • 应用程序网关位于分支虚拟网络中
  • 中心网络中有一台网络虚拟设备(虚拟机)
  • 包含指向该虚拟设备的默认路由 (0.0.0.0/0) 的路由表与应用程序网关子网关联

示例路由表的示意图。

图 1:通过虚拟设备的 Internet 访问流出量

如何创建路由表并将其关联到应用程序网关子网:

  1. 创建路由表

新创建的路由表的屏幕截图。

  1. 选择“路由”并为 0.0.0.0/0 创建下一个跃点规则,并将目标配置为虚拟机的 IP 地址:

将默认路由添加到网络虚拟设备的屏幕截图。

  1. 选择“子网”并将路由表关联到应用程序网关子网:

将路由关联到 AppGW 子网的屏幕截图。

  1. 验证流量是否通过虚拟设备传递。

限制/已知问题

公共预览版存在以下限制。

专用链接配置对于通过专用终结点通过隧道传递流量到应用程序网关,不支持仅专用网关。

WAF 速率限制

应用程序网关 WAF v2 的速率限制自定义规则目前不受支持。

仅包含 AGIC 的专用 IP 前端配置

AGIC v1.7 必须仅用于引入对专用前端 IP 的支持。

通过全局 VNet 对等互连的专用终结点连接

如果应用程序网关具有指向可通过全局 VNet 对等互连访问的 VNet 中的专用终结点的后端目标或密钥保管库,则会丢弃流量,导致出现运行不正常的状态。

网络观察程序集成

运行检查和诊断测试时,连接故障排查和 NSG 诊断会返回错误。

在启用增强的网络控制之前创建的共存 v2 应用程序网关

如果子网共享在启用增强的网络控制功能前后创建的应用程序网关 v2 部署,网络安全组 (NSG) 和路由表功能将受到之前网关部署的限制。 在启用新功能之前预配的应用程序网关必须要么重新预配,要么新创建的网关必须使用另一个子网来启用增强的网络安全组和路由表功能。

  • 如果子网中存在启用新功能之前部署的网关,则在添加路由表条目时可能会看到以下错误:For routes associated to subnet containing Application Gateway V2, please ensure '0.0.0.0/0' uses Next Hop Type as 'Internet'
  • 将网络安全组规则添加到子网时,可能会看到:Failed to create security rule 'DenyAnyCustomAnyOutbound'. Error: Network security group \<NSG-name\> blocks outgoing Internet traffic on subnet \<AppGWSubnetId\>, associated with Application Gateway \<AppGWResourceId\>. This isn't permitted for Application Gateways that have fast update enabled or have V2 Sku.

未知后端运行状况

如果后端运行状况为“未知”,则可能会看到以下错误:

  • 无法检索后端运行状况状态。 如果应用程序网关子网上的 NSG/UDR/防火墙阻止端口 65503-65534(如果是 v1 SKU)和端口 65200-65535(如果是 v2 SKU)上的流量,或后端池中配置的 FQDN 无法解析为 IP 地址时,将发生这种情况。 若要了解详细信息,请访问 - https://aka.ms/UnknownBackendHealth

此错误可以忽略,未来版本中将会予以澄清。

后续步骤