Сетевые функции Службы приложений Azure

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

Существует два типа развертываний Службы приложений Azure.

  • Многоклиентская общедоступная служба использует планы службы приложений в ценовых категориях "Бесплатный", "Общий", "Базовый", "Стандартный", "Премиум", "Премиум" версии 2, "Премиум" версии 3.
  • В среде службы приложений с одним клиентом (ASE) планы службы приложений для изолированного SKU размещаются непосредственно в виртуальной сети Azure.

Доступность функций зависит от того, используете ли вы многоклиентскую службу или ASE.

Примечание

Для приложений, развернутых в службе Azure Arc, сетевые функции недоступны.

Сетевые функции многоклиентской Службы приложений Azure

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

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

Функции для входящих запросов Функции для исходящих запросов
Присвоение адреса приложению Гибридные подключения
Ограничения доступа Интеграция с виртуальной сетью на базе шлюза
Конечные точки служб Интеграция виртуальной сети
Частные конечные точки

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

Варианты использования и функции

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

Вариант использования для входящего трафика Компонент
Поддержка требований SSL на основе IP-адреса для вашего приложения Присвоение адреса приложению
Поддержка неразделяемого выделенного адреса для входящего трафика приложения Присвоение адреса приложению
Ограничение доступа к приложению из набора четко определенных адресов Ограничения доступа
Ограничение доступа к приложению из ресурсов в виртуальной сети Конечные точки службы
Среда службы приложений Azure внутренней подсистемы балансировки нагрузки (ILB)
Частные конечные точки
Предоставление приложения с использованием частного IP-адреса в виртуальной сети Среда службы приложений Azure внутренней подсистемы балансировки нагрузки
Частные конечные точки
Частный IP-адрес для входящего трафика на экземпляре Шлюза приложений Azure с конечными точками службы
Защита приложения с помощью брандмауэра веб-приложения (WAF) Шлюз приложений и Среда службы приложений Azure внутренней подсистемы балансировки нагрузки
Шлюз приложений с частными конечными точками
Шлюз приложений с конечными точками службы
Azure Front Door с ограничениями доступу
Балансировка нагрузки трафика в приложениях в разных регионах Azure Front Door с ограничениями доступа
Балансировка нагрузки трафика в одном регионе Использование Шлюза приложений с конечными точками служб

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

Вариант использования для исходящего трафика Компонент
Доступ к ресурсам в виртуальной сети Azure в одном регионе. Интеграция виртуальной сети
Среда службы приложений
Доступ к ресурсам в виртуальной сети Azure в другом регионе. Интеграция виртуальной сети и пиринг между виртуальными сетями
Интеграция виртуальной сети на базе шлюза
Среда службы приложений и пиринг между виртуальными сетями
Доступ к ресурсам, защищенным с помощью конечных точек службы Интеграция виртуальной сети
Среда службы приложений
Доступ к ресурсам в частной сети, не подключенной к Azure Гибридные подключения
Доступ к ресурсам через каналы Azure ExpressRoute Интеграция виртуальной сети
Среда службы приложений
Защита исходящего трафика веб-приложения Интеграция виртуальной сети и группа безопасности сети
Среда службы приложений
Маршрутизация исходящего трафика из веб-приложения Интеграция виртуальной сети и таблицы маршрутизации
Среда службы приложений

Поведение сети по умолчанию

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

Адреса для исходящего трафика

Предоставление рабочих виртуальных машин осуществляется на основе планов службы приложений. В планах "Бесплатный", "Общий", "Базовый", "Стандартный" и "Премиум" используется один и тот же тип рабочей машины. В плане категории "Премиум" версии 2 используется другой тип виртуальной машины. В плане категории "Премиум" версии 3 используется третий тип виртуальной машины. При изменении семейства виртуальных машин вы получаете новый набор исходящих адресов. При переходе с плана "Стандартный" на план "Премиум" версии 2 исходящие адреса будут изменены. При переходе с плана "Премиум" версии 2 на план "Премиум" версии 3 исходящие адреса будут изменены. В некоторых старых единицах масштабирования входящие и исходящие адреса меняются при переходе с плана "Стандартный" на "Премиум" версии 2.

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

Снимок экрана, на котором показаны параметры приложения.

В Службе приложений есть ряд конечных точек, которые используются для управления службой. Эти адреса публикуются в отдельном документе и также находятся в теге AppServiceManagement службы IP-адресов. Тег AppServiceManagement используется только в средах Службы приложений Azure, где необходимо разрешить такой трафик. Входящие адреса Cлужбы приложений Azure записываются в теге AppService службы IP-адресов. Тег службы IP-адресов, содержащий исходящие адреса, используемые Службой приложений Azure, не существует.

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

Присвоение адреса приложению

Присвоение адреса приложению — это дополнительная возможность, доступная благодаря подключению SSL на основе IP-адресов. Для доступа к ней требуется настроить SSL-соединение для приложения. Эту функцию можно использовать для вызовов SSL на основе IP-адреса. Кроме того, ее можно использовать, чтобы предоставить приложению уникальный адрес.

Схема, на которой показан адрес, назначенный приложению.

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

  • Поддержка требований SSL на основе IP-адреса для вашего приложения.
  • Присвоение выделенного адреса приложению, которое не является общим.

Чтобы узнать, как присвоить адрес приложению, см. статью Добавление сертификата TLS/SSL в Службу приложений Azure.

Ограничения доступа

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

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

Примечание

Для каждого приложения можно настроить до 512 правил ограничения доступа.

Схема, иллюстрирующая ограничения доступа.

Частная конечная точка

Частная конечная точка — это сетевой интерфейс, который обеспечивает защищенное частное подключение к веб-приложению через приватный канал Azure. Частная конечная точка использует частный IP-адрес из виртуальной сети, чтобы добавить веб-приложение в эту сеть. Эта функция предназначена только для входящих потоков веб-приложения. Дополнительные сведения см. в статье Использование частных конечных точек для веб-приложений Azure.

Варианты использования этой функции

  • Ограничение доступа к приложению из ресурсов виртуальной сети.
  • Предоставление приложения с использованием частного IP-адреса в виртуальной сети.
  • Защита приложения с помощью брандмауэра веб-приложений.

Использование частных конечных точек помогает предотвратить утечку данных, так как единственные ресурсы, к которым можно получить доступ в частной конечной точке, — это приложение, с помощью которого она настроена.

Гибридные подключения

Гибридные подключения Службы приложений Azure позволяют приложениям выполнять исходящие вызовы к указанным конечным точкам TCP. Конечная точка может быть расположена в локальной среде, виртуальной сети или в любом другом местоположении, где разрешена передача исходящего трафика в Azure через порт 443. Чтобы использовать эту функцию, необходимо установить агент ретрансляции "Диспетчер гибридных подключений" на узле Windows Server 2012 или более поздней версии. Диспетчер гибридных подключений должен иметь доступ к Azure Relay через порт 443. Вы можете скачать Диспетчер гибридных подключений с помощью пользовательского интерфейса гибридных подключений Microsoft Azure службы приложений на портале.

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

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

Когда приложение в службе приложений выполняет поиск DNS на узле и порте, указанных в параметрах гибридного подключения, трафик автоматически перенаправляется через гибридное подключение и из Диспетчера гибридных подключений Microsoft Azure. Дополнительные сведения см. в статье Гибридные подключения Службы приложений Azure.

Эта функция обычно используется в следующих целях.

  • Доступ к ресурсам в частных сетях, которые не подключены к Azure с помощью VPN или ExpressRoute.
  • Поддержка миграции локальных приложений в Службу приложений Azure без перемещения вспомогательных баз данных.
  • Предоставление доступа с улучшенной безопасностью к выделенному узлу и порту гибридного подключения. Большинство сетевых функций открывают доступ к сети. Использование гибридных подключений позволяет ограничить доступ одним узлом и портом.
  • Обслуживание сценариев не могут быть использованы другие способы исходящего подключения.
  • Разработка в Службе приложений Azure должна осуществляться таким образом, чтобы приложения могли с легкостью использовать локальные ресурсы.

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

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

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

Интеграция виртуальной сети

Служба приложений интеграция виртуальной сети позволяет приложению отправлять исходящие запросы в виртуальную сеть Azure.

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

  • Доступ к ресурсам в виртуальных сетях Azure Resource Manager в одном регионе.
  • Доступ к ресурсам в одноранговых виртуальных сетях, в том числе подключения между регионами.
  • Доступ к ресурсам, защищенным с помощью конечных точек службы.
  • Доступ к ресурсам, доступным через подключения ExpressRoute или VPN.
  • Доступ к ресурсам в частных сетях без необходимости использования и стоимости Шлюза виртуальной сети.
  • Помощь в обеспечении безопасности всего исходящего трафика.
  • Принудительное туннелирование всего исходящего трафика.

Схема: интеграция виртуальной сети.

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

Интеграция с виртуальной сетью на базе шлюза

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

Схема: интеграция виртуальной сети, требуемая для шлюза.

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

Среда службы приложений

Среда cлужбы приложений Azure (ASE) — это развертывание службы приложений Azure для одного клиента в виртуальной сети Azure. Ниже приведены несколько сценариев использования для этой функции.

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

При использовании Среды службы приложений вам не нужно использовать интеграцию виртуальной сети, поскольку Среда службы приложений уже находится в вашей виртуальной сети. Для получения доступа к таким ресурсам, как SQL или службы хранилища Microsoft Azure, через конечные точки службы включите конечные точки службы в подсети ASE. Если вы хотите получить доступ к ресурсам в виртуальной сети или частным конечным точкам в виртуальной сети, вам не нужно выполнять дополнительные настройки. Например, вам нужно обеспечить доступ к ресурсам с помощью подключения ExpressRoute. При этом вам не нужно ничего настраивать в ASE или приложениях, так как вы уже находитесь в виртуальной сети.

Для предоставления приложений в ILB ASE можно использовать частные IP-адреса, поэтому вы можете с легкостью добавлять устройства WAF, чтобы предоставить доступ через Интернет только к определенным приложениям и обеспечить безопасность остальных. Эта функция помогает упростить разработку многоуровневых приложений.

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

  • Размещение приложений в службе для одного клиента.
  • Увеличение масштаба до большего числа экземпляров по сравнению с многоклиентской службой.
  • Загрузка частных сертификатов клиента ЦС для использования приложениями с закрытыми конечными точками, защищенными центром сертификации.
  • Принудительное использование протокола TLS 1.2 для всех приложений, размещенных в системе, без возможности отключения на уровне приложения.

Схема, иллюстрирующая структуру ASE в виртуальной сети.

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

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

Объединение функций

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

Размещение приложения в виртуальной сети

Как разместить приложение в виртуальной сети? Если приложение размещено в виртуальной сети, входящие и исходящие конечные точки приложения находятся в пределах этой сети. ASE — лучший способ решения этой проблемы. Тем не менее объединение функции позволяет удовлетворить большую часть потребностей многоклиентской службы. Например, можно размещать приложения только для интрасети с частными адресами для входящих и исходящих вызовов. Для этого используйте следующие возможности.

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

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

Создание многоуровневых приложений

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

  • Разместить внешний интерфейс и приложение API в одном ILB ASE и предоставить доступ к внешнему приложению через Интернет с помощью шлюза приложений.
  • Разместить внешний интерфейс в многоклиентской службе, а серверную часть — в Среде службы приложений Azure внутренней подсистемы балансировки нагрузки.
  • Разместить внешний интерфейс и приложение API в многоклиентской службе.

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

  • Предоставить доступ к приложению API с помощью частных конечных точек в виртуальной сети:

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

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

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

Ниже приведены некоторые рекомендации, которые помогут выбрать метод использования.

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

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

бизнес-приложения;

Бизнес-приложения — это внутренние приложения, которые обычно недоступны через Интернет. Эти приложения вызываются из корпоративных сетей, доступ к которым строго контролируется. Использование ILB ASE позволяет с легкостью размещать бизнес-приложения. При использовании многоклиентской службы можно использовать частные конечные точки или конечные точки службы совместно со шлюзом приложений. Существует два сценария, в которых следует использовать шлюз приложений с конечными точками службы вместо частных конечных точек.

  • Необходимо обеспечить защиту бизнес-приложений с помощью брандмауэр веб-приложений.
  • Необходимо распределить нагрузку между несколькими экземплярами бизнес-приложений.

Если ни одно из этих требований не актуально, следует использовать частные конечные точки. Если в Службе приложений Azure доступны частные конечные точки, вы можете использовать частные адреса для размещения приложений в виртуальной сети. Доступ к частной конечной точке, размещенной в виртуальной сети, можно предоставить через подключения ExpressRoute и VPN.

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

Порты Службы приложений Azure

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

Использование Порт или порты
HTTP/HTTPS 80, 443
Управление 454, 455
FTP/FTPS 21, 990, 10001-10300
Удаленная отладка в Visual Studio 4020, 4022, 4024
Служба веб-развертывания 8172
Использование инфраструктуры 7654, 1221