阻止直接访问 Azure Blob 存储上的静态网站并仅允许 Azure Front DoorBlocking direct access to static website on Azure Blob Storage and allow only Azure Front Door

阻止直接访问 Azure Blob 存储上的静态网站并仅允许 Azure Front DoorBlocking direct access to static website on Azure Blob Storage and allow only Azure Front Door

我在 Azure Blob Storage 上部署了一个 SPA Web 应用,其 URL 是公开的。例如https://example.z23.web.core.windows.net/

我想使用带有 WAF 的 Azure Front Door 来提高安全性。有没有办法阻止对 blob URL 的直接访问?我在 Google 上搜索并找到了很多答案,其中之一就是AzureFrontDoor.Backend在存储帐户网络配置中仅允许 IP。我试过了,成功了。

但是,这种方法仍然存在漏洞,因为任何人都可以创建一个 Front Door 并指向我的 blob URL(如果他们碰巧以某种方式发现它的话)。

(这可能听起来很愚蠢):如果我继续使用此方法并随机命名我的存储帐户,例如,使用精简的随机 GUID。(https://6c4a89d5dba04b8fbe1ed7f.z23.web.core.windows.net/)这是否可以降低有人发现我的 URL 并绕过安全措施的可能性?

另一种方法是Azure 建议是检查X-Azure-FDID包含特定 Front Door 实例 ID 的标头,并删除不包含此标头的请求。我问我的开发人员这在 Vue webapp 上是否可以实现,他说我们需要在客户端运行的代码中包含 Front Door ID,这样无论如何都会将 ID 公开。(这不是 Stack Overflow,但如果有人能对此提出任何建议,那就太好了)

我发现的另一种方法是使用 Azure Front Door Premium SKU,它支持使用 Private Link 连接到存储帐户。这很完美,但每月费用高达 165 美元。我宁愿在 App Service 上部署我的代码,因为它可以原生限制仅从 Front Door 进行访问。

有人可以建议如何实现这一目标的方法吗?

谢谢。

答案1

检查 X-Azure-FDID 标头,结合 IP 限制,是目前唯一可以锁定此问题而无需使用私有链接路由的方法。因此,您需要获取应用程序代码来验证这一点,因为 FD 和存储帐户之间没有任何其他东西。

虽然在客户端代码中使用此 ID 会暴露 ID,但这并不重要。IP 限制意味着您只允许来自 Front Door 实例的流量,攻击者无法在其他 FD 实例上设置该 ID。

相关内容