Средства контроля сетевого доступа базы данных SQL Azure и Azure Synapse Analytics

При создании логического сервера SQL Server из портала Azure для базы данных SQL Azure и Azure Synapse Analytics результат представляет собой общедоступную конечную точку в формате yourservername.database.windows.net.

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

  • Разрешить службы Azure. Если задано значение ON, другие ресурсы в пределах границ Azure, например виртуальная машина Azure, могут получить доступ к базе данных SQL
  • Правила брандмауэра IP-адресов. Используйте эту функцию, чтобы явно разрешить подключения с определенного IP-адреса, например с локальных компьютеров

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

  • Правила брандмауэра виртуальной сети. Используйте эту функцию, чтобы разрешить трафик из определенной виртуальной сети в пределах границы Azure.
  • Приватный канал. Используйте эту функцию, чтобы создать частную конечную точку для логического сервера SQL Server в определенной виртуальной сети

Важно!

Эта статья не относится к управляемому экземпляру базы данных SQL. Дополнительные сведения о конфигурации сети см. в руководстве по подключению управляемого экземпляра SQL Azure.

Подробное описание этих элементов управления доступом и их действия см. в приведенном ниже видеоролике:

Параметр "Разрешить службы Azure"

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

Этот параметр можно также изменить через панель брандмауэра после создания логического сервера SQL Server, как показано ниже.

Снимок экрана: управление брандмауэром сервера

Если задано значение ON, сервер разрешает передачу данных из всех ресурсов в пределах границы Azure, которые могут входить или не входить в вашу подписку.

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

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

Служба импорта и экспорта

Служба импорта и экспорта не работает, если для параметра Разрешить доступ к службам Azure установлено значение OFF. Но эту проблему можно обойти, вручную запустив sqlpackage.exe с виртуальной машины Azure или выполнив экспорт непосредственно в коде с помощью API DACFx.

Синхронизация данных

Чтобы использовать функцию синхронизации данных с параметром Разрешить доступ к службам Azure, для которого установлено значение OFF, необходимо создать отдельные записи правил брандмауэра, чтобы добавить IP-адреса из тега службы SQL для региона, в котором размещена центральная база данных. Добавьте эти правила брандмауэра на уровне сервера на серверы, на которых размещены центральная и рядовая базы данных (которые могут находиться в разных регионах)

Используйте следующий сценарий PowerShell для создания IP-адресов, соответствующих тегу службы SQL для региона "Западная часть США"

PS C:\>  $serviceTags = Get-AzNetworkServiceTag -Location eastus2
PS C:\>  $sql = $serviceTags.Values | Where-Object { $_.Name -eq "Sql.WestUS" }
PS C:\> $sql.Properties.AddressPrefixes.Count
70
PS C:\> $sql.Properties.AddressPrefixes
13.86.216.0/25
13.86.216.128/26
13.86.216.192/27
13.86.217.0/25
13.86.217.128/26
13.86.217.192/27

Совет

Get-AzNetworkServiceTag возвращает глобальный диапазон для тега службы SQL, несмотря на указание параметра расположения. Не забудьте выполнить фильтрацию по региону, где размещена центральная база данных, используемая группой синхронизации

Обратите внимание, что выходные данные скрипта PowerShell находятся в нотации бесклассовой междоменной маршрутизации (CIDR). Необходимо выполнить преобразование в формат начального и конечного IP-адресов с помощью Get-IPrangeStartEnd.ps1 следующим образом:

PS C:\> Get-IPrangeStartEnd -ip 52.229.17.93 -cidr 26
start        end
-----        ---
52.229.17.64 52.229.17.127

Этот дополнительный скрипт PowerShell можно использовать для преобразования всех IP-адресов из CIDR в формат начального и конечного IP-адресов.

PS C:\>foreach( $i in $sql.Properties.AddressPrefixes) {$ip,$cidr= $i.split('/') ; Get-IPrangeStartEnd -ip $ip -cidr $cidr;}
start          end
-----          ---
13.86.216.0    13.86.216.127
13.86.216.128  13.86.216.191
13.86.216.192  13.86.216.223

Теперь можно добавить их как отдельные правила брандмауэра, а затем установить для параметра Разрешить службам Azure доступ к серверу значение OFF.

Правила брандмауэра для IP-адресов

Брандмауэр на основе IP-адреса — это функция логического сервера SQL Server в Azure, которая предотвращает любой доступ к серверу до тех пор, пока вы явно не добавите IP-адреса клиентских компьютеров.

Правила брандмауэра для виртуальной сети

В дополнение к правилам IP, брандмауэр сервера позволяет задавать правила виртуальной сети.
Чтобы узнать больше, ознакомьтесь со статьей Использование конечных точек служб и правил виртуальной сети для Базы данных SQL Azure и Хранилища данных SQL или посмотрите следующее видео:

Терминология сети Azure

При просмотре правил брандмауэра виртуальной сети учитывайте следующие термины сети Azure.

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

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

Конечные точки служб для виртуальной сети. Конечная точка службы для виртуальной сети — это подсеть, значения свойств которой включают в себя одно или несколько формальных имен типов службы Azure. В этой статье мы рассмотрим тип Microsoft.Sql, который относится к службе Azure, которая называется Базой данных SQL.

Правило виртуальной сети. Правило виртуальной сети для сервера — это подсеть, которая указана в списке управления доступом (ACL) сервера. Для включения в ACL для базы данных SQL подсеть должна содержать имя типа Microsoft.Sql. Правило виртуальной сети предписывает серверу принимать подключения от всех узлов, находящихся в подсети.

Правила брандмауэра для IP-адресов и виртуальной сети

Брандмауэр базы данных SQL Azure позволяет указать диапазоны IP-адресов, подключения с которых принимаются базой данных SQL. Эта методика хорошо подходит для постоянных IP-адресов, которые находятся за пределами частной сети Azure. Однако виртуальные машины в частной сети Azure настроены с использованием динамических IP-адресов. Динамические IP-адреса могут измениться после перезапуска виртуальной машины и, в свою очередь, сделать недействительным правило брандмауэра на основе IP-адресов. Было бы неразумно указывать динамический IP-адрес в правиле брандмауэра в рабочей среде.

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

Правила виртуальной сети проще устанавливать и управлять доступом из определенной подсети, содержащей ваши виртуальные машины.

Примечание

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

Приватный канал позволяет подключаться к серверу через частную конечную точку. Частная конечная точка — это частный IP-адрес в определенной виртуальной сети и подсети.

Дальнейшие действия