应用之间的 Azure Web 应用访问限制
Posted
技术标签:
【中文标题】应用之间的 Azure Web 应用访问限制【英文标题】:Azure web app access restrictions between Apps 【发布时间】:2021-11-27 02:22:43 【问题描述】:我在同一个 Azure 区域中有 2 个应用服务计划,每个服务计划运行 1 个应用 - 一个在 Web 前端,另一个在 API。
我想对 API 使用访问限制,只允许从前端应用访问。
我使用与前端应用关联的所有传出 IP 地址设置访问限制规则(我注意到这些与 API 应用上的传出 IP 地址完全相同)但是当前端应用尝试联系 API 时我收到一个错误:
403 disabled '您尝试访问的网络应用已阻止您的访问。'
访问限制解除后,两个应用可以正常通信。
【问题讨论】:
为什么不在 API 上实施 CORS 政策? 【参考方案1】:我打开了诊断设置并运行了关于应用程序阻止 IP 的查询。
原来 FE 应用使用的是 IPv6 地址,而不是应用属性中列出的 v4 地址。
这是因为应用设置了 vnet 集成,连接到委派给 Webservice/serverfarm 的子网。
Azure 并未明确表明使用委派子网会强制集成应用使用 IPv6,而且似乎没有办法发现可能正在使用的 v6 地址。 MS 论坛响应建议附加到委派子网的 Web 应用程序的任何防火墙规则都应允许所有 IPv6 地址 (!!) 作为解决问题的一种方式。
https://docs.microsoft.com/en-us/answers/questions/493483/why-is-my-azure-web-app-showing-an-ipv6-outbound-i.html
【讨论】:
【参考方案2】:您可以通过使用区域 VNet 集成和虚拟网络 NAT 网关来控制来自 FE Web 应用程序的出站流量的 IP 地址,以通过静态公共 IP 地址引导流量。 Standard、Premium、PremiumV2 和 PremiumV3 应用服务计划提供区域 VNet 集成。要了解有关此设置的更多信息,请参阅 NAT gateway integration。
一旦您的 FE 网络应用拥有静态 IP,您就可以在 ALLOW 规则中的 API 网络应用限制中使用该 IP。
【讨论】:
谢谢,我会试试的。我不确定为什么这与允许来自与应用服务计划关联的所有 IP 地址的流量不同?【参考方案3】:如果满足您的要求,您还可以利用服务端点。 使用服务端点,确保您的 API 应用程序的入站流量仅来自您的前端 Web 应用程序使用的子网。
通过此路由,您需要将 VNet 集成与您的前端应用程序和服务端点与您的 API 应用程序一起使用。在前端应用程序使用的集成子网上设置服务端点。此解决方案设置快速且简单。
-此功能与 IP 访问限制一起使用。服务端点与远程调试不兼容。您需要考虑一些事项,您可以查看它们here 以及应用服务和相关场景中可用的其他网络功能组合。
附注:
-基于 IP 的访问限制规则仅在您的应用位于应用服务环境中时处理虚拟网络地址范围。如果您的应用在多租户服务中,您需要使用服务端点来限制流量以选择虚拟网络中的子网。
-在应用服务上,您可以在同一个应用服务计划 (ASP) 中拥有这两个单独的应用,因为您只需为 ASP 付费,从而节省成本。 因此,只要计划有足够的资源来处理负载,您就可以继续将应用程序添加到现有计划中。同一应用服务计划中的应用都共享相同的计算资源。
【讨论】:
只是好奇,API 管理和订阅密钥的使用会处理这个用例吗?如果没有订阅密钥,其他应用程序无法调用 API 应用程序。我知道这会增加整体解决方案的成本。以上是关于应用之间的 Azure Web 应用访问限制的主要内容,如果未能解决你的问题,请参考以下文章
Azure:仅允许使用 *** 从本地访问 Web 应用程序