Как блокировать HTTP-запросы к веб-приложению Azure, за исключением запросов от определенной другой службы Azure

#azure #web-applications

#azure #веб-приложения

Вопрос:

Моя настройка Azure включает в себя два веб-приложения и сервер PostgreSQL. Одним из веб-приложений является интерфейс узла, который должен быть доступен для общественности. Другой — это серверная часть Python, которая получает запросы от приложения Node и взаимодействует с базой данных Postgres. Приложение Python содержит конечные точки HTTP, которые не должны быть доступны для любого доступа.

Каков рекомендуемый подход к защите этого приложения Python от нежелательного трафика? Должен ли я блокировать трафик напрямую через какую-либо конфигурацию Azure или просто аутентифицировать мои HTTP-запросы?

Я попытался разрешить только исходящие IP-адреса приложения узла для связи с приложением Python через конфигурацию Azure. Однако, похоже, из-за этого приложение Python не может взаимодействовать с базой данных, и, кроме того, я даже не могу использовать SSH или просматривать его журналы с этой конфигурацией.

Ответ №1:

Это действительно зависит от ваших требований. Если стоимость не подходит, один из способов защитить приложение Python — поместить его в среду службы приложений (ASE). Это изолированный экземпляр веб-приложений Azure, который вы можете защитить с помощью внутреннего балансировщика нагрузки. Это решение обеспечит вам большую безопасность, поскольку вы можете разрешить группе сетевой безопасности блокировать интернет-трафик, и вы можете настроить свое приложение Node для связи с вашей виртуальной сетью с помощью VPN. Этот подход также является одним из более дорогостоящих подходов для веб-приложения PaaS.

Другие варианты включают настройку вашего «внутреннего» python как IaaS (но тогда вам придется управлять обновлениями), или вы можете использовать шлюз приложений или стороннее устройство WAF, такое как KEMP (у них есть бесплатное устройство со скоростью 200 Мбит / с), чтобы защитить ваше приложение.

Наконец, вы можете посмотреть на проект масштабируемости, в котором вы помещаете очередь или другого посредника между вашими двумя веб-приложениями. Это позволит независимо масштабировать и даст вам возможность заблокировать приложение Python, чтобы оно принимало только сообщения из очереди, а не из вашего интерфейса. Пример арки можно увидеть здесь (вы можете заменить функцию в этой арке для своего приложения Python)

введите описание изображения здесь

Комментарии:

1. Спасибо за исчерпывающий ответ. Я думаю, что подход ASE может оказаться слишком дорогим для моего использования, поэтому я собираюсь рассмотреть возможность использования шлюза приложений для его защиты.