应用网关受IP限制

Application Gateway restrict by IP

我们有一个 Azure 虚拟机集群,暴露了一些内部 API。为了更加安全,我们使用应用程序网关来进行 ssl 卸载。但我们也想限制可以访问此 API 的外部 IP。有没有办法只允许一定范围的 IP 通过应用程序网关进行连接?

谢谢。

问。应用程序网关子网上是否支持网络安全组?
应用程序网关子网上支持网络安全组,但必须为端口 65503-65534 设置例外,后端运行状况才能正常工作。不应阻止出站互联网连接。

因此只需在 NSG 的子网上创建一个网络安全组并限制 IP。网络安全组基本上就是防火墙。
https://docs.microsoft.com/en-us/azure/virtual-network/virtual-networks-nsg

对于那些在 2020 年看到这个问题的人,我要补充一点,V1 sku 的端口范围与 V2 不同应用程序网关 sku。

如果您希望将网络安全组添加到您的应用程序网关所在的子网,您将需要允许以下端口范围的所有入站流量:

V1: 65503-65534

V2: 65200-65535

作为参考,如果您尝试将 NSG 分配给应用程序网关子网,而没有首先允许所需的端口范围(我的详细信息已被删除),Azure 门户将抛出以下错误。

Failed to save subnet 'xxxxxxxxxx'. Error: 'Network security group xxxxxxxxxx/providers/Microsoft.Network/networkSecurityGroups/'. xxxxxxxxxx blocks incoming internet traffic on ports 65200 - 65535 to subnet /subscriptions/xxxxxxxxxx/resourceGroups/xxxxxxxxxx/providers/Microsoft.Network/virtualNetworks/xxxxxxxxxx/subnets/xxxxxxxxxx, associated with Application Gateway /subscriptions/xxxxxxxxxx/resourceGroups/xxxxxxxxxx/providers/Microsoft.Network/applicationGateways/xxxxxxxxxx. This is not permitted for Application Gateways that have V2 Sku.'

一般说明:

  1. 创建您的网络安全组。确保创建两个传入规则——(1) 允许适用端口范围内的所有传入流量,如上定义,以及 (2) 允许必要的应用程序端口,例如 80443,这是标准的 HTTP 和 HTTPS 流量端口。这当然应该匹配您在应用程序网关上的任何 rule/listener 配置。
  2. 在虚拟网络边栏选项卡中,select 适用的虚拟网络,然后从边栏中选择子网。然后,select 应会出现适用的子网和配置面板,这将允许您将 NSG 分配给子网。

我会进一步提请注意一些可能有用的提示。

  1. 出于管理 public IP 流量的目的,将网络安全组应用于后端池中定义的虚拟机将不起作用。路由到您的 VM 的流量来自您的应用程序网关,这当然是与您的应用程序网关关联的实例的 IP,而不是您可能尝试定位的 public 面向客户端的 IP。
  2. 如果您正在测试一项政策,可能使用您自己的 public IP,请务必注意,如果您尝试从现有浏览器会话访问您的应用程序,则不会反映这一点。在您完全关闭浏览器或使用隐身模式之前,通话将继续进行。
  3. 可以安全地将网络安全组分配给您的应用程序网关,因为它不会导致停机(除非您忘记创建入站应用程序规则)。