Параметры сети для Функций Azure
В этой статье описываются сетевые возможности, доступные в различных вариантах размещения для Функций Azure. Следующие параметры сети можно классифицировать как входящие и исходящие сетевые функции. Входящий трафик позволяет ограничить доступ к приложению, в то время как исходящие функции позволяют подключать приложение к ресурсам, защищенным виртуальной сетью, и управлять маршрутизацией исходящего трафика.
Модели размещения имеют различные уровни сетевой изоляции. Выбор правильного варианта поможет соответствовать требованиям к сетевой изоляции.
Функция | План потребления Flex | План потребления | План категории "Премиум" | Выделенный план/ASE | Приложения-контейнеры 1 |
---|---|---|---|---|---|
Ограничения для входящих IP-адресов | ✔ | ✔ | ✔ | ✔ | ✔ |
Частные конечные точки входящего трафика | ✔ | ✔ | ✔ | ||
Интеграция с виртуальной сетью | ✔ | ✔2 | ✔3 | ✔ | |
Ограничения исходящих IP-адресов | ✔ | ✔ | ✔ | ✔ |
- Дополнительные сведения см. в разделе "Сеть" в среде "Приложения контейнеров Azure".
- При работе с триггерами виртуальной сети существуют особые рекомендации.
- Только выделенный или ASE-план поддерживает интеграцию виртуальной сети, требуемой для шлюза.
Ресурсы для работы с кратким руководством
Используйте следующие ресурсы, чтобы быстро приступить к работе с сетевыми сценариями Функций Azure. Ссылки на эти ресурсы содержатся в статье.
- Шаблоны ARM, файлы Bicep и шаблоны Terraform:
- Только шаблоны ARM:
- Учебники:
Функции входящего сетевого подключения
Следующие функции позволяют фильтровать входящие запросы к приложению-функции.
Ограничения входящего доступа
Можно использовать ограничения, чтобы определить список упорядоченных по приоритету IP-адресов, которым разрешен или запрещен доступ к вашему приложению. Список может включать адреса IPv4 и IPv6 или определенные подсети виртуальной сети с использованием конечных точек службы. Если он содержит одну или несколько записей, то в конце списка действует неявный запрет на все адреса. Ограничения IP-адресов работают со всеми вариантами размещения функций.
Ограничения доступа доступны в плане потребления Flex, эластичном премиуме, потреблении и Служба приложений.
Примечание.
С учетом ограничений сети можно выполнять развертывание только из виртуальной сети или указать IP-адрес компьютера, который используется для доступа к порталу Azure, в списке "Надежные получатели". Тем не менее этой функцией можно по-прежнему управлять с помощью портала.
Дополнительные сведения см. в статье Azure App Service static access restrictions (Ограничения статического доступа для Службы приложений Azure).
Частные конечные точки
Частная конечная точка Azure — это сетевой интерфейс, который обеспечивает безопасное подключение к службе с помощью Приватного канала Azure. Частная конечная точка использует частный IP-адрес из виртуальной сети, эффективно предоставляя доступ к службе из виртуальной сети.
Для функций, размещенных в планах Flex Consumption, Elastic Premium и Dedicated (Служба приложений), можно использовать частную конечную точку.
Если вы хотите выполнять вызовы к частным конечным точкам, необходимо убедиться, что поиск в DNS разрешается в частную конечную точку. Можно принудительно применить это поведение одним из следующих способов.
- Настроить интеграцию с частными зонами Azure DNS. Если в виртуальной сети нет настраиваемого DNS-сервера, это выполняется автоматически.
- Управлением частной конечной точкой на DNS-сервере, используемом приложением. Чтобы управлять частной конечной точкой, необходимо знать адрес конечной точки и использовать запись A для ссылки на конечную точку, которую вы пытаетесь достичь.
- Настройка собственного DNS-сервера для перенаправления в частные зоны Azure DNS.
Дополнительные сведения см. в статье Использование частных конечных точек для веб-приложений.
Чтобы вызвать другие службы, имеющие подключение к частной конечной точке, например хранилище или служебную шину, обязательно настройте приложение для выполнения исходящих вызовов к частным конечным точкам. Дополнительные сведения об использовании частных конечных точек с учетной записью хранения для приложения-функции см. в статье об ограничении учетной записи хранения виртуальной сетью.
Конечные точки служб
С помощью конечных точек служб можно ограничить множество служб Azure выбранными подсетями виртуальной сети, чтобы обеспечить более высокий уровень безопасности. Интеграция с региональной виртуальной сетью позволяет обращаться к службам Azure, защищенным с помощью конечных точек служб. Эта конфигурация поддерживается во всех планах, которые поддерживают интеграцию виртуальной сети. Выполните следующие действия, чтобы получить доступ к защищенной конечной точке службы:
- Настройте интеграцию вашего приложения-функции с региональной виртуальной сетью для подключения к определенной подсети.
- Перейти в целевую службу и настроить конечные точки службы для подсети интеграции.
Дополнительные сведения см. в статье Конечные точки служб для виртуальной сети.
Использование конечных точек служб
Чтобы ограничить доступ к определенной подсети, создайте правило ограничения с типом Виртуальная сеть. Затем можно выбрать подписку, виртуальную сеть и подсеть, к которым требуется разрешить или запретить доступ.
Если конечные точки службы еще не включены Microsoft.Web
для выбранной подсети, они автоматически включены, если не установлен флажок "Игнорировать отсутствующие конечные точки microsoft.Web service". Ситуация, в которой в приложении может потребоваться включить конечные точки служб, но не подсеть, зависит главным образом от наличия разрешений на их включение в подсети.
Если требуется, чтобы другие пользователи включили конечные точки служб в подсети, установите флажок Игнорировать отсутствующие конечные точки служб Microsoft.Web. Приложение настроено для конечных точек службы, которые будут включаться позже в подсети.
Конечные точки служб нельзя использовать для ограничения доступа к приложениям, работающим в среде службы приложений. Если ваше приложение находится в среде службы приложений, то для управления доступом к нему можно применять правила IP-адресов.
Узнайте, как настроить конечные точки служб, в разделе Руководство по установке закрытого доступа к сайту для Функций Azure.
Функции исходящей сети
Функции этого раздела можно использовать для управления исходящими подключениями, сделанными приложением.
Интеграция виртуальной сети
В этом разделе описаны функции, поддерживаемые Функциями для управления исходящими данными из приложения.
Интеграция виртуальной сети предоставляет приложению-функции доступ к ресурсам в виртуальной сети. После интеграции приложение направляет исходящий трафик через виртуальную сеть. Это позволяет приложению получать доступ к частным конечным точкам или ресурсам с правилами, разрешающие трафик только из выбранной подсети. Если назначение является IP-адресом за пределами виртуальной сети, исходный IP-адрес по-прежнему будет отправлен из одного из адресов, перечисленных в свойствах приложения, если только вы не настроили шлюз NAT.
Функции Azure поддерживают два вида интеграции виртуальной сети:
- Интеграция региональной виртуальной сети для приложений, работающих в планах размещения Flex Consumption, Elastic Premium, Dedicated (Служба приложений), а также планов размещения контейнерных приложений (рекомендуется)
- Интеграция с виртуальной сетью, требуемой шлюзом для приложений, работающих в плане размещения выделенных (Служба приложений)
Сведения о настройке интеграции виртуальной сети см. в статье Осуществление интеграции виртуальной сети.
Интеграция региональной виртуальной сети
Использование интеграции c региональной виртуальной сетью позволяет приложению получить доступ к следующим ресурсам:
- Ресурсы в той же виртуальной сети, что и приложение.
- Ресурсы в виртуальных сетях, подключенных к виртуальной сети, интегрированной с вашим приложением.
- Службы, защищенные конечной точкой службы.
- Ресурсы в подключениях Azure ExpressRoute.
- Ресурсы в одноранговых подключениях, включая подключения Azure ExpressRoute.
- Частные конечные точки
При использовании интеграции с региональной виртуальной сетью можно использовать следующие сетевые функции Azure:
- Группы безопасности сети (NSG). Можно блокировать исходящий трафик с помощью NSG, размещенного в подсети интеграции. Правила для входящих подключений не применяются, так как вы не можете использовать интеграцию с виртуальной сетью для предоставления входящего доступа к своему приложению.
- Таблицы маршрутов (UDR). Можно поместить таблицу маршрутов в подсеть интеграции для отправки исходящего трафика.
Примечание.
При маршрутизации всего исходящего трафика в виртуальную сеть он подпадает под действие групп безопасности сети и определяемые пользователем маршруты, которые применяются к подсети интеграции. При интеграции виртуальной сети исходящий трафик приложения-функции по-прежнему отправляется на общедоступные IP-адреса с адресов, перечисленных в свойствах приложения, если только не указаны маршруты, которые направляют трафик в другое место.
Интеграция с региональной виртуальной сетью не может использовать порт 25.
Рекомендации по плану потребления Flex:
- Убедитесь, что
Microsoft.App
поставщик ресурсов Azure включен для подписки, выполнив следующие инструкции. Это необходимо для делегирования подсети. - Делегирование подсети, необходимое при выполнении в плане
Microsoft.App/environments
потребления Flex. Это отличается от планов Elastic Premium и выделенных (Служба приложений), которые имеют другое требование делегирования. - Вы можете запланировать использование 40 IP-адресов в максимальной степени для одного приложения-функции, даже если приложение масштабируется более 40. Например, если у вас есть 15 приложений функций Flex Consumption, интегрированных в одну подсеть, необходимо спланировать использование 15x40 = 600 IP-адресов, используемых в большинстве случаев. Это ограничение подлежит изменению и не применяется.
- Подсеть не может использоваться для других целей (например, частных или конечных точек службы или делегирована любому другому плану размещения или службе). Хотя вы можете совместно использовать одну подсеть с несколькими приложениями Flex Consumption, сетевые ресурсы используются в этих приложениях-функциях, что может привести к тому, что одно приложение влияет на производительность других пользователей в одной подсети.
Рекомендации по планам эластичных приложений Premium, Выделенных (Служба приложений) и контейнеров:
- Эта функция доступна для Elastic Premium и Служба приложений Premium V2 и Premium V3. Она также доступна в плане "Стандартный", но только в новых развертываниях Службы приложений. Если вы используете более раннее развертывание, эту функцию можно использовать только начиная с плана "Премиум V2" службы приложений. Если вы хотите проверить, можете ли вы использовать эту функцию в стандартном плане, создайте приложение в плане "Премиум V3" Службы приложений. Эти планы поддерживаются только в новых развертываниях. После этого при необходимости вы можете уменьшить масштаб обратно.
- Эта функция не может использоваться приложениями плана "Изолированный", которые находятся в Среде службы приложений.
- Приложение и виртуальная сеть должны находиться в одном регионе.
- Для этой функции требуется неиспользуемая подсеть размером /28 или больше в виртуальной сети Azure Resource Manager.
- Подсеть интеграции может использоваться только одним планом службы приложений.
- Для каждого плана Служба приложений можно выполнить до двух интеграции региональной виртуальной сети. Несколько приложений в рамках плана службы приложений могут использовать одну интеграцию с подсетью.
- Невозможно удалить виртуальную сеть с интегрированным приложением. Перед удалением виртуальной сети необходимо удалить интеграцию.
- Невозможно изменить подписку приложения или плана, пока есть приложение, использующее интеграцию с региональной виртуальной сетью.
Включение интеграции с виртуальной сетью
В приложении-функции в портал Azure выберите "Сеть", а затем в разделе "Интеграция виртуальной сети" щелкните здесь, чтобы настроить.
Выберите Добавить виртуальную сеть.
Раскрывающийся список содержит все виртуальные сети Azure Resource Manager в рамках вашей подписки для данного региона. Выберите виртуальную сеть, интеграцию с которой вы хотите выполнить.
Планы размещения Flex Consumption и Elastic Premium поддерживают только интеграцию региональной виртуальной сети. Если виртуальная сеть находится в том же регионе, создайте новую подсеть или выберите пустую, предустановив подсеть.
Чтобы выбрать виртуальную сеть в другом регионе, у вас должен быть подготовлен к работе шлюз виртуальных сетей с активированной функцией "точка — сеть". Интеграция виртуальной сети между регионами поддерживается только для выделенных планов, но глобальные пиринги работают с интеграцией региональной виртуальной сети.
Во время интеграции приложение перезапускается. После завершения интеграции вы увидите сведения о виртуальной сети, с которыми вы интегрированы. По умолчанию включена функция Route All, а весь трафик направляется в виртуальную сеть.
Если вы предпочитаете маршрутизировать только частный трафик (RFC1918 трафик), выполните действия, описанные в этой статье Служба приложений.
подсети;
Интеграция виртуальной сети зависит от выделенной подсети. При подготовке подсети подсеть Azure теряет пять IP-адресов в начале диапазона. Для планов Elastic Premium и Служба приложений один адрес используется из подсети интеграции для каждого экземпляра плана. При масштабировании приложения до четырех экземпляров используются четыре адреса. Для потребления Flex это не применяется, а экземпляры используют IP-адреса.
В планах Elastic Premium и Выделенных (Служба приложений) необходимое адресное пространство увеличивается в течение короткого периода времени при увеличении или уменьшении размера экземпляра. Это влияет на реальные доступные поддерживаемые экземпляры для заданного размера подсети. В следующей таблице показаны как максимальные доступные адреса для блока CIDR, так и влияние этого значения на горизонтальное масштабирование:
Размер блока CIDR | Макс. доступных адресов | Макс. масштабирование по горизонтали (экземпляры)* |
---|---|---|
/28 | 11 | 5 |
/27 | 27 | 13 |
/26 | 59 | 29 |
*Предполагается, что вам нужно увеличить или уменьшить размер или номер SKU в какой-либо момент.
Так как размер подсети нельзя изменить после назначения, используйте подсеть, которая достаточно велика для размещения любого масштаба, которого может достигнуть ваше приложение. Чтобы избежать проблем с емкостью подсети для планов Elastic Premium функций, следует использовать /24 с 256 адресами для Windows и /26 с 64 адресами для Linux. При создании подсетей на портале Azure в рамках интеграции с виртуальной сетью требуемый минимальный размер составляет /24 для Windows и /26 для Linux.
План потребления Flex позволяет нескольким приложениям, работающим в плане потребления Flex, интегрироваться с одной подсетью. Это не так для планов размещения Elastic Premium и Выделенных (Служба приложений). Эти планы позволяют подключаться только к двум виртуальным сетям с каждым планом Служба приложений. Несколько приложений из одного плана Служба приложений могут присоединиться к одной подсети, но приложения из другого плана не могут использовать ту же подсеть.
Эта функция полностью поддерживается для приложений Windows и Linux, включая пользовательские контейнеры. Все эти особенности работы действуют одинаково в приложениях Windows и Linux.
Группы безопасности сети
Группы безопасности сети можно использовать для управления трафиком между ресурсами в виртуальной сети. Например, можно создать правило безопасности, которое блокирует исходящий трафик приложения от достижения ресурса в виртуальной сети или выхода из сети. Эти правила безопасности применяются к приложениям, которые настроили интеграцию виртуальной сети. Чтобы заблокировать трафик на общедоступные адреса, необходимо включить интеграцию виртуальной сети и route All. Правила для входящих подключений в группе безопасности сети не применяются к вашему приложению, так как интеграция с виртуальной сетью влияет только на трафик, исходящий из приложения.
Чтобы управлять входящим трафиком к приложению, используйте функцию ограничения доступа. Группа безопасности сети, применяемая к подсети интеграции, действует независимо от любых маршрутов, применяемых к подсети интеграции. Если приложение-функция интегрирована с поддержкой Route All , и у вас нет маршрутов, влияющих на трафик общедоступного адреса в подсети интеграции, все исходящий трафик по-прежнему зависит от групп безопасности сети, назначенных подсети интеграции. Если параметр Route All отключен, действие групп безопасности сети будет распространяться только на трафик RFC1918.
Маршруты
Таблицы маршрутов можно использовать для маршрутизации исходящего трафика из приложения в нужное место. По умолчанию таблицы маршрутов влияют только на трафик с частных адресов (RFC1918). Если включена функция Route All , все исходящие вызовы затрагиваются. Если параметрRoute All отключен, таблицы маршрутов затрагивают только частный трафик (RFC1918). Маршруты, настроенные в подсети интеграции, не повлияют на ответы на входящие запросы приложений. Местами назначения часто являются брандмауэры и шлюзы.
Если требуется маршрутизировать весь исходящий трафик локально, можно использовать таблицу маршрутов для отправки всего исходящего трафика на шлюз ExpressRoute. Если вы направляете трафик в шлюз, не забудьте установить маршруты во внешней сети для отправки ответов обратно.
Маршруты протокола BGP также влияют на трафик приложения. Если у вас есть маршруты BGP, например для шлюза ExpressRoute, они повлияют на исходящий трафик приложения. По умолчанию маршруты BGP влияют только на трафик с частных адресов (RFC1918). Если приложение-функция интегрировано с виртуальной сетью с включенной функцией Route All, весь исходящий трафик будет затронут маршрутами BGP.
Ограничения исходящих IP-адресов
Ограничения исходящего IP-адреса доступны в плане потребления Flex, плане elastic Premium, плане Служба приложений или Среда службы приложений. Вы можете настроить ограничения исходящего трафика для виртуальной сети, в которой развернута Среда службы приложений.
Если вы интегрируете приложение-функцию в план Elastic Premium или план Служба приложений с виртуальной сетью, приложение по-прежнему может выполнять исходящие вызовы в Интернет по умолчанию. Интеграция приложения-функции с виртуальной сетью с включенной функцией Route All позволяет принудительно отправлять весь исходящий трафик в виртуальную сеть, где правила группы безопасности сети можно использовать для ограничения трафика. Для Flex Consumption весь трафик уже направляется через виртуальную сеть и маршрут all не нужен.
Инструкции по управлению исходящим IP-адресом с помощью виртуальной сети см. в разделе Учебник. Управление исходящим IP-адресом Функций Azure с помощью шлюза NAT виртуальной сети Azure.
частные зоны Azure DNS;
После интеграции приложения с виртуальной сетью оно использует тот же DNS-сервер, с которым настроена виртуальная сеть, и будет работать с частными зонами Azure DNS, связанными с виртуальной сетью.
Автоматизация
Следующие API позволяют программно управлять интеграцией региональных виртуальных сетей.
- Azure CLI. Используйте команды
az functionapp vnet-integration
для добавления, перечисления или удаления интеграции региональной виртуальной сети. - Шаблоны ARM. Интеграцию региональной виртуальной сети можно включить с помощью шаблона Azure Resource Manager. Полный пример см. в этом шаблоне быстрого запуска функций.
Гибридные подключения
Гибридные подключения — это функция Azure Relay, которую можно использовать для доступа к ресурсам приложения в других сетях. Они обеспечивают доступ из вашего приложения к конечной точке приложения. Она не может быть использована для доступа к приложению. Гибридные подключения доступны для функций, которые везде работают в Windows, кроме плана потребления.
При использовании в Функциях Azure каждое гибридное подключение коррелирует с одной комбинацией узла TCP и TCP-порта. Это означает, что конечная точка гибридного подключения может быть размещена в любой операционной системе и приложении, пока вы предоставляете доступ к TCP-порту прослушивания. Гибридным подключениям не важен используемый протокол приложения или ресурсы, к которым вы обращаетесь. Они просто предоставляют доступ к сети.
Дополнительные сведения см. в App Service documentation for Hybrid Connections (Документация по Службе приложений для гибридных подключений). Эти же шаги конфигурации поддерживают Функции Azure.
Внимание
Гибридные подключения поддерживаются только в том случае, если приложение-функция работает в Windows. Приложения Linux не поддерживаются.
Подключение к службам Azure через виртуальную сеть
Интеграция виртуальной сети позволяет приложению-функции получать доступ к ресурсам в виртуальной сети. В этом разделе рассматриваются аспекты, которые следует учитывать при попытке подключения приложения к определенным службам.
Ограничьте учетную запись хранения виртуальной сети
Примечание.
Чтобы быстро развернуть приложение-функцию с включенными частными конечными точками в учетной записи хранения, см. следующий шаблон: приложение-функция с служба хранилища Azure частными конечными точками.
Когда вы создаете приложения-функции, необходимо создать или привязать учетную запись хранения Azure общего назначения, поддерживающую хранилища BLOB-объектов, очередей и таблиц. Эту учетную запись хранения можно изменить на ту, которая защищена конечными точками службы или частной конечной точкой.
Вы можете использовать учетную запись хранения с ограниченным доступом к сети с приложениями-функциями в планах Flex Consumption, Elastic Premium и Выделенных (Служба приложений), а план потребления не поддерживается. Для планов Elastic Premium и Dedicated необходимо убедиться, что маршрутизация частного общего ресурса контента настроена. Сведения о настройке приложения-функции с помощью учетной записи хранения, защищенной виртуальной сетью, см. в статье "Ограничить учетную запись хранения виртуальной сетью".
Использование возможностей Key Vault
Вы можете использовать возможности Azure Key Vault, чтобы извлекать секреты из Azure Key Vault в приложении Функций Azure без каких-либо изменений кода. Azure Key Vault — это служба, которая обеспечивает централизованное управление секретами с полным контролем над политиками доступа и журналом аудита.
Если для приложения настроена интеграция с виртуальной сетью, то для получения секретов из хранилища с ограниченным сетевым доступом можно использовать ссылки Key Vault.
Триггеры виртуальной сети (без HTTP)
Для рабочей нагрузки может потребоваться, чтобы приложение было активировано из источника событий, защищенного виртуальной сетью. Существует два варианта, если вы хотите, чтобы приложение динамически масштабировалось на основе количества событий, полученных из источников триггеров, отличных от HTTP:
- Запустите приложение-функцию в режиме Flex Consumption.
- Запустите приложение-функцию в плане Elastic Premium и включите поддержку триггера виртуальной сети.
Приложения-функции, работающие на выделенных планах (Служба приложений), не масштабируются динамически на основе событий. Скорее, горизонтальное масштабирование определяется заданными правилами автомасштабирования .
План Elastic Premium с триггерами виртуальной сети
План Elastic Premium позволяет создавать функции, которые активируются службами, защищенными виртуальной сетью. Эти триггеры, отличные от HTTP, называются триггерами виртуальной сети.
По умолчанию триггеры виртуальной сети не приводят к масштабированию приложения-функции за пределами предварительного числа экземпляров. Однако некоторые расширения поддерживают триггеры виртуальной сети, которые приводят к динамическому масштабированию приложения-функции. Вы можете включить этот динамический мониторинг масштабирования в приложении-функции для поддерживаемых расширений одним из следующих способов:
На портале Azure перейдите к своему приложению-функции.
В разделе "Параметры" выберите "Конфигурация", а затем на вкладке "Параметры среды выполнения" установите для параметра "Мониторинг масштаба среды выполнения" значение "Вкл.".
Нажмите кнопку "Сохранить", чтобы обновить конфигурацию приложения-функции и перезапустить приложение.
Совет
Включение мониторинга триггеров виртуальной сети может повлиять на производительность приложения, хотя это влияние, скорее всего, будет очень небольшим.
Поддержка динамического мониторинга триггеров виртуальной сети недоступна в среде выполнения Функций версии 1.x.
Расширения в этой таблице поддерживают динамический мониторинг триггеров виртуальной сети. Чтобы получить лучшую производительность масштабирования, необходимо обновить до версий, которые также поддерживают масштабирование на основе целевых версий.
Расширение (минимальная версия) | Только мониторинг масштабирования среды выполнения | Масштабирование на основе целевого объекта |
---|---|---|
Microsoft.Azure.WebJobs.Extensions.CosmosDB | > 3.0.5 | > 4.1.0 |
Microsoft.Azure.WebJobs.Extensions.DurableTask | > 2.0.0 | Н/Д |
Microsoft.Azure.WebJobs.Extensions.EventHubs | > 4.1.0 | > 5.2.0 |
Microsoft.Azure.WebJobs.Extensions.ServiceBus | > 3.2.0 | > 5.9.0 |
Microsoft.Azure.WebJobs.Extensions.Storage | > 3.0.10 | > 5.1.0* |
* Только хранилище очередей.
Внимание
При включении мониторинга триггеров виртуальной сети только триггеры для этих расширений могут привести к динамическому масштабированию приложения. Триггеры из расширений, не входящих в эту таблицу, по-прежнему можно использовать, но они не будут вызывать масштабирование за пределы предварительно теплого числа экземпляров. Полный список всех расширений триггеров и привязок см. в разделе "Триггеры и привязки".
План службы приложений и среда службы приложений с триггерами виртуальной сети
При запуске приложения-функции в плане Служба приложений или Среда службы приложений можно создавать функции, активируемые ресурсами, защищенными виртуальной сетью. Для правильной активации функций приложение должно быть подключено к виртуальной сети с доступом к ресурсу, определенному в подключении триггера.
Например, предположим, что вам нужно настроить Azure Cosmos DB для приема трафика только из виртуальной сети. В этом случае приложение-функцию необходимо развернуть в плане службы приложений, который обеспечивает интеграцию виртуальной сети с этой виртуальной сетью. Интеграция включает функцию, чтобы она была активирована через ресурс Azure Cosmos DB.
Рекомендации по тестированию
При тестировании функций в приложении-функции с частными конечными точками необходимо выполнить тестирование из одной виртуальной сети, например на виртуальной машине в этой сети. Чтобы использовать параметр Code + Test на портале на этой виртуальной машине, необходимо добавить следующие источники CORS в приложение-функцию:
https://functions-next.azure.com
https://functions-staging.azure.com
https://functions.azure.com
https://portal.azure.com
Если у вас есть ограниченный доступ к приложению-функции с частными конечными точками или любым другим ограничением доступа, необходимо также добавить тег AzureCloud
службы в список разрешенных. Чтобы обновить разрешенный список, выполните указанные ниже действия.
Перейдите к приложению-функции и выберите "Параметры>сети", а затем выберите "Входящий доступ к конфигурации>общедоступной сети".
Убедитесь, что для общедоступного сетевого доступа задано значение "Включено" из выбора виртуальных сетей и IP-адресов.
Добавьте правило в разделе "Доступ к сайту" и правила:
Выберите
Service Tag
в качестве типа параметров источника иAzureCloud
в качестве тега службы.Убедитесь, что действие разрешено, и задайте требуемое имя и приоритет.
Устранение неполадок
Эта функция просто настраивается, но это не гарантирует отсутствия проблем при ее использовании. При возникновении проблем с доступом к нужной конечной точке можно воспользоваться некоторыми служебными программами для проверки подключения из консоли приложения. Вы можете использовать две консоли: одной из таких консолей является Kudu, а другая консоль находится на портале Azure. Чтобы открыть консоль Kudu из приложения, выберите последовательно пункты Инструменты>Kudu. Доступ к консоли Kudu можно также получить по адресу [sitename].scm.azurewebsites.net. После загрузки веб-сайта перейдите на вкладку Консоль отладки. Чтобы получить доступ к консоли на портале Azure из приложения, перейдите по пунктам Инструменты>Консоль.
Инструменты
В собственных приложениях Windows такие инструменты, как ping, nslookup и tracert не будут работать в консоли из-за ограничений безопасности (они работают в пользовательских контейнерах Windows). Для устранения этого недостатка добавлены два других инструмента. Для проверки работоспособности DNS добавлен инструмент с именем nameresolver.exe. Синтаксис:
nameresolver.exe hostname [optional: DNS Server]
Для проверки имен узлов, которые использует ваше приложение, можно использовать команду nameresolver. Таким образом можно обнаруживать ошибки в настройке DNS-сервера или проблемы с доступом к DNS-серверу. DNS-сервер, используемый приложением, можно посмотреть в консоли с помощью переменных среды WEBSITE_DNS_SERVER и WEBSITE_DNS_ALT_SERVER.
Примечание.
Средство nameresolver.exe в настоящее время не работает в пользовательских контейнерах Windows.
Чтобы проверить TCP-подключение по комбинации "узел: порт", можно воспользоваться следующим инструментом. Этот инструмент называется tcpping.exe и использует следующий синтаксис.
tcpping.exe hostname [optional: port]
Служебная программа tcpping сообщает, возможно ли получить доступ к определенному узлу и порту. Сообщение об успешном выполнении отображается только с том случае, когда приложение ожидает передачи данных по комбинации "узел: порт", а также есть доступ по сети из приложения к указанным узлу и порту.
Доступ для отладки к ресурсам, размещенным в виртуальной сети
Имеется несколько причин, вследствие которых у приложения могут возникнуть проблемы с доступом к определенной комбинации "узел: порт". Наиболее распространенными из таких причин являются следующие.
- Брандмауэр блокирует доступ. Если используется брандмауэр, может быть превышено время ожидания для протокола TCP. В нашем случае это 21 секунда. Проверьте подключение с помощью средства tcpping. Время ожидания для протокола TCP может быть превышено и по многим другим причинам, но начать стоит именно с этой.
- Служба DNS недоступна. Время ожидания для DNS составляет 3 секунды на каждый DNS-сервер. Если у вас два DNS-сервера, то время ожидания составляет 6 секунд. Используйте средство nameresolver для проверки работы DNS. Инструмент nslookup нельзя использовать, так как он игнорирует настройки DNS для виртуальной сети. Если DNS-сервер недоступен, возможно, что он либо заблокирован брандмауэром или NSG, либо не работает.
Если эти рекомендации не помогут вам решить проблему, проверьте еще несколько факторов:
Интеграция региональной виртуальной сети
- Ваш целевой адрес не соответствует требованиям RFC1918, а параметр Маршрутизировать весь трафик не включен?
- Блокируется ли исходящий трафик из вашей подсети интеграции с помощью NSG?
- Если вы работаете через Azure ExpressRoute или VPN, настроена ли на вашем локальном шлюзе обратная маршрутизация трафика для Azure? Если к конечным точкам в виртуальной сети вы можете получить доступ, а в локальной среде нет, то следует проверить настройку маршрутов.
- Имеются ли у вас достаточные разрешения для настройки делегирования в подсети интеграции? Во время настройки интеграции с региональной виртуальной сетью ваша подсеть интеграции делегируется ресурсу Microsoft.Web/serverFarms. Пользовательский интерфейс интеграции с виртуальной сетью делегирует подсеть ресурсу Microsoft.Web/serverFarms автоматически. Если у вашей учетной записи нет достаточных сетевых разрешений для настройки делегирования, вам следует обратиться к пользователю, который может задать в подсети интеграции атрибуты, необходимые для делегирования подсети. Чтобы вручную делегировать подсеть интеграции, перейдите в пользовательский интерфейс подсети виртуальной сети Azure и задайте делегирование для ресурса Microsoft.Web/serverFarms.
Интеграция с виртуальной сетью на базе шлюза
- Находится ли диапазон адресов "точка — сеть" в диапазонах, предусмотренных требованиями RFC 1918 (10.0.0.0-10.255.255.255 / 172.16.0.0-172.31.255.255 / 192.168.0.0-192.168.255.255)?
- Отображается ли на портале шлюз как работающий? Если шлюз не работает, восстановите его работоспособность.
- Отображаются ли сертификаты как синхронизированные или можно предположить, что конфигурация сети была изменена? Если сертификаты не синхронизированы или вы предполагаете, что в конфигурацию виртуальной сети были внесены изменения, не синхронизированные с планами ASP, выберите Синхронизировать сеть.
- Если вы работаете через VPN, настроена ли на вашем локальном шлюзе обратная маршрутизация трафика для Azure? Если к конечным точкам в виртуальной сети вы можете получить доступ, а в локальной среде нет, то следует проверить настройку маршрутов.
- Вы используете шлюз с реализацией совместной работы, поддерживающий сразу два таких варианта, как "точка — сеть" и ExpressRoute? Шлюзы с режимом сосуществования не поддерживаются при интеграции с виртуальной сетью.
Отладка сетевых проблем является сложной задачей, так как не видно, что блокирует доступ к определенной комбинации "узел: порт". К некоторым причинам относятся следующие:
- На узле запущен брандмауэр, который блокирует доступ к порту приложения для диапазона IP-адресов "точка — сеть". Для реализации подключения между подсетями часто требуется разрешить общий доступ.
- Целевой узел не работает.
- Приложение не работает.
- Указан неверный IP-адрес или неверное имя узла.
- Приложение ожидает передачи данных не по тому порту, который предполагается. Вы можете сопоставить ИД процесса с портом прослушивания при помощи команды "netstat -aon" в узле конечной точки.
- Группы безопасности сети настроены на блокирование доступа к узлу и порту приложения для диапазона IP-адресов "точка — сеть".
Вы не знаете, какой адрес в действительности используется приложением. Это может быть любой адрес из подсети интеграции или диапазона адресов "точка — сеть", поэтому необходимо разрешить доступ для всего диапазона адресов.
Дополнительные действия по отладке:
- Войдите на виртуальную машину в вашей виртуальной сети и попробуйте из нее обратиться к нужной комбинации "узел: порт". Чтобы проверить доступ TCP, используйте команду PowerShell Test-NetConnection. Синтаксис:
Test-NetConnection hostname [optional: -Port]
- Откройте приложение на виртуальной машине и проверьте из консоли приложения доступ к узлу и порту с помощью инструмента tcpping.
Локальные ресурсы
Если приложение не может перейти к ресурсу локально, проверьте, можно ли перейти к ресурсу через виртуальную сеть. Чтобы проверить доступ по протоколу TCP, используйте команду PowerShell Test-NetConnection. Если виртуальная машина не может подключиться к локальному ресурсу, возможно, неправильно настроено подключение VPN или ExpressRoute.
Если размещенная в виртуальной сети виртуальная машина может взаимодействовать с локальной системой, а приложение — нет, это может быть вызвано одной из следующих причин.
- Не настроена маршрутизация для подсети или для диапазонов адресов подключений "точка — сеть" в локальном шлюзе.
- Группы безопасности сети блокируют доступ к диапазону IP-адресов подключений "точка — сеть".
- Локальные брандмауэры блокируют трафик из диапазона IP-адресов подключений "точка — сеть".
- Вы пытаетесь обратиться к адресу, не соответствующему требованиям RFC 1918, используя возможности интеграции с региональной виртуальной сетью.
Удаление плана службы приложений или веб-приложения перед отключением интеграции с виртуальной сетью
Если вы удалили веб-приложение или план службы приложений без предварительного отключения интеграции с виртуальной сетью, то не сможете выполнять операции обновления или удаления в виртуальной сети или подсети, которая использовалась для интеграции с удаленным ресурсом. Делегирование подсети "Microsoft.Web/serverFarms" по-прежнему останется назначенным вашей подсети и будет препятствовать операциям обновления и удаления.
Чтобы снова выполнить обновление или удаление для подсети или виртуальной сети, нужно повторно создать интеграцию с виртуальной сетью, а затем отключить ее:
- Повторно создайте план службы приложений и веб-приложение (обязательно используйте точно такое же имя веб-приложения, как и раньше).
- Перейдите в колонку "Сеть" в веб-приложении и настройте интеграцию с виртуальной сетью.
- После настройки интеграции с виртуальной сетью нажмите кнопку "Отключить".
- Удалите план службы приложений или веб-приложение.
- Обновите или удалите подсеть или виртуальную сеть.
Если после выполнения указанных выше действий проблемы с интеграцией с виртуальной сетью продолжают возникать, обратитесь в службу поддержки Майкрософт.
Средство устранения неполадок сети
Для устранения проблем с подключением можно также использовать средство устранения неполадок с сетью. Чтобы открыть средство устранения неполадок сети, перейдите в приложение в портал Azure. Выберите диагностику и решить проблему, а затем найдите средство устранения неполадок сети.
Проблемы с подключением— проверяет состояние интеграции виртуальной сети, включая проверку того, назначен ли частный IP-адрес всем экземплярам плана и параметрам DNS. Если настраиваемое DNS не настроено, применяется Azure DNS по умолчанию. Средство устранения неполадок также проверяет наличие распространенных зависимостей приложения-функции, включая подключение к служба хранилища Azure и другим зависимостям привязки.
Проблемы с конфигурацией. Этот средство устранения неполадок проверяет допустимость подсети для интеграции виртуальной сети.
Проблема с удалением подсети или виртуальной сети. Это средство устранения неполадок проверяет наличие блокировок подсети и если она имеет неиспользуемые связи связи служб, которые могут блокировать удаление виртуальной сети или подсети.
Следующие шаги
Дополнительные сведения о сети и Функциях Azure:
- Следуйте руководству по началу работы с интеграцией виртуальной сети
- Прочтите часто задаваемые вопросы по функциям сети
- Узнайте больше об интеграции приложения виртуальной сети со Службой приложений и Функциями
- Узнайте больше о виртуальных сетях в Azure
- Общие сведения о функциях сети и Средах службы приложений
- Подключитесь к индивидуальным локальным ресурсам без изменений в брандмауэре, используя гибридные подключения