Поделиться через


Что такое интеграция Azure Application Gateway с Azure App Service?

В этой статье представлен обзор настройки Azure Application Gateway с Azure App Service с помощью частных конечных точек для защиты трафика. Ознакомьтесь с рекомендациями по использованию конечных точек службы и интеграции с внутренним или внешним App Service Environment. Установите ограничения доступа на сайте Системы управления версиями (SCM).

Интеграция с Службой приложений

Вы можете использовать частные конечные точки для защиты трафика между Шлюз приложений и приложением Служба приложений. Необходимо убедиться, что шлюз приложений может использовать систему доменных имен (DNS) для разрешения частного IP-адреса приложений службы приложений. Кроме того, вы можете использовать частный IP-адрес в серверном пуле и переопределить имя узла в параметрах HTTP.

Схема трафика, который передается в шлюз приложений через частную конечную точку в приложения службы приложений.

Шлюз приложений кэширует результаты поиска DNS. Если вы используете полные доменные имена (FQDN) и используете поиск DNS для получения частного IP-адреса, может потребоваться перезапустить шлюз приложений. Перезапуск требуется, если обновление DNS или ссылка на частную зону DNS Azure происходит после настройки внутреннего пула.

Чтобы перезапустить шлюз приложений, остановите и запустите его со следующими командами Azure CLI. Замените имена локальных ресурсов для любых <значений заполнителей> в командах.

az network application-gateway stop --resource-group <your-resource-group> --name <your-application-gateway>
az network application-gateway start --resource-group <your-resource-group> --name <your-application-gateway>

Узнайте больше о настройке приложения Служба приложений с частной конечной точкой.

Рекомендации по использованию конечных точек службы

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

Схема, на которой интернет проходит через шлюз приложений в виртуальной сети, затем через брандмауэр конечной точки к приложениям App Service.

Эта конфигурация состоит из двух частей, помимо создания экземпляра приложения Службы приложений и шлюза приложений.

  • Первая часть включает конечные точки службы в подсети виртуальной сети, в которой развернут шлюз приложений. Конечные точки службы гарантируют, что весь сетевой трафик, покидающий подсеть в службу приложений, помечен с помощью определенного идентификатора подсети.

  • Вторая часть задает ограничение доступа для конкретного веб-приложения, чтобы убедиться, что разрешен только трафик, помеченный данным идентификатором конкретной подсети. Ограничение доступа можно настроить с помощью различных инструментов в зависимости от вашего предпочтения.

На портале Azure выполните четыре действия, чтобы создать и настроить интеграцию службы приложений и шлюза приложений. Если у вас есть ресурсы, можно пропустить первые и второй шаги.

  1. Создайте приложение службы приложений с помощью одного из кратких руководств в документации по службе приложений. Одним из примеров является .NET Core быстрое начало работы.
  2. Создайте шлюз приложений с помощью краткого руководства по порталу, но пропустите раздел о добавлении целевых объектов серверной части.
  3. Настройте службу приложений в качестве серверной части в шлюзе приложений, но пропустите раздел об ограничении доступа.
  4. Создайте ограничение доступа с помощью конечных точек сервиса.

Теперь вы можете получить доступ к Службе приложений через Шлюз приложений. Если вы пытаетесь получить доступ непосредственно к службе приложений, ожидается сообщение об ошибке 403 HTTP, которая говорит, что веб-приложение блокирует доступ.

Рекомендации по внутреннему App Service Environment

Внутренняя среда сервисов приложений не доступна в интернете. Трафик между средой и шлюзом приложений уже ограничен виртуальной сетью. Вы можете настройку внутренней среды и интегрировать ее с шлюзом приложений с помощью портала Azure.

Если вы хотите убедиться, что только трафик из подсети шлюза приложений достигает App Service Environment, можно настроить группу безопасности сети, которая влияет на все веб-приложения в среде. Для группы безопасности сети можно указать диапазон IP-адресов подсети и порты (80/443).

Чтобы изолировать трафик к отдельному веб-приложению, необходимо использовать ограничения доступа на основе IP-адресов, так как конечные точки службы не работают с App Service Environment. IP-адрес должен быть частным IP-адресом шлюза приложений.

Рекомендации по внешней среде обслуживания приложений

Внешняя среда App Service имеет балансировщик нагрузки, открытый для внешнего доступа, подобно мультитенантным приложениям службы приложений. Конечные точки службы не работают для внешней среды App Service Environment. В App Service Environment можно применить ограничения доступа на основе IP-адресов с помощью общедоступного IP-адреса шлюза приложений. Чтобы создать внешний App Service Environment на портале Azure, можно использовать quickstart.

Вы также можете добавить частные конечные точки к приложениям, размещенным во внешней среде App Service.

Рекомендации по сайту Kudu/SCM

Сайт SCM, также известный как Kudu, является сайтом администратора, который существует для каждого веб-приложения. Невозможно использовать обратный прокси-сервер для сайта SCM. Скорее всего, вы также хотите заблокировать его на отдельные IP-адреса или определенную подсеть.

Если вы хотите использовать те же ограничения доступа, что и основной сайт, можно наследовать параметры с помощью следующей команды Azure CLI:

az webapp config access-restriction set --resource-group <your-resource-group> --name <your-web-app> --use-same-restrictions-for-scm-site

Если вы хотите добавить отдельные ограничения доступа для сайта SCM, можно использовать --scm-site флаг с помощью команды:

az webapp config access-restriction add --resource-group <your-resource-group> --name <your-web-app> --scm-site --rule-name KudoAccess --priority 200 --ip-address 208.130.0.0/16

Рекомендации по использованию домена по умолчанию

Шлюз приложений можно настроить для переопределения имени узла с доменом службы приложений по умолчанию (обычно azurewebsites.net). Этот подход является самым простым способом для выполнения интеграции, так как он не требует настройки личного домена и сертификата в службе приложений.

Процесс сохранения имени узла описывает общие рекомендации по переопределении исходного имени узла. В службе приложений следует учитывать следующие рекомендации по проверке подлинности и сопоставлению сеансов.

Проверка подлинности (EasyAuth)

При использовании функции проверки подлинности в службе приложений (также называемой Easy Auth), ваше приложение обычно перенаправляется на страницу входа. Так как Служба приложений не знает исходное имя узла запроса, перенаправление выполняется по имени домена по умолчанию и обычно приводит к ошибке.

Чтобы обойти перенаправление по умолчанию, можно настроить проверку подлинности для проверки перенаправленного заголовка и адаптации домена перенаправления к исходному домену. Шлюз приложений использует заголовок с именем X-Original-Host. С помощью конфигурации на основе файлов для указания проверки подлинности можно настроить службу приложений для адаптации к исходному имени узла.

Добавьте эту конфигурацию в файл конфигурации:

{
    ...
    "httpSettings": {
        "forwardProxy": {
            "convention": "Custom",
            "customHostHeaderName": "X-Original-Host"
        }
    }
    ...
}

Сходство сеансов

При указании параметрасходства сеансов в развертываниях с несколькими экземплярами можно убедиться, что клиентские запросы направляются в один и тот же экземпляр для всего сеанса. Вы можете настроить сходство сеансов для адаптации домена cookie к входящему заголовку из обратного прокси-сервера.

Если вы установите настройку прокси сервера привязки сеансов, привязка сеансов будет искать заголовок X-Original-Host или X-Forwarded-Host. Он адаптирует домен cookie к домену, найденном в заголовке. При включении прокси с привязкой сеансов рекомендуется настроить ограничение доступа на сайте, чтобы удостовериться, что трафик поступает от вашего обратного прокси-сервера.

Можно также настроить параметр clientAffinityProxyEnabled с помощью следующей команды Azure CLI:

az resource update --resource-group <your-resource-group> --name <your-web-app> --resource-type "Microsoft.Web/sites" --set properties.clientAffinityProxyEnabled=true