Безопасное подключение к серверным ресурсам из Среды службы приложений

Важно!

Эта статья посвящена Среде службы приложений версии 1. 31 августа 2024 года будет прекращена поддержка Среды службы приложений версии 1. Имеется новая версия среды службы приложений, которая проще в использовании и которая работает на более мощной инфраструктуре. Чтобы узнать больше о новой версии, начните с изучения статьи Введение в Среду службы приложений. Если вы используете Среду службы приложений версии 1, выполните действия, описанные в этой статье, чтобы перейти на новую версию.

По состоянию на 29 января 2024 г. вы больше не можете создавать новые ресурсы Среда службы приложений версии 1 с помощью любого из доступных методов, включая шаблоны ARM/Bicep, портал Azure, Azure CLI или REST API. Необходимо выполнить миграцию в Среда службы приложений версии 3 до 31 августа 2024 г., чтобы предотвратить удаление ресурсов и потерю данных.

Так как среда службы приложений всегда создается либо в виртуальной сети Azure Resource Manager, либо в виртуальной сети, использующей классическую модель развертывания, исходящие подключения из среды службы приложений к другим внутренним ресурсам могут передаваться исключительно по виртуальной сети. Начиная с июня 2016 года среды ASE можно также развертывать в виртуальных сетях, использующих либо диапазоны общедоступных адресов, либо адресные пространства RFC1918 (частные адреса).

Например, SQL Server может работать в кластере виртуальных машин с заблокированным портом 1433. Конечная точка может быть ACLd, разрешая только доступ от других ресурсов в той же виртуальной сети.

Другой пример: конфиденциальные конечные точки могут выполняться локально и быть подключены к Azure через подключение типа сеть — сеть или канал Azure ExpressRoute. Таким образом, только ресурсы в виртуальных сетях, подключенных к туннелям "сеть — сеть" или ExpressRoute, смогут иметь доступ к локальным конечным точкам.

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

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

Примечание.

Хотя эта статья относится к веб-приложениям, она также применима к приложениям API и мобильным приложениям.

Требования к DNS и исходящим подключениям

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

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

Также рекомендуется настроить пользовательские DNS-серверы в виртуальной сети заранее, до создания среды службы приложений. Если конфигурация виртуальной сети DNS изменяется во время создания Среды службы приложений, это приведет к сбою процесса создания Среды службы приложений. Если же на другой стороне VPN-шлюза расположен пользовательский DNS-сервер, который недоступен или не работает, процесс создания Среды службы приложений также будет прерван с ошибкой.

Подключение к SQL Server

В типичной конфигурации SQL Server конечная точка прослушивает порт 1433:

SQL Server Endpoint

Существует два подхода к ограничению трафика к этой конечной точке.

Ограничение доступа с помощью сетевых списков управления доступом

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

Network Access Control List Example

Любое приложение, работающее в Среде службы приложений и в той же виртуальной сети, что и SQL Server, может подключиться к экземпляру сервера SQL Server. Используйте внутренний IP-адрес виртуальной сети для виртуальной машины с SQL Server.

Пример строки подключения ниже ссылается на SQL Server, использующий частный IP-адрес.

Server=tcp:10.0.1.6;Database=MyDatabase;User ID=MyUser;Password=PasswordHere;provider=System.Data.SqlClient

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

Ограничение доступа с помощью группы сетевой безопасности

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

Сначала необходимо будет создать группу сетевой безопасности:

New-AzureNetworkSecurityGroup -Name "testNSGexample" -Location "South Central US" -Label "Example network security group for an app service environment"

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

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

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

Get-AzureNetworkSecurityGroup -Name "testNSGExample" | Set-AzureNetworkSecurityGroupToSubnet -VirtualNetworkName 'testVNet' -SubnetName 'Subnet-1'

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

Default Network Security Rules

Начало работы

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

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

Примечание.

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