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


правила брандмауэра IP для Azure SQL Database и Azure Synapse

Применимо к:Azure SQL DatabaseAzure Synapse Analytics

При создании нового сервера в Azure SQL Database или Azure Synapse Analytics с именем mysqlserver, например брандмауэр уровня сервера блокирует доступ ко всей общедоступной конечной точке сервера для сервера (который доступен на mysqlserver.database.windows.net). Для простоты SQL Database используется для ссылки на базу данных SQL и Azure Synapse Analytics. Эта статья не применяется к Azure SQL Managed Instance. Для получения сведений о конфигурации сети см. Connect your application to Azure SQL Managed Instance.

Примечание.

Microsoft Entra ID ранее был известен как Azure Active Directory (Azure AD).

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

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

Схема брандмауэра базы данных Azure SQL.

Внимание

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

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

Эти правила позволяют клиентам обращаться ко всему серверу, то есть ко всем базам данных, которыми он управляет. Правила хранятся в master базе данных. Максимальное количество правил брандмауэра IP на уровне сервера ограничено 256 для сервера. Если у вас включен параметр Allow Azure Services and resources to access this server, то это считается одним правилом брандмауэра для сервера.

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

Примечание.

Максимальное количество правил брандмауэра IP-адресов на уровне сервера ограничено 256 при настройке с помощью портала Azure.

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

Примечание.

По умолчанию, при создании нового логического сервера SQL на портале Azure, параметр Разрешить службам и ресурсам Azure доступ к этому серверу установлен на Нет.

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

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

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

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

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

Примечание.

Сведения о переносных базах данных в контексте непрерывности бизнес-процессов см. в разделе Настройка и управление безопасностью Azure SQL Database для геовосстановления или переключения в случае отказа.

Правила брандмауэра для 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-адресов на уровне сервера или базы данных, то запрос на подключение завершается сбоем.

Примечание.

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

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

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

Когда приложение из Azure пытается подключиться к серверу, брандмауэр проверяет, разрешены ли подключения из Azure, проверяя существование данного правила брандмауэра. Это можно включить непосредственно из области портала Azure, переключив Разрешить службам и ресурсам Azure доступ к этому серверу на ВКЛ в параметрах Брандмауэры и виртуальные сети. Переключение параметра на ON создает правило брандмауэра для IP-адреса 0.0.0.0 – 0.0.0.0.0 с именем AllowAllWindowsAzureIps. Правило можно просмотреть в master представлении sys.firewall_rules базы данных. Используйте PowerShell или Azure CLI, чтобы создать правило брандмауэра с начальными и конечными IP-адресами, установленными для версии 0.0.0.0, если вы не используете портал.

Предупреждение

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

Следующие службы Azure обычно используют это правило для подключения к Azure SQL Database:

  • Azure App Service и Azure Functions
  • Azure Data Factory
  • Azure Stream Analytics
  • Azure Logic Apps
  • Azure Power BI
  • Azure AI services

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

Разрешения

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

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

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

Внимание

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

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

Совет

Вы можете использовать Аудит для Azure SQL Database и Azure Synapse Analytics для аудита изменений брандмауэра на уровне сервера и базы данных.

Использование портала Azure для управления правилами брандмауэра IP на уровне сервера

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

Совет

Руководство см. в разделе Quickstart: создание одной базы данных — Azure SQL Database.

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

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

    Снимок экрана настроенного параметра брандмауэра сервера в портале Azure.

    Откроется страница "Сеть " для сервера.

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

    Снимок экрана: страница

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

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

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

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

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

Представление каталога или хранимая процедура Уровень Описание
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

Примечание.

В этой статье используется модуль Azure Az PowerShell, который является рекомендуемым модулем PowerShell для взаимодействия с Azure. Сведения о начале работы с модулем Az PowerShell см. в статье Install Azure PowerShell. Сведения о миграции в модуль Az PowerShell см. в статье Migrate Azure PowerShell из AzureRM в Az.

Внимание

Модуль PowerShell Azure Resource Manager (AzureRM) был объявлен устаревшим 29 февраля 2024 года. Все будущие разработки должны использовать модуль Az.Sql. Пользователям рекомендуется выполнить миграцию из AzureRM в модуль Az PowerShell, чтобы обеспечить постоянную поддержку и обновления. Модуль AzureRM больше не обслуживается и не поддерживается. Аргументы команд в модуле Az PowerShell и в модулях AzureRM существенно идентичны. Дополнительные сведения о совместимости см. в статье Знакомство с новым модулем Az PowerShell.

cmdlet Уровень Описание
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 для Azure SQL Database и Как использовать PowerShell для создания одиночной базы данных и настройки серверного правила брандмауэра.

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

cmdlet Уровень Описание
az sql server firewall-rule create - Эта команда используется для создания правила брандмауэра на сервере SQL в Azure. Сервер Создает правило брандмауэра для IP-адресов на уровне сервера
az sql server список правил брандмауэра Сервер Выводит список IP-правил брандмауэра на сервере
az sql server firewall-rule show - отображает правило брандмауэра сервера SQL. Сервер Отображает сведения о правиле брандмауэра для IP-адресов.
az sql server обновление правила брандмауэра Сервер Обновляет правило брандмауэра IP.
Команда az sql server firewall-rule delete для удаления правила брандмауэра в сервере SQL. Сервер Удаляет правило брандмауэра для 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.

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

Сведения о Azure Synapse Analytics см. в следующих примерах:

cmdlet Уровень Описание
az synapse workspace firewall-rule create Сервер Создание правила брандмауэра
az synapse workspace firewall-rule delete Сервер Удаление правила брандмауэра
az synapse workspace firewall-rule list Сервер Список всех правил брандмауэра
az synapse workspace firewall-rule show Сервер Получите правило брандмауэра
az synapse workspace firewall-rule update Сервер Обновление правила брандмауэра
az synapse workspace firewall-rule wait Сервер Поместите интерфейс командной строки в состояние ожидания до тех пор, пока не будет выполнено условие правила брандмауэра.

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

az synapse workspace firewall-rule create --name AllowAllWindowsAzureIps --workspace-name $workspacename --resource-group $resourcegroupname --start-ip-address 0.0.0.0 --end-ip-address 0.0.0.0

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

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

Общие сведения о задержке обновлений брандмауэра

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

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

Модель проверки подлинности Настройка отработки отказа Задержка изменений параметров безопасности Латентные экземпляры
Аутентификация сервера Да 5 минут все базы данных
Аутентификация сервера нет 5 минут все базы данных
Содержащаяся база данных Да 5 минут вторичная база данных
Содержащаяся база данных нет никакой никакой

Обновление правил брандмауэра вручную

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

DBCC FLUSHAUTHCACHE[;]

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

Учитывайте следующие моменты, когда доступ к Azure SQL Database не ведет себя должным образом.

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

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

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

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

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

    Для изменения конфигурации брандмауэра Azure SQL Database может потребоваться до пяти минут.

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

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

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

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

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