![Блокировка прямого доступа к статическому веб-сайту в хранилище BLOB-объектов Azure и разрешение только Azure Front Door](https://rvso.com/image/770099/%D0%91%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0%20%D0%BF%D1%80%D1%8F%D0%BC%D0%BE%D0%B3%D0%BE%20%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0%20%D0%BA%20%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%BC%D1%83%20%D0%B2%D0%B5%D0%B1-%D1%81%D0%B0%D0%B9%D1%82%D1%83%20%D0%B2%20%D1%85%D1%80%D0%B0%D0%BD%D0%B8%D0%BB%D0%B8%D1%89%D0%B5%20BLOB-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BE%D0%B2%20Azure%20%D0%B8%20%D1%80%D0%B0%D0%B7%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE%20Azure%20Front%20Door.png)
У меня есть веб-приложение SPA, развернутое в хранилище BLOB-объектов Azure, URL-адрес которого является общедоступным. Например:https://example.z23.web.core.windows.net/
Я хотел бы использовать Azure Front Door с WAF для повышения безопасности. Есть ли способ заблокировать прямой доступ по URL-адресу большого двоичного объекта? Я погуглил и нашел много ответов, один из них — просто разрешить только AzureFrontDoor.Backend
IP-адреса в сетевых конфигурациях учетной записи хранения. Я попробовал, и это сработало.
Однако этот метод все еще имеет лазейку, поскольку любой может просто создать Front Door и указать URL моего BLOB-объекта (если он каким-то образом его обнаружит).
(Это может показаться глупым): если я воспользуюсь этим методом и назову свою учетную запись хранения случайным образом, например, использовать урезанный случайный GUID. (https://6c4a89d5dba04b8fbe1ed7f.z23.web.core.windows.net/) Может ли это снизить вероятность того, что кто-то может обнаружить мой URL-адрес и обойти систему безопасности?
Другой метод, которыйAzure рекомендуетзаключается в проверке X-Azure-FDID
заголовка, включающего идентификатор моего конкретного экземпляра Front Door, и отбрасывании запросов, не содержащих этот заголовок. Я спросил своего разработчика, возможно ли это в веб-приложении Vue, и он сказал, что нам нужно включить идентификатор Front Door в код, который выполняется на стороне клиента, таким образом, в любом случае делая идентификатор общедоступным. (Это не Stack Overflow, но если кто-то может что-то посоветовать по этому поводу, было бы здорово)
Другой способ, который я нашел, — это использование Azure Front Door Premium SKU, которыйподдерживаетподключение к Storage Account с помощью Private Link. Это идеально, но стоит колоссальных 165 долларов в месяц. Я бы предпочел развернуть свой код в App Service, так как он может изначально ограничить доступ только из Front Door.
Может ли кто-нибудь подсказать, как этого добиться?
Спасибо.
решение1
Проверка заголовка X-Azure-FDID в сочетании с ограничением IP — единственный способ заблокировать это в настоящее время, не переходя по маршруту частной ссылки. Поэтому вам нужно будет получить код вашего приложения для проверки этого, учитывая, что у вас нет ничего другого между FD и учетной записью хранения.
Хотя наличие этого в вашем клиентском коде раскроет идентификатор, это не имеет значения. Ограничения IP означают, что вы разрешаете трафик только с экземпляров Front Door, и злоумышленник не сможет установить этот идентификатор на другом экземпляре FD.