如何配置 Web Apps 使其无法直接访问?

How to configure Web Apps such that they cannot be accessed directly?

本质上,只允许 requests/responses to/from Azure Front Door。有不同的选择,但是,我无法找到有关实施和最佳实践的详细信息。我认为正确的解决方案是创建一个用于集成这两种服务的虚拟网络。

存在一个细微差别,Web 应用程序具有暂存槽,可能需要不同的解决方案,因为它们使用 Azure Active Directory 来防止 public 访问预生产。

我发现了更多的见解here,但仍然觉得有点混乱。

看来,如果我有一个带有 Front Door 的子域的自定义域,应该有一种简单的方法来防止直接访问 Web 应用程序的后端地址,并且只允许通过自定义 DNS 和 Front Door。

,但是,我仍然从 Front Door 收到 403,所以我一定是在如何配置方面遗漏了一些东西。

Middleware? 这也很有帮助,但似乎表明它只能由中间件完成,我是 运行 Node/Express 而不是 .NET Core。是不是只能通过中间件代码来实现?

This 也提到了同样的细节。

少了什么?如何在不同的应用程序堆栈中配置它。

文档中的说明不准确 < 要锁定您的应用程序以仅接受来自您特定 Front Door 的流量,您需要为您的后端设置 IP ACL,然后将您后端的流量限制为 header 'X-Azure-FDID' 由 Front Door 发送。这些步骤详述如下:

它需要为您的后端设置 IP ACL 或实施中间件代码以有条件地匹配 'X-Azure-FDID' 的特定 header 值。两者可能都不需要,文档不清楚。

我认为您确实需要 IP ACL 并检查 'X-Azure-FDID' header。 (我希望不需要...)。如果您仅使用 IP 限制,您的 back-end 仍然对全球所有 Front Doors 开放,也包括其他 Azure 客户的 Front Doors。如果您只使用 'X-Azure-FDID' header 上的检查,那么您就很容易被试图用蛮力猜测 header 的攻击者打开。只有 IP ACL 和检查 header 的组合才能保护您的 back-end,因为这样您就可以确定 'X-Azure-FDID' header 确实是由真正的 Front Door 服务添加的, 而不是欺骗。

另请参阅 this post,其中解释得很清楚。