Правила брандмауэра для IP-адресов для Базы данных SQL Azure и Azure Synapse

ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных SQL Azure Azure Synapse Analytics

Например, при создании сервера в Базе данных SQL Azure или Azure Synapse Analytics с именем mysqlserver брандмауэр на уровне сервера блокирует доступ к общедоступной конечной точке сервера (которая доступна по адресу mysqlserver.database.windows.net). Для простоты База данных SQL используется как для базы данных SQL, так и для Azure Synapse Analytics.

Важно!

Эта статья не относится к управляемому экземпляру базы данных SQL Azure. Сведения о конфигурации сети см. в разделе Connect your application to Azure SQL Managed Instance (Подключение приложения к Управляемому экземпляру SQL Azure).

Azure Synapse поддерживает только правила брандмауэра для IP-адресов на уровне сервера. Правила брандмауэра для IP-адресов на уровне базы данных не поддерживаются.

Как работает брандмауэр

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

Схема конфигурации брандмауэра

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

Эти правила позволяют клиентам обращаться ко всему серверу, то есть ко всем базам данных, которыми он управляет. Эти правила хранятся в базе данных master. Для сервера можно задать не более 128 правил брандмауэра для IP-адресов на уровне сервера. Если у вас включен параметр Allow Azure Services and resources to access this server (Разрешить доступ к серверу службам и ресурсам Azure), они считаются одним правилом брандмауэра для сервера.

Правила брандмауэра для IP-адресов на уровне сервера можно настроить с помощью портала Azure, PowerShell или инструкций Transact-SQL.

  • Чтобы использовать портал или PowerShell, необходимо быть владельцем подписки или участником подписки.
  • Чтобы использовать Transact-SQL, необходимо подключиться к базе данных master в качестве субъекта серверного уровня или администратора Azure Active Directory. (Правило брандмауэра для IP-адресов на уровне сервера должно быть создано пользователем, имеющим разрешения уровня Azure.)

Примечание

По умолчанию во время создания логического сервера SQL Server на портале Azure для параметра Allow Azure Services and resources to access this server (Разрешить доступ к серверу службам и ресурсам Azure) задано значение Нет.

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

Правила брандмауэра для IP-адресов на уровне базы данных разрешают клиентам доступ к определенным (защищенным) базам данных. Такие правила создаются для каждой базы данных (в том числе базы данных master), и они будут храниться в отдельных базах данных.

  • Для создания правил брандмауэра для IP-адресов на уровне базы данных для базы данных master и пользовательской базы данных и управления этими правилами можно использовать только инструкции Transact-SQL, причем только после настройки первого правила брандмауэра на уровне сервера.
  • Если в правиле брандмауэра для IP-адресов на уровне базы данных указать диапазон IP-адресов, выходящий за пределы диапазона, указанного в правиле брандмауэра для IP-адресов на уровне сервера, доступ к базе данных смогут получить только те клиенты, которые имеют IP-адреса в диапазоне уровня базы данных.
  • Для базы данных можно задать не более 128 правил брандмауэра для IP-адресов на уровне базы данных. Дополнительные сведения о настройке правил брандмауэра для IP-адресов на уровне базы данных см. в примере ниже и в статье sp_set_database_firewall_rule (База данных SQL Azure).

Рекомендации по настройке правил брандмауэра

При возможности рекомендуется использовать правила брандмауэра для IP-адресов на уровне базы данных. Такой подход повышает безопасность и расширяет возможности для переноса базы данных. Правила брандмауэра для IP-адресов на уровне сервера следует использовать для администраторов. Их можно также использовать, если у вас много баз данных с одинаковыми требованиями к доступу и вы не хотите настраивать каждую из них по отдельности.

Примечание

Сведения о портативных базах данных в контексте непрерывности бизнес-процессов см. в разделе Требования к проверке подлинности для аварийного восстановления.

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

Необходимо ли полностью изолировать пользователей одной базы данных от пользователей другой базы данных ?

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

Необходим ли пользователям с этих IP-адресов доступ ко всем базам данных?

Если да, используйте правила брандмауэра для IP-адресов на уровне сервера, чтобы меньше настраивать правила брандмауэра для IP-адресов.

Пользователь или команда, которые настраивают правила брандмауэра для IP-адресов, имеют доступ только через портал Azure, PowerShell или REST API?

Если это так, необходимо использовать правила брандмауэра для IP-адресов на уровне сервера. Правила брандмауэра для IP-адресов на уровне базы данных можно настроить только с помощью Transact-SQL.

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

Если это так, используйте правила брандмауэра для IP-адресов на уровне сервера. Для настройки правил брандмауэра для IP-адресов на уровне базы данных с помощью Transact-SQL требуется по крайней мере разрешение CONTROL DATABASE на уровне базы данных.

Пользователь или команда, которые осуществляют настройку или аудит правил брандмауэра IP-адресов, централизованно управляют правилами брандмауэра IP-адресов для множества (возможно, сотен) баз данных?

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

Можно ли одновременно использовать правила брандмауэра для IP-адресов на уровне сервера и уровне базы данных?

Да. Некоторым пользователям, например администраторам, требуются правила брандмауэра для IP-адресов на уровне сервера. А другим пользователям, например пользователям приложения базы данных, необходимы правила брандмауэра для IP-адресов на уровне базы данных.

Подключения через Интернет

Когда компьютер пытается подключиться к серверу из Интернета, брандмауэр сначала проверяет исходный IP-адрес запроса относительно правил брандмауэра для IP-адресов на уровне базы данных для базы данных, к которой устанавливается подключение.

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

Примечание

Для доступа к базе данных SQL Azure с локального компьютера убедитесь, что брандмауэр сети и локального компьютера разрешает исходящие подключения через TCP-порт 1433.

Подключения извне Azure

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

Когда приложение из Azure пытается подключиться к серверу, брандмауэр проверяет, разрешены ли подключения Azure, проверяя наличие этого правила брандмауэра. Вы можете включить эту возможность непосредственно из колонки на портале Azure, включив параметр Allow Azure Services and resources to access this server (Разрешить доступ к серверу службам и ресурсам Azure) в параметрах брандмауэра и виртуальных сетей. При включении этого параметра создается правило брандмауэра для входящего трафика с IP-адресов 0.0.0.0-0.0.0.0 с именем AllowAllWindowsAzureIps. Для просмотра правила перейдите на представление sys.firewall_rules в базе данных master. Используйте PowerShell или Azure CLI, чтобы создать правило брандмауэра с начальным и конечным IP-адресами со значением 0.0.0.0, если вы не используете портал.

Важно!

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

Разрешения

Чтобы иметь возможность создавать правила брандмауэра для IP-адресов для SQL Server Azure и управлять ими, необходимо:

Создание и администрирование правил брандмауэра для IP-адресов

Первый параметр брандмауэра на уровне сервера можно создать на портале Azure или программно с помощью Azure PowerShell, Azure CLI или REST API Azure. Для создания дополнительных правил брандмауэра IP на уровне сервера и управления можно применять эти же методы или Transact-SQL.

Важно!

Правила брандмауэра для IP-адресов на уровне базы данных можно создавать только с помощью Transact-SQL. То же самое касается и управления ими.

Для повышения производительности правила брандмауэра для IP-адресов на уровне сервера временно кэшируются на уровне базы данных. Сведения об обновлении кэша см. в статье DBCC FLUSHAUTHCACHE (Transact-SQL).

Совет

Чтобы провести аудит изменений брандмауэра на уровне сервера и уровне базы данных, можно использовать аудит базы данных.

Управление правилами брандмауэра для IP-адресов на уровне сервера с помощью портала Azure

Чтобы задать правило брандмауэра для IP-адресов на уровне сервера на портале Azure, перейдите на страницу "Обзор" базы данных или сервера.

На странице обзора базы данных

  1. Чтобы задать правило брандмауэра для IP-адресов на уровне сервера на странице обзора базы данных, щелкните Установка брандмауэра сервера на панели инструментов, как показано на рисунке ниже.

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

    Откроется страница Параметры брандмауэра сервера.

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

    Настройка правила брандмауэра для IP-адресов на уровне сервера

На странице обзора сервера

Откроется страница обзора сервера. На ней указано полное имя сервера (например, mynewserver20170403.database.windows.net) и предоставлены параметры для дальнейшей настройки.

  1. Чтобы задать правило на уровне сервера на этой странице, выберите Брандмауэр в меню Параметры слева.

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

Управление правилами брандмауэра для IP-адресов с помощью Transact-SQL

Представление каталога или хранимая процедура Level Описание
sys.firewall_rules Сервер Отображает текущие правила брандмауэра для IP-адресов на уровне сервера
sp_set_firewall_rule Сервер Создает или обновляет правила брандмауэра для IP-адресов на уровне сервера
sp_delete_firewall_rule Сервер Удаляет правила брандмауэра для IP-адресов на уровне сервера
sys.database_firewall_rules База данных Отображает текущие правила брандмауэра для IP-адресов на уровне базы данных
sp_set_database_firewall_rule База данных Создает или обновляет правила брандмауэра для IP-адресов на уровне базы данных
sp_delete_database_firewall_rule Базы данных Удаляет правила брандмауэра для IP-адресов на уровне базы данных

Чтобы просмотреть имеющиеся правила, включить диапазон IP-адресов на сервере Contoso и удалить правило брандмауэра для IP-адресов, используйте следующий пример.

SELECT * FROM sys.firewall_rules ORDER BY name;

Затем добавьте правило брандмауэра для IP-адресов на уровне сервера.

EXECUTE sp_set_firewall_rule @name = N'ContosoFirewallRule',
   @start_ip_address = '192.168.1.1', @end_ip_address = '192.168.1.10'

Для удаления правил брандмауэра для IP-адресов на уровне сервера выполните хранимую процедуру sp_delete_firewall_rule. Приведенный ниже пример удаляет правило ContosoFirewallRule.

EXECUTE sp_delete_firewall_rule @name = N'ContosoFirewallRule'

Управление правилами брандмауэра для IP-адресов на уровне сервера с помощью PowerShell

Примечание

Эта статья была изменена, и теперь в ней содержатся сведения о модуле Az PowerShell для Azure. Модуль Az PowerShell является рекомендуемым модулем PowerShell для взаимодействия с Azure. Чтобы начать работу с модулем Az PowerShell, ознакомьтесь со статьей Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

Важно!

Модуль PowerShell для Azure Resource Manager по-прежнему поддерживается Базой данных SQL Azure, но вся текущая разработка сосредоточена на модуле Az.Sql. Сведения об этих командлетах см. в разделе AzureRM.Sql. Аргументы команд в модулях Az и AzureRm практически идентичны.

Командлет Level Описание
Get-AzSqlServerFirewallRule Сервер Возвращает текущие правила брандмауэра уровня сервера
New-AzSqlServerFirewallRule Сервер Создает новое правило брандмауэра уровня сервера
Set-AzSqlServerFirewallRule Сервер Обновляет свойства существующего правила брандмауэра уровня сервера
Remove-AzSqlServerFirewallRule Сервер Удаляет правила брандмауэра уровня сервера

Приведенный ниже пример настраивает правило брандмауэра для IP-адресов на уровне сервера с помощью PowerShell.

New-AzSqlServerFirewallRule -ResourceGroupName "myResourceGroup" `
    -ServerName $servername `
    -FirewallRuleName "ContosoIPRange" -StartIpAddress "192.168.1.0" -EndIpAddress "192.168.1.255"

Совет

Для параметра $servername укажите имя сервера, а не полное DNS-имя. Например, укажите mysqldbserver, а не mysqldbserver.database.windows.net.

Примеры PowerShell для краткого руководства приведены в разделах Примеры сценариев Azure PowerShell для Базы данных SQL Azure и Управляемого экземпляра SQL Azure и Использование PowerShell для создания отдельной базы данных и настройки правила брандмауэра на уровне сервера.

Управление правилами брандмауэра для IP-адресов на уровне сервера с помощью интерфейса командной строки

Командлет Level Описание
az sql server firewall-rule create Сервер Создает правило брандмауэра для IP-адресов на уровне сервера
az sql server firewall-rule list Сервер Выводит список правил брандмауэра для IP-адресов на сервере
az sql server firewall-rule show Сервер Отображает сведения о правиле брандмауэра для IP-адресов.
az sql server firewall-rule update Сервер Обновляет правило брандмауэра для IP-адресов.
az sql server firewall-rule delete Сервер Удаляет правило брандмауэра для IP-адресов.

Приведенный ниже пример настраивает правило брандмауэра для IP-адресов на уровне сервера с помощью интерфейса командной строки.

az sql server firewall-rule create --resource-group myResourceGroup --server $servername \
-n ContosoIPRange --start-ip-address 192.168.1.0 --end-ip-address 192.168.1.255

Совет

Для параметра $servername укажите имя сервера, а не полное DNS-имя. Например, укажите mysqldbserver, а не mysqldbserver.database.windows.net.

Примеры для интерфейса командной строки для краткого руководства приведены в разделах Примеры Azure CLI для Базы данных SQL Azure и Управляемого экземпляра SQL и Создание отдельной базы данных и настройка правила брандмауэра с помощью Azure CLI.

Управление правилами брандмауэра для IP-адресов на уровне сервера с помощью REST API

API Level Описание
Вывод списка правил брандмауэра Сервер Отображает текущие правила брандмауэра для IP-адресов на уровне сервера
Создание и изменение правил брандмауэра Сервер Создает или обновляет правила брандмауэра для IP-адресов на уровне сервера
Удаление правил брандмауэра Сервер Удаляет правила брандмауэра для IP-адресов на уровне сервера
Получение правил брандмауэра Сервер Возвращает правила брандмауэра для IP-адресов на уровне сервера

Устранение неполадок брандмауэра базы данных

Если доступ к Базе данных SQL Azure не работает ожидаемым образом, учтите следующие моменты.

  • Конфигурация локального брандмауэра

    Прежде чем компьютер сможет получить доступ к Базе данных SQL Azure, может потребоваться создать на компьютере исключение брандмауэра для TCP-порта 1433. Вам может потребоваться открыть дополнительные порты при создании подключений в пределах облака Azure. Дополнительные сведения см. в разделе "Снаружи или внутри" статьи Порты для ADO.NET 4.5, отличные от порта 1433.

  • Преобразование сетевых адресов

    Из-за преобразования сетевых адресов (NAT) IP-адрес, используемый компьютером для подключения к Базе данных SQL Microsoft Azure, может отличаться от IP-адреса в параметрах конфигурации IP-адреса компьютера. Чтобы просмотреть IP-адрес, используемый компьютером для подключения к Azure, выполните следующие действия.

    1. Войдите на портал.
    2. Перейдите на вкладку Настройка на сервере, на котором размещена ваша база данных.
    3. Текущий IP-адрес клиента отображается в разделе Разрешенные IP-адреса. Щелкните Добавить или Разрешенные IP-адреса, чтобы разрешить компьютеру доступ к серверу.
  • Изменения в списке разрешенных адресов еще не вступили в силу

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

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

    Если имя для входа не имеет разрешений на сервере или пароль указан неправильно, подключение к серверу будет отклонено. Создание параметра брандмауэра дает клиентам возможность попытаться подключиться к вашему серверу. Каждый клиент по-прежнему должен предоставлять необходимые учетные данные безопасности. Дополнительные сведения о подготовке имен для входа см. в статье Авторизация доступа к Базе данных SQL, Управляемому экземпляру SQL и Azure Synapse Analytics.

  • Динамический IP-адрес

    При наличии подключения к Интернету с динамическим предоставлением IP-адресов и возникновении проблем с прохождением через брандмауэр можно попробовать применить одно из описанных ниже решений.

    • Попросите поставщика услуг Интернета указать диапазон IP-адресов, назначенный клиентским компьютерам, обращающимся к серверу. Добавьте этот диапазон IP-адресов в качестве правила брандмауэра для IP-адресов.
    • Получите статические IP-адреса для клиентских компьютеров. Добавьте эти IP-адреса в качестве правил брандмауэра для IP-адресов.

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