Интеграция Шлюза приложений

Для трех вариантов службы приложение Azure требуется немного другая конфигурация интеграции с Шлюз приложений Azure. Варианты включают обычные Служба приложений (также известные как мультитенантные), внутреннюю подсистему балансировки нагрузки (ILB) Среда службы приложений и внешний Среда службы приложений.

В этой статье описывается, как настроить Шлюз приложений с помощью Служба приложений (мультитенантной) с помощью конечных точек службы для защиты трафика. В этой статье также рассматриваются рекомендации по использованию частных конечных точек и интеграции с ILB и внешними Среда службы приложений. Наконец, в статье описывается настройка ограничений доступа на сайте Диспетчера управления версиями (SCM).

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

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

Diagram that shows the internet flowing to an application gateway in an Azure virtual network and then flowing through a firewall icon to instances of apps in App Service.

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

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

Настройка служб с помощью портал Azure

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

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

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

Screenshot shows the text of Error 403 - Forbidden.

Настройка служб с помощью шаблона Azure Resource Manager

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

Чтобы применить шаблон, можно использовать кнопку "Развернуть в Azure " в описании шаблона. Или вы можете использовать соответствующий код PowerShell или Azure CLI.

Настройка служб с помощью Azure CLI

Пример Azure CLI создает экземпляр Служба приложений, заблокированный конечными точками службы, и ограничение доступа для получения трафика только из Шлюз приложений. Если необходимо изолировать трафик только к существующему экземпляру Служба приложений из существующего шлюза приложений, используйте следующую команду:

az webapp config access-restriction add --resource-group myRG --name myWebApp --rule-name AppGwSubnet --priority 200 --subnet mySubNetName --vnet-name myVnetName

В конфигурации по умолчанию команда гарантирует настройку конфигурации конечной точки службы в подсети и ограничения доступа в Служба приложений.

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

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

Diagram that shows traffic flowing to an application gateway in an Azure virtual network and then flowing through a private endpoint to instances of apps in App Service.

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

Чтобы перезапустить шлюз приложений, остановите и запустите его с помощью Azure CLI:

az network application-gateway stop --resource-group myRG --name myAppGw
az network application-gateway start --resource-group myRG --name myAppGw

Рекомендации по Среда службы приложений балансировки нагрузки

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

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

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

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

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

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

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

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

az webapp config access-restriction set --resource-group myRG --name myWebApp --use-same-restrictions-for-scm-site

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

az webapp config access-restriction add --resource-group myRG --name myWebApp --scm-site --rule-name KudoAccess --priority 200 --ip-address 208.130.0.0/16

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

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

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

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

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

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

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

Сходство ARR

В развертываниях с несколькими экземплярами сопоставление ARR гарантирует, что клиентские запросы направляются в тот же экземпляр для жизни сеанса. Сходство ARR не работает с переопределениями имени узла. Для работы сходства сеансов необходимо настроить идентичный личный домен и сертификат в Служба приложений и в Шлюз приложений, а не переопределить имя узла.

Следующие шаги

Дополнительные сведения о Среда службы приложений см. в документации по Среда службы приложений.

Чтобы защитить веб-приложение, вы можете найти сведения о Azure Брандмауэр веб-приложений в Шлюз приложений документации по Azure Брандмауэр веб-приложений.

Чтобы развернуть безопасный, устойчивый сайт с личным доменом на Служба приложений с помощью Azure Front Door или Шлюз приложений, см. в этом руководстве.