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


Настройка ограничений доступа в Azure App Service

Когда вы настраиваете ограничения доступа, вы можете определить приоритетный список разрешений/запретов, который контролирует сетевой доступ к вашему приложению. Список может включать IP-адреса или подсети виртуальной сети Azure. Когда есть одна или несколько записей, в конце списка имеется неявное deny all. Дополнительную информацию см. в разделе Ограничения доступа к службам Azure App Service.

Возможность ограничения доступа работает со всеми рабочими нагрузками, размещёнными в сервисе Azure App Service. Рабочие нагрузки могут включать веб-приложения, API-приложения, Linux-приложения, пользовательские контейнеры Linux и приложения Azure Functions.

Когда кто-то отправляет запрос вашему приложению, адрес FROM оценивается в соответствии с правилами в вашем списке ограничений доступа. Если адрес FROM находится в подсети, настроенной с конечными точками сервиса для Microsoft.Web, исходная подсеть сравнивается с правилами виртуальной сети в вашем списке ограничений доступа. Если адресу не разрешен доступ на основе правил в списке, служба отвечает с кодом состояния HTTP 403.

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

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

Примечание

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

Диаграмма, показывающая поток ограничений доступа.

Управление правилами ограничения доступа в портале

Чтобы добавить правило ограничения доступа к вашему приложению:

  1. Войдите в портал Azure.

  2. Выберите приложение, к которому вы хотите добавить ограничения доступа.

  3. В левом меню выберите Настройки>Сеть.

  4. На панели Сетевые настройки выберите параметр Доступ к общедоступной сети в разделе Конфигурация входящего трафика.

    Снимок экрана панели параметров сети App Service в портале Azure.

  5. На панели Access Restrictions просмотрите список правил ограничения доступа, которые заданы для вашего приложения.

    Скриншот панели

    Список отображает ограничения, которые в настоящее время применяются к приложению. Если ваше приложение имеет ограничения на виртуальную сеть, таблица показывает, включены ли конечные точки службы для Microsoft.Web. Если на вашем приложении не определены ограничения и ваше несопоставленное правило не установлено на Deny, приложение доступно отовсюду.

Разрешения

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

Действие Описание
Microsoft.Web/sites/config/read Получает настройки конфигурации веб-приложения.
Microsoft.Web/sites/config/write Обновляет настройки конфигурации веб-приложения.
Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action* Присоединяет ресурс, например учетную запись хранения или базу данных SQL, к подсети.
Microsoft.Web/sites/write** Обновляет настройки веб-приложения.

*Требуется только при добавлении правила для виртуальной сети (конечная точка службы)

**Требуется только если вы обновляете ограничения доступа через портал Azure

Если вы добавляете правило, основанное на конечной точке службы, и виртуальная сеть находится в другой подписке, чем приложение, убедитесь, что подписка с виртуальной сетью зарегистрирована для поставщика ресурсов Microsoft.Web. Вы можете явно зарегистрировать поставщика, но он также автоматически регистрируется, когда вы создаете первое веб-приложение в подписке. Для получения дополнительной информации см. Регистрация поставщика ресурсов.

Добавить правило ограничения доступа

Чтобы добавить правило ограничения доступа к вашему приложению, на панели Ограничения доступа выберите Добавить. Правило вступает в силу только после того, как вы его сохраните.

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

На панели Добавление ограничения доступа при создании правила выполните следующие действия:

  1. Под Действием выберите Разрешить или Запретить.
  2. Введите имя и описание правила (опционально).
  3. В поле Приоритет введите значение приоритета.
  4. В раскрывающемся списке Тип выберите тип правила. Различные типы правил описаны в следующих разделах.
  5. Введите входные данные, специфичные для правила. Выберите Добавить правило, чтобы добавить правило в список.
  6. Выберите Сохранить на панели Ограничения доступа.

Примечание

Существует ограничение на 512 правил ограничения доступа. Если вам требуется более 512 правил ограничений доступа, мы предлагаем рассмотреть использование автономного продукта безопасности. Подумайте о использовании Azure Front Door, Azure Application Gateway или другого веб-приложения модуля (WAF).

Установите правило на основе IP-адреса

Следуйте процедуре, описанной в предыдущем разделе, но с добавлением следующего:

  • На шаге 4 в выпадающем списке Тип выберите IPv4 или IPv6.

Укажите IP-адресный блок в бесклассовой междоменной маршрутизации (CIDR) как для адресов IPv4, так и для IPv6. Чтобы указать адрес, вы можете использовать что-то вроде 1.2.3.4/32, где первые четыре октета представляют ваш IP-адрес, а /32 — это маска. Нотация CIDR для всех адресов IPv4 — 0.0.0.0/0.

Примечание

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

Установите правило на основе конечной точки сервиса

  • Для шага 4 в раскрывающемся списке Тип выберите Виртуальная сеть.

    Скриншот панели

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

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

Если вам нужно, чтобы кто-то другой включил конечные точки службы на подсети, выберите Игнорировать отсутствие конечных точек службы Microsoft.Web. Ваше приложение настроено для конечных точек обслуживания. Их можно будет позже включить в подсеть.

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

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

Примечание

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

Установите правило, основанное на сервисных тегах

  • Для шага 4 в выпадающем списке Type выберите Service Tag.

    Снимок экрана панели

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

Примечание

Когда вы создаете правила на основе меток обслуживания через портал Azure или Azure CLI, вам необходим доступ на чтение на уровне подписки, чтобы получить полный список меток обслуживания для выбора/проверки. Кроме того, поставщик ресурсов Microsoft.Network должен быть зарегистрирован в подписке.

Редактировать правило

  1. Чтобы редактировать существующее правило ограничения доступа, перейдите на вкладку Ограничения доступа и выберите правило, которое вы хотите отредактировать.

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

  3. Выберите Сохранить, чтобы сохранить изменения.

    Примечание

    При редактировании правила нельзя переключаться между типами правил.

Удалить правило

  1. Чтобы удалить правило, на панели Ограничения доступа выберите правило или правила, которые вы хотите удалить, и затем выберите Удалить.

  2. Выберите Сохранить, чтобы сохранить изменения.

Снимок экрана панели ограничений доступа, показывающий многоточие «Удалить» рядом с правилом ограничения доступа, которое нужно удалить.

Сложные сценарии ограничения доступа

Далее описаны использование ограничений доступа в сложных сценариях.

Фильтр по заголовку HTTP

Вы можете добавить фильтры заголовков HTTP к любому правилу. Поддерживаются следующие имена заголовков HTTP:

  • X-Forwarded-For
  • X-Forwarded-Host
  • X-Azure-FDID
  • X-FD-HealthProbe

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

Правила с несколькими источниками

Правила для нескольких источников позволяют объединить до восьми диапазонов IP или восьми тегов обслуживания в одно правило. Используйте правила нескольких источников, если у вас более 512 диапазонов IP-адресов или если вы хотите создать логические правила. Например: логическое правило может включать несколько диапазонов IP-адресов в сочетании с одним фильтром HTTP-заголовка.

Многоканальные правила определяются так же, как и одноканальные правила, но каждый диапазон разделяется запятой.

Пример PowerShell:

Add-AzWebAppAccessRestrictionRule -ResourceGroupName "ResourceGroup" -WebAppName "AppName" `
  -Name "Multi-source rule" -IpAddress "192.168.1.0/24,192.168.10.0/24,192.168.100.0/24" `
  -Priority 100 -Action Allow

Заблокировать один IP-адрес

Если вы хотите явно заблокировать один IP-адрес или диапазон IP-адресов, но разрешить доступ ко всему остальному, вы можете добавить правило Deny для конкретного IP-адреса. Затем настройте действие для несовпадающих правил на Разрешить.

Снимок экрана панели ограничений доступа в портале Azure, показывающий один заблокированный IP-адрес.

Ограничить доступ к сайту системы управления конфигурациями

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

Скриншот панели

Ограничьте доступ к конкретному экземпляру Azure Front Door.

Трафик от Azure Front Door к вашему приложению исходит из известного набора IP-адресов, определенных в теге службы AzureFrontDoor.Backend. Используя правило ограничения тегов службы, вы можете ограничить трафик так, чтобы он исходил только от Azure Front Door. Чтобы гарантировать, что трафик исходит только из вашего конкретного экземпляра, вы должны дополнительно фильтровать входящие запросы на основе уникального HTTP-заголовка, который отправляет Azure Front Door.

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

Пример PowerShell:

$afd = Get-AzFrontDoor -Name "MyFrontDoorInstanceName"
Add-AzWebAppAccessRestrictionRule -ResourceGroupName "ResourceGroup" -WebAppName "AppName" `
  -Name "Front Door example rule" -Priority 100 -Action Allow -ServiceTag AzureFrontDoor.Backend `
  -HttpHeader @{'x-azure-fdid' = $afd.FrontDoorId}

Программное управление ограничениями доступа

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

Добавьте правила ограничения доступа для основного сайта

Вы можете программно добавить правила ограничения доступа для Main site, выбрав один из следующих вариантов:

Вы можете выполнить следующую команду в Azure Cloud Shell. Для получения дополнительной информации о команде см. az webapp config access-restriction.

az webapp config access-restriction add --resource-group ResourceGroup --name AppName \
  --rule-name 'IP example rule' --action Allow --ip-address 122.133.144.0/24 --priority 100

az webapp config access-restriction add --resource-group ResourceGroup --name AppName \
  --rule-name "Azure Front Door example" --action Allow --priority 200 --service-tag AzureFrontDoor.Backend \
  --http-header x-azure-fdid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Добавить правила ограничения доступа для сайта с расширенными инструментами

Вы можете добавить правила ограничения доступа для Advanced tool site программными средствами. Выберите один из следующих параметров:

Вы можете выполнить следующую команду в Cloud Shell. Для получения дополнительной информации о команде см. az webapp config access-restriction.

az webapp config access-restriction add --resource-group ResourceGroup --name AppName \
  --rule-name 'IP example rule' --action Allow --ip-address 122.133.144.0/24 --priority 100 --scm-site true

Измените действие неприменимых правил для основного сайта

Вы можете изменить Действие при несоответствии правила для Основного сайта программно, выбрав один из следующих вариантов:

Вы можете выполнить следующую команду в Cloud Shell. Для получения дополнительной информации о команде см. az resource. Допустимые значения для ipSecurityRestrictionsDefaultAction: Allow или Deny.

az resource update --resource-group ResourceGroup --name AppName --resource-type "Microsoft.Web/sites" \
  --set properties.siteConfig.ipSecurityRestrictionsDefaultAction=Allow

Изменить действие для неподходящего правила на сайте с расширенными инструментами

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

Вы можете выполнить следующую команду в Cloud Shell. Для получения дополнительной информации о команде см. az resource. Допустимые значения для scmIpSecurityRestrictionsDefaultAction: Allow или Deny.

az resource update --resource-group ResourceGroup --name AppName --resource-type "Microsoft.Web/sites" \
  --set properties.siteConfig.scmIpSecurityRestrictionsDefaultAction=Allow

Настройка ограничений доступа к Azure Functions

Ограничения доступа также доступны для функциональных приложений с такой же функциональностью, как у планов App Service. При включении ограничений доступа также отключается редактор кода в портале Azure для любых запрещённых IP-адресов.