Рейтинг:0

Блокировка прямого доступа к статическому веб-сайту в хранилище BLOB-объектов Azure и разрешение только передней дверцы Azure.

флаг in

У меня есть веб-приложение SPA, развернутое в хранилище BLOB-объектов Azure, URL-адрес которого является общедоступным. Например. https://example.z23.web.core.windows.net/

Я хочу использовать Переднюю дверцу Azure с WAF для повышения безопасности. Есть ли способ заблокировать прямой доступ по URL-адресу большого двоичного объекта? Я погуглил и нашел много ответов, один из них - просто разрешить только AzureFrontDoor.Backend IP-адреса в сетевых конфигурациях учетной записи хранения. Я попробовал, и это сработало.

Однако у этого метода все еще есть лазейка, поскольку любой может просто создать переднюю дверь и указать на мой URL-адрес большого двоичного объекта (если он каким-то образом обнаружит его).

(Это может показаться глупым): если я продолжу этот метод и назову свою учетную запись хранения случайным образом, например, использую урезанный случайный GUID. (https://6c4a89d5dba04b8fbe1ed7f.z23.web.core.windows.net/) Может ли это уменьшить вероятность того, что кто-то может обнаружить мой URL-адрес и обойти систему безопасности?

Другой метод, который Азур рекомендует это проверить X-Azure-FDID заголовок, который включает идентификатор моего конкретного экземпляра Front Door, и запросы на удаление, не содержащие этот заголовок. Я спросил своего разработчика, возможно ли это в веб-приложении Vue, и он сказал, что нам нужно будет включить идентификатор передней двери в код, который выполняется на стороне клиента, таким образом, в любом случае раскрывая идентификатор для общественности. (Это не переполнение стека, но если кто-то может что-нибудь посоветовать по этому поводу, было бы здорово)

Еще один способ, который я нашел, — использовать Azure Front Door Premium SKU, который поддерживает подключение к учетной записи хранения с помощью частной ссылки. Это идеально, но стоит колоссальные 165 долларов в месяц. Вместо этого я предпочел бы развернуть свой код в службе приложений, поскольку он может изначально ограничивать доступ только из передней дверцы.

Может ли кто-нибудь предложить какой-либо метод, как этого добиться?

Спасибо.

Рейтинг:0
флаг ng

Проверка заголовка X-Azure-FDID в сочетании с ограничением IP-адресов — единственный способ заблокировать это в настоящее время, не переходя по маршруту частной ссылки. Таким образом, вам нужно будет получить код вашего приложения, чтобы проверить это, учитывая, что у вас нет ничего другого между FD и учетной записью хранения.

Хотя наличие этого в коде на стороне клиента раскрывает идентификатор, на самом деле это не имеет значения. Ограничения IP означают, что вы разрешаете трафик только от экземпляров Front Door, и злоумышленник не может установить этот идентификатор на другом экземпляре FD.

BlackMiracle avatar
флаг in
Спасибо за ответ. Это звучит законно. Вы упомянули: «учитывая, что между FD и учетной записью хранения нет ничего другого». Есть ли что-нибудь еще, что я могу добавить для достижения этого, не изменяя код? Просто любопытно
флаг ng
не то, что не добавляет значительных расходов. Вы можете посмотреть на шлюз приложений, а не на переднюю дверцу, но это не дешево, вы также можете запустить свое приложение в службе приложений или кластере AKS и добавить туда дополнительные службы, но опять же, это увеличивает стоимость.
флаг in
Я не верю, что вы можете получить доступ к заголовкам HTTP-запросов в JavaScript на стороне клиента. Я думаю, что лучше всего назвать свою учетную запись хранения трудно угадываемым именем.
флаг in
Я не уверен, планирует ли Storage добавить аналогичную функциональность, но я работаю в группе статических веб-приложений, и мы работаем над поддержкой именно этого сценария, включая возможность блокировать приложение с помощью тегов службы и ограничивать доступ к определенному заголовку x-azure-fdid. Это должно быть доступно в ближайшие месяц или два.
BlackMiracle avatar
флаг in
@AnthonyChu Вау, это отличная новость — услышать от команды разработчиков, что эта функция работает. Не могли бы вы поделиться, как клиенты узнают, когда он будет доступен? Можем ли мы проверить на странице [Обновление Azure] (https://azure.microsoft.com/en-us/updates/)?
флаг in
Да, у нас должно быть объявление об обновлении Azure, хотя в нем может быть сказано что-то вроде сетевых ограничений и сервисных тегов или что-то в этом роде. Также я хочу пояснить, что это касается Статических веб-приложений Azure, которые являются отдельным продуктом, а не функцией размещения статического веб-сайта в службе хранилища Azure. Я думаю, что совершенно нормально оставаться в Хранилище и использовать трудно угадываемое имя учетной записи. Обычно это не представляет серьезной проблемы с безопасностью. В основном вы хотите, чтобы Google не индексировал его и тому подобное.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.