Настройка и администрирование проверки подлинности Microsoft Entra с помощью Azure SQL

Применимо к:База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics

В этой статье показано, как создать и заполнить клиент Microsoft Entra и использовать идентификатор Microsoft Entra (ранее Azure Active Directory) с База данных SQL Azure, Управляемый экземпляр SQL Azure и Azure Synapse Analytics. Общие сведения см. в разделе "Проверка подлинности Microsoft Entra".

Примечание.

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

Способы проверки подлинности Microsoft Entra.

Идентификатор Microsoft Entra поддерживает следующие методы проверки подлинности:

  • удостоверения Microsoft Entra, доступные только для облака;
  • Гибридные удостоверения Microsoft Entra, поддерживающие:
    • Облачная проверка подлинности с двумя параметрами, которые связаны с простым единым входом(SSO)
      • Проверка подлинности хэша паролей Microsoft Entra
      • Сквозная проверка подлинности Microsoft Entra
    • Федеративная аутентификация

Дополнительные сведения о методах проверки подлинности Microsoft Entra и их выборе см. в разделе "Выбор правильного метода проверки подлинности" для решения гибридного удостоверения Microsoft Entra.

Дополнительные сведения о гибридных удостоверениях, настройке и синхронизации Microsoft Entra см. в следующих статье:

Создание и заполнение клиента Microsoft Entra

Создайте клиент Microsoft Entra и заполните его пользователями и группами. Клиенты Microsoft Entra можно полностью управлять в Azure или использовать для федерации локальная служба Active Directory доменной службы.

Дополнительные сведения см. в разделе:

Связывание или добавление подписки Azure в идентификатор Microsoft Entra

  1. Свяжите подписку Azure с идентификатором Microsoft Entra, сделав каталог доверенным каталогом для подписки Azure, в которой размещена база данных. Дополнительные сведения см. в статье "Связать или добавить подписку Azure" в клиент Microsoft Entra.

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

    Внимание

    Каждая подписка Azure имеет отношение доверия с экземпляром Microsoft Entra. Он доверяет каталогу для проверки подлинности пользователей, служб и устройств. Несколько подписок могут доверять одному и тому же каталогу, но одна конкретная подписка доверяет только одному каталогу. Это отношение доверия, которое подписка имеет с каталогом, в отличие от подписки со всеми другими ресурсами в Azure (веб-сайты, базы данных и т. д.), которые больше похожи на дочерние ресурсы подписки. Если срок действия подписки истекает, доступ к другим ресурсам, связанным с этой подпиской, также прекращается. Однако каталог остается в Azure, и вы можете связать другую подписку с этим каталогом и продолжать управлять пользователями каталога. Дополнительные сведения о ресурсах см. в статье, посвященной доступу к ресурсам в Azure. Дополнительные сведения об этой доверенной связи см. в статье "Как связать или добавить подписку Azure" в идентификатор Microsoft Entra.

Администратор Microsoft Entra с сервером в База данных SQL

Каждый логический сервер в Azure (где размещается База данных SQL или Azure Synapse) начинается с одной учетной записи администратора сервера, которая является администратором всего сервера. Создайте вторую учетную запись администратора в качестве учетной записи Microsoft Entra. Этот субъект создается как пользователь автономной базы данных в master базе данных сервера. учетные записи Администратор istrator являются членами роли db_owner в каждой пользовательской базе данных, и каждая пользовательская база данных вводится в качестве пользователя dbo. Дополнительные сведения об учетных записях администраторов см. в разделе Управление базами данных и учетные записи.

Администратор Microsoft Entra должен быть настроен как для основных, так и для вторичных серверов при использовании идентификатора Microsoft Entra с геоза реплика. Если у сервера нет администратора Microsoft Entra, то имена входа Microsoft Entra и пользователи получают ошибку Cannot connect сервера.

Примечание.

Пользователи, не основанные на учетной записи Microsoft Entra (включая учетную запись администратора сервера), не могут создавать пользователей на основе Microsoft Entra, так как у них нет разрешения на проверку предлагаемых пользователей базы данных с идентификатором Microsoft Entra.

Подготовка администратора Microsoft Entra (Управляемый экземпляр SQL)

Внимание

Выполните следующие действия, только если вы подготавливаете Управляемый экземпляр SQL Azure. Эта операция может выполняться только глобальным Администратор istrator или привилегированной ролью Администратор istrator в идентификаторе Microsoft Entra ID.

Роль читателей каталогов можно назначить группе в идентификаторе Microsoft Entra. Затем владельцы групп могут добавить удостоверение управляемого экземпляра в качестве члена этой группы, что позволяет подготовить администратора Microsoft Entra для Управляемый экземпляр SQL. Дополнительные сведения об этой функции см. в разделе "Читатели каталогов" в Microsoft Entra для SQL Azure.

Управляемый экземпляр SQL требуется разрешение на чтение идентификатора Microsoft Entra для выполнения таких задач, как проверка подлинности пользователей через членство в группах безопасности или создание новых пользователей. Для этого необходимо предоставить Управляемый экземпляр SQL разрешение на чтение идентификатора Microsoft Entra. Вы можете сделать это на портале Azure или в PowerShell.

Портал Azure

Чтобы предоставить Управляемый экземпляр SQL разрешения на чтение идентификатору Microsoft Entra с помощью портал Azure, войдите в систему в качестве глобального Администратор istrator и выполните следующие действия:

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

    Screenshot of the Azure portal showing where to switch your directory.

  2. Выберите правильный каталог Microsoft Entra в качестве текущего каталога.

    Этот шаг связывает подписку, связанную с идентификатором Microsoft Entra, с Управляемый экземпляр SQL, обеспечивая клиент Microsoft Entra и Управляемый экземпляр SQL использовать ту же подписку.

  3. Теперь вы можете выбрать администратора Microsoft Entra для Управляемый экземпляр SQL. Для этого перейдите к ресурсу управляемого экземпляра в портал Azure и выберите администратора Microsoft Entra в Параметры.

    Screenshot of the Azure portal showing the Microsoft Entra admin page open for the selected SQL managed instance.

  4. Выберите баннер на верхней части страницы администрирования Microsoft Entra и предоставьте разрешение текущему пользователю.

    Screenshot of the dialog for granting permissions to a SQL managed instance for accessing Microsoft Entra ID with the Grant permissions button selected.

  5. После успешного выполнения операции в правом верхнем углу появится следующее уведомление:

    Screenshot of a notification confirming that Microsoft Entra ID read permissions have been successfully updated for the managed instance.

  6. На странице администрирования Microsoft Entra выберите "Задать администратора" на панели навигации, чтобы открыть область идентификатора Microsoft Entra.

    Screenshot showing the Set admin command highlighted on the Microsoft Entra admin page for the selected SQL managed instance.

  7. На панели идентификатора Microsoft Entra найдите пользователя, проверка поле рядом с пользователем или группой, чтобы быть администратором, а затем нажмите клавишу SELECT, чтобы закрыть область и вернуться на страницу администрирования Microsoft Entra для управляемого экземпляра.

    В области идентификатора Microsoft Entra отображаются все члены и группы в текущем каталоге. Не удается выбрать неактивных пользователей или групп, так как они не поддерживаются в качестве администраторов Microsoft Entra. См. список поддерживаемых администраторов в функциях и ограничениях Microsoft Entra. Управление доступом на основе ролей Azure (Azure RBAC) применяется только к порталу Azure и не распространяется на Базу данных SQL, Управляемый экземпляр SQL и Azure Synapse.

  8. На панели навигации страницы администрирования Microsoft Entra для управляемого экземпляра нажмите кнопку "Сохранить ", чтобы подтвердить администратора Microsoft Entra.

    Screenshot of the Microsoft Entra admin page with the Save button in the top row next to the Set admin and Remove admin buttons.

    Процесс изменения администратора может занять несколько минут. Затем новый администратор появится в поле администрирования Microsoft Entra.

    Идентификатор объекта отображается рядом с именем администратора для пользователей и групп Microsoft Entra. Для приложений (субъектов-служб) отображается идентификатор приложения.

После подготовки администратора Microsoft Entra для Управляемый экземпляр SQL можно начать создавать субъекты сервера Microsoft Entra (имена входа) с помощью синтаксиса CREATE LOGIN. Дополнительные сведения см. в разделе Обзор Управляемого экземпляра SQL.

Совет

Чтобы удалить Администратор позже, в верхней части страницы администрирования Microsoft Entra нажмите кнопку "Удалить администратора", а затем нажмите кнопку "Сохранить".

PowerShell

Чтобы использовать PowerShell для предоставления Управляемый экземпляр SQL разрешений на чтение идентификатору Microsoft Entra, выполните следующий сценарий:

# This script grants "Directory Readers" permission to a service principal representing the SQL Managed Instance.
# It can be executed only by a user who is a member of the **Global Administrator** or **Privileged Roles Administrator** role.

Import-Module Microsoft.Graph.Authentication
$managedInstanceName = "<ManagedInstanceName>" # Enter the name of your managed instance
$tenantId = "<TenantId>"                       # Enter your tenant ID

Connect-MgGraph -TenantId $tenantId -Scopes "RoleManagement.ReadWrite.Directory"
 
# Get Microsoft Entra "Directory Readers" role and create if it doesn't exist
$roleName = "Directory Readers"
$role = Get-MgDirectoryRole -Filter "DisplayName eq '$roleName'"
if ($role -eq $null) {
    # Instantiate an instance of the role template
    $roleTemplate = Get-MgDirectoryRoleTemplate -Filter "DisplayName eq '$roleName'"
    New-MgDirectoryRoleTemplate -RoleTemplateId $roleTemplate.Id
    $role = Get-MgDirectoryRole -Filter "DisplayName eq '$roleName'"
}

# Get service principal for your SQL Managed Instance
$roleMember = Get-MgServicePrincipal -Filter "DisplayName eq '$managedInstanceName'"
$roleMember.Count
if ($roleMember -eq $null) {
    Write-Output "Error: No service principal with name '$($managedInstanceName)' found, make sure that managedInstanceName parameter was entered correctly."
    exit
}
if (-not ($roleMember.Count -eq 1)) {
    Write-Output "Error: Multiple service principals with name '$($managedInstanceName)'"
    Write-Output $roleMember | Format-List DisplayName, Id, AppId
    exit
}

# Check if service principal is already member of Directory Readers role
$isDirReader = Get-MgDirectoryRoleMember -DirectoryRoleId $role.Id -Filter "Id eq '$($roleMember.Id)'"
if ($isDirReader -eq $null) {
    # Add principal to Directory Readers role
    Write-Output "Adding service principal '$($managedInstanceName)' to 'Directory Readers' role..."
    $body = @{
        "@odata.id"= "https://graph.microsoft.com/v1.0/directoryObjects/{$($roleMember.Id)}"
    }
    New-MgDirectoryRoleMemberByRef -DirectoryRoleId $role.Id -BodyParameter $body
    Write-Output "'$($managedInstanceName)' service principal added to 'Directory Readers' role."
} else {
    Write-Output "Service principal '$($managedInstanceName)' is already member of 'Directory Readers' role."
}

PowerShell для Управляемого экземпляра SQL

Чтобы выполнять командлеты PowerShell, необходимо установить и запустить Azure PowerShell. Дополнительные сведения см. в статье Общие сведения об Azure PowerShell.

Внимание

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

Чтобы подготовить администратора Microsoft Entra, выполните следующие команды Azure PowerShell:

  • Connect-AzAccount
  • Select-AzSubscription

Командлеты, используемые для подготовки и управления администратором Microsoft Entra для Управляемый экземпляр SQL, перечислены в следующей таблице:

Имя командлета Description
Set-AzSqlInstanceActiveDirectoryAdministrator Подготавливает администратора Microsoft Entra для Управляемый экземпляр SQL в текущей подписке. (Он должен быть из текущей подписки.)
Remove-AzSqlInstanceActiveDirectoryAdministrator Удаляет администратора Microsoft Entra для Управляемый экземпляр SQL в текущей подписке.
Get-AzSqlInstanceActiveDirectoryAdministrator Возвращает сведения об администраторе Microsoft Entra для Управляемый экземпляр SQL в текущей подписке.

Следующая команда получает сведения об администраторе Microsoft Entra для Управляемый экземпляр SQL с именем ManagedInstance01, связанной с группой ресурсов с именем ResourceGroup01.

Get-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstance01"

Следующая команда подготавливает группу администраторов Microsoft Entra с именем DBAs для Управляемый экземпляр SQL с именем ManagedInstance01. Этот сервер связан с группой ресурсов ResourceGroup01.

Set-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstance01" -DisplayName "DBAs" -ObjectId "40b79501-b343-44ed-9ce7-da4c8cc7353b"

Следующая команда удаляет администратора Microsoft Entra для Управляемый экземпляр SQL с именем ManagedInstanceName01, связанного с группой ресурсов ResourceGroup01.

Remove-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstanceName01" -Confirm -PassThru

Подготовка администратора Microsoft Entra (База данных SQL)

Внимание

Выполняйте следующие действия, только если вы подготавливаете сервер для Базы данных SQL или Azure Synapse.

В следующих двух процедурах показано, как подготовить администратора Microsoft Entra для сервера в портал Azure и с помощью PowerShell.

Портал Azure

  1. В портал Azure в правом верхнем углу выберите свою учетную запись и выберите пункт "Переключить каталог", чтобы открыть страницу каталогов и подписок. Выберите каталог Microsoft Entra, содержащий База данных SQL Azure или Azure Synapse Analytics в качестве текущего каталога.

  2. Найдите серверы SQL и выберите логический сервер для База данных SQL Azure.

    Search for and select SQL servers.

    Примечание.

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

    Попробуйте также посетить панель мониторинга SQL Azure.

  3. На странице SQL Server выберите идентификатор Microsoft Entra.

  4. На странице идентификатора Записи Майкрософт выберите "Задать администратора", чтобы открыть область идентификатора Microsoft Entra

    Screenshot shows the option to set the Microsoft Entra admin for SQL servers.

  5. В области идентификатора Microsoft Entra найдите пользователя и выберите пользователя или группу, чтобы быть администратором. Выберите, чтобы подтвердить выбор и закрыть область, чтобы вернуться на страницу идентификатора логического сервера Microsoft Entra. (The В области идентификатора Microsoft Entra отображаются все члены и группы текущего каталога. Не удается выбрать неактивных пользователей или групп, так как они не поддерживаются в качестве администраторов Microsoft Entra. См. список поддерживаемых администраторов в разделе функций и ограничений Microsoft Entra, посвященных использованию проверки подлинности Microsoft Entra с База данных SQL или Azure Synapse.) Управление доступом на основе ролей Azure (Azure RBAC) применяется только к порталу и не распространяется на сервер.

  6. В верхней части страницы идентификатора Microsoft Entra для логического сервера нажмите кнопку "Сохранить".

    Screenshot shows the option to save a Microsoft Entra admin.

    Идентификатор объекта отображается рядом с именем администратора для пользователей и групп Microsoft Entra. Для приложений (субъектов-служб) отображается идентификатор приложения.

Процесс изменения администратора может занять несколько минут. Затем новый администратор появится в поле администратора Microsoft Entra.

Примечание.

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

Чтобы удалить администратора позже, в верхней части страницы идентификатора Microsoft Entra нажмите кнопку "Удалить администратора", а затем нажмите кнопку "Сохранить". Это отключает проверку подлинности Microsoft Entra для логического сервера.

PowerShell для Базы данных SQL и Azure Synapse

Чтобы выполнять командлеты PowerShell, необходимо установить и запустить Azure PowerShell. Дополнительные сведения см. в статье Общие сведения об Azure PowerShell. Чтобы подготовить администратора Microsoft Entra, выполните следующие команды Azure PowerShell:

  • Connect-AzAccount
  • Select-AzSubscription

Командлеты, используемые для подготовки и управления администратором Microsoft Entra для База данных SQL и Azure Synapse:

Имя командлета Description
Set-AzSqlServerActiveDirectoryAdministrator Подготавливает администратора Microsoft Entra для сервера, на котором размещен База данных SQL или Azure Synapse. (Он должен быть из текущей подписки.)
Remove-AzSqlServerActiveDirectoryAdministrator Удаляет администратора Microsoft Entra для сервера, на котором размещен База данных SQL или Azure Synapse.
Get-AzSqlServerActiveDirectoryAdministrator Возвращает сведения о администраторе Microsoft Entra, настроенном для сервера, на котором размещен База данных SQL или Azure Synapse.

Чтобы получить дополнительные сведения о каждой из этих команд, используйте команду PowerShell get-help. Например, get-help Set-AzSqlServerActiveDirectoryAdministrator.

Следующий сценарий подготавливает группу администраторов Microsoft Entra с именем DBA_Group (идентификатор объекта) для сервера demo_server в группе ресурсов с именем Group-23:40b79501-b343-44ed-9ce7-da4c8cc7353f

Set-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" -DisplayName "DBA_Group"

Входной параметр DisplayName принимает отображаемое имя идентификатора Microsoft Entra или имя участника-пользователя. Например, DisplayName="John Smith" и DisplayName="johns@contoso.com". Для групп Microsoft Entra поддерживается только отображаемое имя идентификатора Microsoft Entra.

Примечание.

Команда Set-AzSqlServerActiveDirectoryAdministrator Azure PowerShell не предотвращает подготовку администраторов Microsoft Entra для неподдерживаемых пользователей. Неподдерживаемый пользователь может быть подготовлен, но не может подключиться к базе данных.

В следующем примере используется необязательный параметр ObjectID:

Set-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" `
    -DisplayName "DBA_Group" -ObjectId "40b79501-b343-44ed-9ce7-da4c8cc7353f"

Примечание.

Объектный идентификатор требуется, если displayName не является уникальным. Чтобы получить значения ObjectID и DisplayName , можно просмотреть свойства пользователя или группы в разделе идентификатора Microsoft Entra на портале Azure.

В следующем примере возвращаются сведения о текущем администраторе Microsoft Entra для сервера:

Get-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" | Format-List

В следующем примере удаляется администратор Microsoft Entra:

Remove-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server"

Примечание.

Вы также можете подготовить microsoft Entra Администратор istrator с помощью REST API. Дополнительные сведения см. в справочнике по REST API управления службами и статье Operations for Azure SQL Databases (Операции для Базы данных SQL Azure).

Настройка клиентских компьютеров

Примечание.

System.Data.SqlClient использует библиотеку проверки подлинности Azure Active Directory (ADAL), которая устарела. Если вы используете пространство имен System.Data.SqlClient для проверки подлинности Microsoft Entra, перенесите приложения в Microsoft.Data.SqlClient и библиотеку проверки подлинности Майкрософт (MSAL). Дополнительные сведения см. в статье Об использовании проверки подлинности Microsoft Entra с sqlClient.

Если вы должны продолжать использовать ADAL.DLL в приложениях, вы можете использовать ссылки в этом разделе, чтобы установить последний драйвер ODBC или OLE DB, содержащий последнюю библиотеку ADAL.DLL .

На всех клиентских компьютерах, из которых приложения или пользователи подключаются к База данных SQL или Azure Synapse с помощью удостоверений Microsoft Entra, необходимо установить следующее программное обеспечение:

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

  • Установка последней версии SQL Server Management Studio или SQL Server Data Tools соответствует требованиям платформы .NET Framework 4.6.
    • SSMS устанавливает ADAL.DLL версии x86.
    • SSDT устанавливает ADAL.DLL версии amd64.
    • Последняя версия Visual Studio downloads соответствует требованиям платформа .NET Framework 4.6, но не устанавливает требуемую версию amd64 ADAL.DLL.

Создание автономных пользователей, сопоставленных с удостоверениями Microsoft Entra

В этом разделе рассматриваются требования и важные рекомендации по использованию проверки подлинности Microsoft Entra с База данных SQL Azure, Управляемый экземпляр SQL Azure и Azure Synapse.

  • Для проверки подлинности Microsoft Entra с помощью База данных SQL и Azure Synapse требуется использование пользователей автономной базы данных на основе удостоверения Microsoft Entra. Пользователь автономной базы данных не имеет имени входа в master базу данных и сопоставляется с удостоверением в идентификаторе Microsoft Entra, связанном с базой данных. Удостоверение Microsoft Entra может быть отдельной учетной записью пользователя, группой или приложением. Дополнительные сведения о пользователях автономной базы данных см. в статье Пользователи автономной базы данных — создание переносимой базы данных. Дополнительные сведения о создании пользователей автономной базы данных на основе удостоверений Microsoft Entra см. в статье CREATE USER (Transact-SQL).

  • Так как Управляемый экземпляр SQL поддерживает субъекты сервера Microsoft Entra (имена входа), использование пользователей автономной базы данных не требуется. Это позволяет создавать имена входа из пользователей, групп или приложений Microsoft Entra. Это означает, что вы можете пройти проверку подлинности с помощью Управляемый экземпляр SQL с помощью имени входа сервера Microsoft Entra, а не пользователя автономной базы данных. Дополнительные сведения см. в разделе Обзор Управляемого экземпляра SQL. Синтаксис создания субъектов сервера Microsoft Entra (имена входа) см. в статье CREATE LOGIN.

  • Пользователи базы данных (кроме администраторов) не могут создать базу данных с помощью портал Azure. Роли Microsoft Entra не распространяются в базу данных в База данных SQL, Управляемый экземпляр SQL или Azure Synapse. Роли Microsoft Entra управляют ресурсами Azure и не применяются к разрешениям базы данных. Например, роль участника SQL Server не предоставляет доступ к базе данных в База данных SQL, Управляемый экземпляр SQL или Azure Synapse. Разрешение доступа должно быть предоставлено непосредственно в базе данных с помощью инструкций Transact-SQL.

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

  • Специальные символы, такие как двоеточие : или амперсанд & , если они включены в качестве имен пользователей в T-SQL CREATE LOGIN и CREATE USER инструкциях, не поддерживаются.

Внимание

Пользователи и субъекты-службы Microsoft Entra (приложения Microsoft Entra), которые являются членами более 2048 групп безопасности Microsoft Entra, не поддерживаются для входа в базу данных в База данных SQL, Управляемый экземпляр SQL или Azure Synapse.

Чтобы создать пользователя автономной базы данных на основе идентификатора Microsoft Entra (кроме администратора сервера, который владеет базой данных), подключитесь к базе данных с удостоверением Microsoft Entra как пользователь по крайней мере с разрешением ALTER ANY USER . В следующем примере Microsoft_Entra_principal_name T-SQL может быть имя участника-пользователя Microsoft Entra или отображаемое имя группы Microsoft Entra.

CREATE USER [<Microsoft_Entra_principal_name>] FROM EXTERNAL PROVIDER;

Примеры. Создание пользователя автономной базы данных, представляющего федеративного или управляемого пользователя домена Microsoft Entra:

CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;

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

CREATE USER [ICU Nurses] FROM EXTERNAL PROVIDER;

Чтобы создать пользователя автономной базы данных, представляющего приложение, которое подключается с помощью токена Microsoft Entra:

CREATE USER [appName] FROM EXTERNAL PROVIDER;

Для CREATE USER ... FROM EXTERNAL PROVIDER выполнения команды требуется доступ SQL к идентификатору Microsoft Entra (внешнему поставщику) от имени пользователя, вошедшего в систему. Иногда возникают обстоятельства, которые приводят к тому, что идентификатор Microsoft Entra возвращает исключение в SQL.

  • Может возникнуть ошибка SQL 33134, содержащая сообщение об ошибке идентификатора Майкрософт. Ошибка обычно говорит, что доступ запрещен, что пользователь должен зарегистрировать в MFA для доступа к ресурсу или что доступ между сторонними приложениями должен обрабатываться с помощью предварительной проверки подлинности. В первых двух случаях проблема обычно вызвана политиками условного доступа, установленными в клиенте Microsoft Entra пользователя: они препятствуют доступу пользователя к внешнему поставщику. Обновление политик условного доступа и разрешение в них доступа к приложению "00000003-0000-0000-C000-000000000000" (идентификатор приложения API Microsoft Grap) должно устранить эту проблему. Если ошибка говорит, что доступ между сторонними приложениями должен обрабатываться с помощью предварительной проверки подлинности, проблема заключается в том, что пользователь вошел в систему в качестве субъекта-службы. Команда должна завершиться успешно, если она выполняется пользователем.
  • Если истек срок действия Подключение времени ожидания, может потребоваться задать TransparentNetworkIPResolution для параметра строка подключения значение false. Дополнительные сведения см. в статье Connection timeout issue with .NET Framework 4.6.1 — TransparentNetworkIPResolution (Проблема с временем ожидания подключения в .NET Framework 4.6.1 — TransparentNetworkIPResolution).

Внимание

Удаление администратора Microsoft Entra для сервера запрещает любому пользователю проверки подлинности Microsoft Entra подключаться к серверу. При необходимости администратор База данных SQL может вручную удалить неиспользуемых пользователей Microsoft Entra.

При создании пользователь базы данных получает разрешение Подключение и может подключаться к этой базе данных как участник роли Public. Изначально только разрешения, доступные пользователю, предоставляются роли PUBLIC и любым группам Microsoft Entra, в которых они являются участниками. Предоставление разрешений пользователям автономной базы данных на основе Microsoft Entra работает так же, как предоставление разрешения любому другому типу пользователя. Рекомендуется предоставлять разрешения ролям базы данных и добавлять пользователей в эти роли, а не напрямую предоставлять разрешения отдельным пользователям. Подробные сведения см. в статье Database Engine Permission Basics (Основные сведения о разрешениях ядра СУБД). Дополнительные сведения о специальных ролях базы данных SQL см. в статье Проверка подлинности и авторизация в базе данных SQL Azure: предоставление доступа. Для учетной записи пользователя федеративного домена, импортируемая в управляемый домен, следует использовать идентификатор управляемого домена.

Пользователи Microsoft Entra отмечены в метаданных базы данных с типом E (EXTERNAL_USER) и группами с типом X (EXTERNAL_GROUPS). Дополнительные сведения см. в статье sys.database_principals (Transact-SQL).

Подключение к базе данных с помощью SSMS или SSDT

Чтобы убедиться, что администратор Microsoft Entra настроен правильно, подключитесь к master базе данных с помощью учетной записи администратора Microsoft Entra. Чтобы создать пользователя автономной базы данных на основе Microsoft Entra, подключитесь к базе данных с удостоверением Microsoft Entra с доступом к базе данных и по крайней мере ALTER ANY USER разрешением.

Использование удостоверения Microsoft Entra для подключения с помощью SSMS или SSDT

В следующих процедурах показано, как подключиться к База данных SQL с удостоверением Microsoft Entra с помощью SQL Server Management Studio (SSMS) или SQL Server Database Tools (SSDT).

Идентификатор Microsoft Entra — интегрированная

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

  1. Запустите SSMS или SSDT и в диалоговом окне Подключение на сервер (или Подключение для ядро СУБД) в поле проверки подлинности выберите Azure Active Directory — интегрированная. Не нужно вводить пароль, так как для подключения отображаются существующие учетные данные.

    Screenshot from SSMS showing Microsoft Entra Integrated authentication.

  2. Нажмите кнопку Параметры, а затем на странице Свойства подключения в поле Подключение к базе данных введите имя пользовательской базы данных для подключения.

    Screenshot from SSMS of the Options menu.

Идентификатор Microsoft Entra — пароль

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

Используйте этот метод для проверки подлинности в базе данных в База данных SQL или Управляемый экземпляр SQL с пользователями удостоверений, доступных только для облака Microsoft Entra, или для пользователей гибридных удостоверений Microsoft Entra. Этот метод поддерживает пользователей, которые хотят использовать учетные данные Windows, но локальный компьютер не присоединен к домену (например, с помощью удаленного доступа). В этом случае пользователь Windows может указать свою учетную запись домена и пароль, и может пройти проверку подлинности в Базе данных SQL, Управляемом экземпляре SQL или Azure Synapse.

  1. Запустите SSMS или SSDT и в диалоговом окне Подключение на сервер (или Подключение для ядро СУБД) в поле проверки подлинности выберите Azure Active Directory — пароль.

  2. В поле "Имя пользователя" введите имя пользователя Microsoft Entra в форматеusername\@domain.com. Имена пользователей должны быть учетной записью из идентификатора Microsoft Entra или учетной записи из управляемого или федеративного домена с идентификатором Microsoft Entra.

  3. В поле "Пароль" введите пароль пользователя для учетной записи Microsoft Entra или управляемой или федеративной учетной записи домена.

    Screenshot from SSMS using Microsoft Entra Password authentication.

  4. Нажмите кнопку Параметры, а затем на странице Свойства подключения в поле Подключение к базе данных введите имя пользовательской базы данных для подключения. (См. рисунок в предыдущем варианте.)

Идентификатор Microsoft Entra — универсальный с MFA

Используйте этот метод для интерактивной проверки подлинности с многофакторной проверкой подлинности (MFA) с запросом пароля в интерактивном режиме. Этот метод можно использовать для проверки подлинности в базах данных в База данных SQL, Управляемый экземпляр SQL и Azure Synapse для пользователей облачных удостоверений Microsoft Entra или тех, кто использует гибридные удостоверения Microsoft Entra.

Дополнительные сведения см. в статье "Использование многофакторной проверки подлинности Microsoft Entra" с База данных SQL и поддержкой Azure Synapse (поддержка SSMS для MFA).

Идентификатор Microsoft Entra — субъект-служба

Используйте этот метод для проверки подлинности в базе данных в База данных SQL или Управляемый экземпляр SQL с помощью субъектов-служб Microsoft Entra (приложения Microsoft Entra). Дополнительные сведения см. в статье Microsoft Entra Service Principal with Azure SQL.

Идентификатор Microsoft Entra — управляемое удостоверение

Используйте этот метод для проверки подлинности в базе данных в База данных SQL или Управляемый экземпляр SQL с управляемыми удостоверениями Microsoft Entra. Дополнительные сведения см. в разделе "Управляемые удостоверения" в Microsoft Entra для SQL Azure.

Идентификатор Microsoft Entra — по умолчанию

Параметр проверки подлинности по умолчанию с идентификатором Microsoft Entra включает проверку подлинности, которая выполняется с помощью менее паролей и неинтерактивных механизмов, включая управляемые удостоверения.

Использование удостоверения Microsoft Entra для подключения с помощью редактора запросов портал Azure для База данных SQL Azure

Дополнительные сведения о редакторе запросов портал Azure для База данных SQL Azure см. в кратком руководстве. Использование редактора запросов портал Azure для запроса База данных SQL Azure.

  1. Перейдите к базе данных SQL в портал Azure. Например, посетите панель мониторинга SQL Azure.

  2. На странице обзора базы данных SQL в портал Azure выберите редактор запросов в меню слева.

  3. На экране входа в разделе "Добро пожаловать в База данных SQL Редактор запросов" нажмите кнопку "Продолжить в качестве <пользователя или идентификатора> группы".

    Screenshot showing sign-in to the Azure portal Query editor with Microsoft Entra authentication.

Использование удостоверения Microsoft Entra для подключения из клиентского приложения

В следующих процедурах показано, как подключиться к База данных SQL с удостоверением Microsoft Entra из клиентского приложения. Это не полный список методов проверки подлинности при использовании удостоверения Microsoft Entra. Дополнительные сведения см. в статье Подключение sql Azure с проверкой подлинности Microsoft Entra и SqlClient.

Встроенная проверка подлинности Microsoft Entra

Чтобы использовать интегрированные проверка подлинности Windows, Active Directory вашего домена должен быть федеративным с идентификатором Microsoft Entra или управляемым доменом, настроенным для простого единого входа для сквозной или хэш-проверки подлинности паролей. Дополнительные сведения см. в статье Простой единый вход Microsoft Entra.

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

Чтобы подключиться к базе данных с помощью встроенной проверки подлинности и удостоверения Microsoft Entra, необходимо задать Active Directory Integratedдля проверки подлинности ключевое слово в базе данных строка подключения. Замените <database_name> именем базы данных. В следующем примере кода C# используется ADO .NET.

string ConnectionString = @"Data Source=<database_name>.database.windows.net; Authentication=Active Directory Integrated; Initial Catalog=testdb;";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();

Строка подключения ключевое слово Integrated Security=True не поддерживается для подключения к База данных SQL Azure. При подключении ODBC необходимо удалить пробелы и задать для проверки подлинности ActiveDirectoryIntegratedзначение .

Проверка подлинности паролей Microsoft Entra

Чтобы подключиться к базе данных с помощью учетных записей пользователей удостоверений только для облака Microsoft Entra или тех, кто использует гибридные удостоверения Microsoft Entra, необходимо задать Active Directory Passwordдля проверки подлинности ключевое слово. Строка подключения должна содержать ключевые слова для идентификатора пользователя (UID) и пароля (PWD), а также их значения. Замените <database_name>, <email_address> и <password> соответствующими значениями. В следующем примере кода C# используется ADO .NET.

string ConnectionString =
@"Data Source=<database_name>.database.windows.net; Authentication=Active Directory Password; Initial Catalog=testdb; UID=<email_address>; PWD=<password>";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();

Дополнительные сведения о методах проверки подлинности Microsoft Entra с помощью демонстрационных примеров кода, доступных на демонстрации GitHub проверки подлинности Microsoft Entra.

Маркер доступа идентификатора Microsoft Entra

Этот метод проверки подлинности позволяет службам среднего уровня получать веб-маркеры JSON (JWT) для подключения к базе данных в База данных SQL, Управляемый экземпляр SQL или Azure Synapse путем получения маркера из идентификатора Microsoft Entra. Этот способ позволяет использовать различные сценарии приложений, включая удостоверения служб, субъекты-службы и приложения, использующие проверку подлинности на основе сертификатов. Чтобы использовать проверку подлинности токена Microsoft Entra, необходимо выполнить четыре основных действия.

  1. Зарегистрируйте приложение с помощью идентификатора Microsoft Entra и получите идентификатор клиента для кода.
  2. Создайте пользователя базы данных, представляющего приложение. (Завершено ранее в разделе Создание содержащихся пользователей, сопоставленных с удостоверениями Microsoft Entra.)
  3. Создайте сертификат на клиентском компьютере, на котором выполняется приложение.
  4. Добавьте сертификат в качестве ключа для вашего приложения.

Пример строка подключения. Замените <database_name> именем базы данных:

string ConnectionString = @"Data Source=<database_name>.database.windows.net; Initial Catalog=testdb;";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.AccessToken = "Your JWT token";
conn.Open();

Дополнительные сведения см. в блоге о безопасности SQL Server. Сведения о добавлении сертификата см. в статье "Начало работы с проверкой подлинности на основе сертификатов" в идентификаторе Microsoft Entra.

sqlcmd

Следующие инструкции подключаются с помощью версии 13.1 sqlcmd. Скачайте служебные программы командной строки Майкрософт 14.0 для SQL Server.

Примечание.

Команда sqlcmd с -G не работает с системными удостоверениями; для нее требуется вход субъекта-пользователя.

sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -U bob@contoso.com -P MyAADPassword -G -l 30

Устранение неполадок проверки подлинности Microsoft Entra

Рекомендации по устранению неполадок с проверкой подлинности Microsoft Entra см . в блоге: устранение неполадок, связанных с проверкой подлинности Azure AD с помощью базы данных SQL Azure и DW.