乐于分享
好东西不私藏

【Azure App Service】为什么 Azure Web App 禁用公网后 Advanced Tools 会失效?

【Azure App Service】为什么 Azure Web App 禁用公网后 Advanced Tools 会失效?

【Azure App Service】为什么 Azure Web App 禁用公网后 Advanced Tools 会失效?

问题描述

在一次 Azure Web App 的使用过程中,遇到一个并不直观、但在实际生产环境中很容易遇到的问题:Web App 本身运行正常,但在 Azure Portal 中点击 Advanced Tools(Kudu)时,页面却无法访问。

报错页面如下:

应用可以正常对外提供服务,但用于诊断和排障的 Advanced Tools 却无法打开。那么,这个问题究竟是如何产生的?

问题解答

从表面现象来看,第一时间很容易联想到以下几种可能性:

  1. Advanced Tools 服务异常
  2. Azure 平台工具问题
  3. Portal 的偶发性故障

然而,在对 Web App 的配置进行检查后发现,这些直觉判断都并非问题的根源。问题并不在 Azure 平台或 Web App 本身,而是与 Azure App Service 的网络访问模型有关。

一个经常被忽略的事实:

Advanced Tools(Kudu)并不等同于主 Web App 站点,它有自己独立的访问入口和网络规则。

在这个问题中,Web App 配置了网络访问限制,公共网络访问已被禁用。然而,Advanced Tools 实际上运行在一个独立的站点(SCM / Advanced Tools Endpoint)。当网络策略中没有为kudu站点单独放行时,请求会在网络层被直接阻断,最终表现为 Advanced Tools 页面无法访问。

查看Web App的网络配置,可见Advanced tool site的配置为Deny, 并且沿用了主站点的规则( Use main site rules)

这也正是问题产生的关键原因。当为 Kudu(Advanced Tools site)单独配置合适的网络访问规则后,Advanced Tools 站点即可恢复正常访问。

参考资料

Azure 应用服务访问限制:https://docs.azure.cn/zh-cn/app-service/overview-access-restrictions