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

Область применения: База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics

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

Методы проверки подлинности Azure AD

Проверка подлинности Azure Active Directory поддерживает следующие способы проверки подлинности.

  • удостоверения Azure Active Directory только для облака;
  • Гибридные удостоверения Azure Active Directory, которые поддерживают:
    • проверку подлинности в облаке с двумя вариантами в сочетании с простым единым входом;
      • проверку подлинности с использованием хэша паролей Azure Active Directory;
      • сквозную проверку подлинности Azure Active Directory;
    • Федеративная аутентификация

Дополнительные сведения о способах проверки подлинности Azure Active Directory и о том, какой из них выбрать, см. в разделе Выбор правильного способа проверки подлинности для решения гибридной идентификации Azure Active Directory.

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

Создание и заполнение экземпляра Azure Active Directory

Создайте экземпляр Azure Active Directory и заполните его пользователями и группами. Azure AD может быть исходным управляемым доменом Azure AD. Azure AD может также быть локальной доменной службой Active Directory, объединенной в федерацию с Azure AD.

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

Связывание подписки Azure с Azure Active Directory или добавление ее в службу

  1. Свяжите свою подписку Azure с Azure Active Directory, сделав каталог доверенным для подписки Azure, в которой размещена база данных. Дополнительные сведения см. в разделе Привязывание или добавление подписки Azure к клиенту Azure Active Directory.

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

    Важно!

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

Администратор Azure Active Directory и сервер в Базе данных SQL

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

При использовании Azure Active Directory с георепликацией необходимо настроить администратора Azure Active Directory для сервера-источника и сервера-получателя. Если на сервере нет администратора Azure Active Directory, то при входе в Azure Active Directory пользователи получают сообщение об ошибке Cannot connect, говорящее о невозможности подключиться к серверу.

Примечание

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

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

Важно!

Выполните следующие действия, только если вы подготавливаете Управляемый экземпляр SQL Azure. Эту операцию может выполнить только глобальный администратор или администратор привилегированных ролей в Azure Active Directory.

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

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

Портал Azure

Чтобы предоставить Управляемому экземпляру SQL разрешение на чтение Azure Active Directory на портале Azure, войдите как глобальный администратор в Azure Active Directory и выполните следующие действия.

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

    Снимок экрана: портал Azure, на котором показано, где переключить каталог

  2. Выберите нужный экземпляр Active Directory в качестве Azure AD по умолчанию.

    С помощью этого шага можно привязать подписку Active Directory к Управляемому экземпляру SQL, чтобы одна и та же подписка использовалась и для экземпляра Azure Active Directory, и для Управляемого экземпляра SQL.

  3. Перейдите к Управляемому экземпляру SQL, который вы хотите использовать для интеграции с Azure Active Directory.

    Снимок экрана портала Azure: страница администратора Active Directory, открытая для выбранного управляемого экземпляра SQL.

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

    Снимок экрана: диалоговое окно предоставления разрешений управляемому экземпляру SQL для доступа к Active Directory. Выбрана кнопка

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

    Снимок экрана: уведомление, подтверждающее, что разрешения на чтение Active Directory для управляемого экземпляра были успешно обновлены.

  6. Теперь вы можете выбрать администратора Azure Active Directory для Управляемого экземпляра SQL. Для этого на странице "Администратор Active Directory" щелкните Задать администратора.

    Снимок экрана: страница администратора Active Directory для выбранного управляемого экземпляра SQL с выделенной командой Set admin (Установить администратора).

  7. На странице администратора Azure Active Directory найдите пользователя, выберите пользователя или группу, которая будет администратором, а затем нажмите Select (Выбрать).

    На странице "Администратор Active Directory" отобразятся все участники и группы Active Directory. Пользователей или группы, которые выделены серым цветом, нельзя выбрать; они не поддерживаются ролью администратора Azure AD. Список поддерживаемых администраторов приведен в разделе Функции и ограничения Azure AD. Управление доступом на основе ролей Azure (Azure RBAC) применяется только к порталу Azure и не распространяется на Базу данных SQL, Управляемый экземпляр SQL и Azure Synapse.

    Добавление администратора Azure Active Directory

  8. В верхней части страницы Администратор Active Directory нажмите кнопку Сохранить.

    Снимок экрана: страница администратора Active Directory с кнопкой Save (Сохранить) в верхнем ряду рядом с кнопками Set admin (Установить администратора) и Remove admin (Удалить администратора).

    Изменение администратора может занять несколько минут. После этого новый администратор появится в поле "Администратор Active Directory".

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

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

Совет

Чтобы потом удалить учетную запись администратора, в верхней части страницы Администратор Active Directory щелкните Удалить администратора, а затем нажмите кнопку Сохранить.

PowerShell

Чтобы предоставить Управляемому экземпляру SQL разрешение на чтение Azure Active Directory с помощью PowerShell, запустите следующий скрипт.

# Gives Azure Active Directory read permission to a Service Principal representing the SQL Managed Instance.
# Can be executed only by a "Global Administrator" or "Privileged Role Administrator" type of user.

$aadTenant = "<YourTenantId>" # Enter your tenant ID
$managedInstanceName = "MyManagedInstance"

# Get Azure AD role "Directory Users" and create if it doesn't exist
$roleName = "Directory Readers"
$role = Get-AzureADDirectoryRole | Where-Object {$_.displayName -eq $roleName}
if ($role -eq $null) {
    # Instantiate an instance of the role template
    $roleTemplate = Get-AzureADDirectoryRoleTemplate | Where-Object {$_.displayName -eq $roleName}
    Enable-AzureADDirectoryRole -RoleTemplateId $roleTemplate.ObjectId
    $role = Get-AzureADDirectoryRole | Where-Object {$_.displayName -eq $roleName}
}

# Get service principal for your SQL Managed Instance
$roleMember = Get-AzureADServicePrincipal -SearchString $managedInstanceName
$roleMember.Count
if ($roleMember -eq $null) {
    Write-Output "Error: No Service Principals with name '$    ($managedInstanceName)', make sure that managedInstanceName parameter was     entered correctly."
    exit
}
if (-not ($roleMember.Count -eq 1)) {
    Write-Output "Error: More than one service principal with name pattern '$    ($managedInstanceName)'"
    Write-Output "Dumping selected service principals...."
    $roleMember
    exit
}

# Check if service principal is already member of readers role
$allDirReaders = Get-AzureADDirectoryRoleMember -ObjectId $role.ObjectId
$selDirReader = $allDirReaders | where{$_.ObjectId -match     $roleMember.ObjectId}

if ($selDirReader -eq $null) {
    # Add principal to readers role
    Write-Output "Adding service principal '$($managedInstanceName)' to     'Directory Readers' role'..."
    Add-AzureADDirectoryRoleMember -ObjectId $role.ObjectId -RefObjectId     $roleMember.ObjectId
    Write-Output "'$($managedInstanceName)' service principal added to     'Directory Readers' role'..."

    #Write-Output "Dumping service principal '$($managedInstanceName)':"
    #$allDirReaders = Get-AzureADDirectoryRoleMember -ObjectId $role.ObjectId
    #$allDirReaders | where{$_.ObjectId -match $roleMember.ObjectId}
}
else {
    Write-Output "Service principal '$($managedInstanceName)' is already     member of 'Directory Readers' role'."
}

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

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

Важно!

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

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

  • Connect-AzAccount
  • Select-AzSubscription

В следующей таблице перечислены командлеты, которые используются для подготовки администратора Azure Active Directory для Управляемого экземпляра SQL и управления им.

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

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

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

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

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

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

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

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

Важно!

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

Следующие две процедуры показывают, как подготовить администратора Azure Active Directory для сервера на портале Azure или с помощью PowerShell.

Портал Azure

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

  2. Выполните поиск по фразе SQL server и выберите найденный вариант.

    Поиск и выбор серверов SQL

    Примечание

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

  3. На странице SQL Server выберите Администратор Active Directory.

  4. На странице Администратор Active Directory щелкните Задать администратора.

    Серверы SQL: установка администратора Active Directory

  5. На странице Добавление администратора найдите пользователя, выберите пользователя (или группу), чтобы назначить его администратором, и щелкните Выбрать. На странице "Администратор Active Directory" отобразятся все участники и группы Active Directory. Пользователей или группы, которые выделены серым цветом, нельзя выбрать; они не поддерживаются ролью администратора Azure AD. (См. список поддерживаемых администраторов в разделе Функции и ограничения Azure Active Directory статьи Использование проверки подлинности Azure Active Directory для проверки подлинности в Базе данных SQL или Azure Synapse.) Управление доступом на основе ролей Azure (Azure RBAC) применяется только к порталу и не распространяется на SQL Server.

    Выбор администратора Azure Active Directory

  6. В верхней части страницы Администратор Active Directory нажмите кнопку Сохранить.

    сохранение администратора

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

Изменение администратора может занять несколько минут. После этого новый администратор появится в поле Администратор Active Directory .

Примечание

При настройке администратора Azure Active Directory новое имя администратора (пользователя или группы) не может уже присутствовать в виртуальной базе данных master как имя пользователя для проверки подлинности на сервере. Если оно присутствует, настройка администратора Azure AD завершится ошибкой. Будет выполнен откат его создания и появится сообщение, что такой администратор (имя) уже существует. Такой пользователь для проверки подлинности на сервере не входит в Azure Active Directory, поэтому любая попытка подключиться к серверу с помощью проверки подлинности Azure Active Directory будет неудачной.

Чтобы потом удалить учетную запись администратора, в верхней части страницы Администратор Active Directory щелкните Удалить администратора, а затем нажмите кнопку Сохранить.

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

Чтобы выполнять командлеты PowerShell, необходимо установить и запустить Azure PowerShell. Дополнительные сведения можно узнать в статье Установка и настройка Azure PowerShell. Чтобы подготовить администратора Azure AD, выполните следующие команды Azure PowerShell.

  • Connect-AzAccount
  • Select-AzSubscription

Далее перечислены командлеты, используемые для подготовки и управления администратором Azure Active Directory для Базы данных SQL и Azure Synapse.

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

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

Приведенный ниже скрипт выполняет подготовку группы администраторов Azure AD с именем DBA_Group (идентификатор объекта 40b79501-b343-44ed-9ce7-da4c8cc7353f) для сервера demo_server в группе ресурсов с именем Group-23.

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

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

Примечание

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

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

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

Примечание

Параметр ObjectID Azure AD является обязательным, если параметр DisplayName не уникален. Чтобы получить значения ObjectID и DisplayName, используйте раздел Active Directory классического портала Azure. Там можно просмотреть свойства пользователя или группы.

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

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

В примере ниже выполняется удаление администратора Azure AD.

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

Примечание

Кроме того, можно подготовить администратора Azure Active Directory с помощью интерфейсов REST API. Дополнительные сведения см. в справочнике по REST API управления службами и статье Operations for Azure SQL Databases (Операции для Базы данных SQL Azure).

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

Примечание

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

SSMS и SSDT все еще используют Библиотеку проверки подлинности Azure Active Directory (ADAL). Если вы хотите продолжать использоватьADAL.DLLв приложениях, можно использовать ссылки в этом разделе для установки последних SSMS, ODBC и драйвера OLE DB, содержащего последнюю библиотеку ADAL.DLL.

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

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

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

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

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

Однако для применения проверки подлинности Azure Active Directory в Базе данных SQL и Azure Synapse необходимо использовать пользователей автономной базы данных на основе удостоверения Azure Active Directory. У пользователя автономной базы него нет имени входа в базу данных master, и он сопоставляется с удостоверением в Azure Active Directory, связанным с базой данных. Удостоверение Azure AD может быть учетной записью отдельного пользователя или группы. Дополнительные сведения о пользователях автономной базы данных см. в статье Пользователи автономной базы данных — создание переносимой базы данных.

Примечание

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

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

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

Важно!

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

Вы можете создать пользователя автономной базы данных на основе Azure AD (кроме администратора сервера, который является владельцем базы данных). Для этого подключитесь к базе данных с помощью удостоверения Azure AD от имени пользователя с уровнем разрешений не ниже, чем Изменение любого пользователя. Затем используйте следующий синтаксис Transact-SQL:

CREATE USER [<Azure_AD_principal_name>] FROM EXTERNAL PROVIDER;

Значением параметра Azure_AD_principal_name может быть имя участника-пользователя Azure AD или отображаемое имя группы Azure AD.

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

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

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

CREATE USER [ICU Nurses] FROM EXTERNAL PROVIDER;

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

CREATE USER [appName] FROM EXTERNAL PROVIDER;

Примечание

Для этой команды требуется, чтобы SQL обращался к Azure Active Directory ("внешнему поставщику") от имени вошедшего пользователя. Иногда могут возникнуть обстоятельства, из-за которых Azure Active Directory возвращает исключение обратно в SQL. В таких случаях пользователь увидит ошибку SQL 33134, которая должна содержать сообщение об ошибке, относящееся к Azure Active Directory. В большинстве случаев это сообщение об ошибке говорит, что доступ запрещен, или что пользователь должен зарегистрироваться в MFA для доступа к ресурсу, или что доступ между основными приложениями должен обрабатываться через предварительную авторизацию. В первых двух случаях проблема обычно вызвана политиками условного доступа, настроенными в клиенте Azure Active Directory пользователя: они не позволяют пользователю получать доступ к внешнему поставщику. Обновление политик условного доступа и разрешение в них доступа к приложению "00000003-0000-0000-C000-000000000000" (идентификатор приложения API Microsoft Grap) должно устранить эту проблему. Если ошибка сообщает, что доступ между основными приложениями должен обрабатываться через предварительную авторизацию, это связано с тем, что пользователь вошел в качестве субъекта-службы. Команда выполнится успешно, если вместо субъекта-службы ее будет выполнять пользователь.

Совет

Создать пользователя напрямую из каталога Azure Active Directory можно только в том случае, если этот каталог связан с вашей подпиской Azure. Однако членов других каталогов Active Directory, являющихся импортированными пользователями в связанном каталоге Active Directory (так называемыми внешними пользователями), можно добавить в группу Active Directory в клиенте Active Directory. Создав пользователя автономной базы данных для этой группы AD, пользователи из внешнего каталога Active Directory могут получить доступ к базе данных SQL.

Подробные сведения о создании пользователей автономной базы данных на основе удостоверений Azure Active Directory см. в статье CREATE USER (Transact-SQL).

Примечание

Если удалить учетную запись администратора Azure Active Directory для сервера, все пользователи, прошедшие аутентификацию Azure Active Directory, не смогут подключиться к серверу. При необходимости администратор Базы данных SQL может вручную удалить неиспользуемых пользователей Azure AD.

Примечание

При получении ответа Истек тайм-аут подключения, возможно, потребуется задать для параметра TransparentNetworkIPResolution в строке подключения значение false. Дополнительные сведения см. в статье Connection timeout issue with .NET Framework 4.6.1 — TransparentNetworkIPResolution (Проблема с временем ожидания подключения в .NET Framework 4.6.1 — TransparentNetworkIPResolution).

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

Примечание

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

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

Чтобы убедиться, что администратор Azure AD настроен правильно, подключитесь к базе данных master с помощью учетной записи администратора Azure AD. Вы можете подготовить пользователя автономной базы данных, использующей Azure AD (кроме администратора сервера, который является владельцем базы данных). Для этого подключитесь к базе данных с помощью удостоверения Azure AD, у которого есть доступ к базе данных.

Важно!

Проверку подлинности Azure Active Directory поддерживают SQL Server Management 2016 Studio (SSMS) и SQL Server Data Tools для Visual Studio 2015. Выпуск SSMS за август 2016 года также включает в себя поддержку универсальной аутентификации Active Directory, что позволяет администраторам требовать прохождения многофакторной проверки подлинности с помощью телефонного звонка, текстового сообщения, смарт-карты с ПИН-кодом или уведомления в мобильном приложении.

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

Следующие процедуры показывают, как подключиться к Базе данных SQL с помощью удостоверения Azure Active Directory, используя SQL Server Management Studio или SQL Server Data Tools.

Встроенная аутентификация Active Directory

Используйте этот способ, если вы вошли в Windows с учетными данными Azure Active Directory из федеративного домена или из управляемого домена, для которого настроен простой единый вход со сквозной проверкой подлинности и проверкой подлинности с использованием хэша паролей. Дополнительные сведения см. в разделе Устранение неполадок с простым единым входом Azure Active Directory.

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

    Выбор встроенной аутентификации Active Directory

  2. Нажмите кнопку Параметры, а затем на странице Свойства подключения в поле Подключение к базе данных введите имя пользовательской базы данных для подключения. Дополнительные сведения см. в статье Многофакторная проверка подлинности Azure Active Directory, в разделе, где описываются различия между свойствами подключения для SSMS 17.x и 18.x.

    Выбор имени базы данных

Проверка пароля Active Directory

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

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

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

  2. В поле Имя пользователя введите имя пользователя Azure Active Directory в формате username@domain.com. Именем пользователя должна быть учетная запись из Azure Active Directory или учетная запись из управляемого или федеративного домена с Azure Active Directory.

  3. В поле Пароль введите пароль пользователя для учетной записи Azure Active Directory или учетной записи управляемого/федеративного домена.

    Выбор проверки пароля Active Directory

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

Интерактивная проверка подлинности Active Directory

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

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

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

Следующие процедуры показывают, как подключаться к Базе данных SQL с помощью удостоверения Azure Active Directory из клиентского приложения.

Встроенная аутентификация Active Directory

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

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

Для подключения к базе данных с помощью встроенной проверки подлинности и удостоверения Azure Active Directory ключевое слово проверки подлинности в строке подключения к базе данных должно иметь значение Active Directory Integrated. В следующем примере кода C# используется ADO .NET.

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

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

Проверка пароля Active Directory

Для подключения к базе данных с использованием учетных записей пользователей с удостоверениями Azure Active Directory только для облака или с гибридными удостоверениями Azure Active Directory ключевому слову Authentication должно быть присвоено значение Active Directory Password. Строка подключения должна содержать ключевые слова для идентификатора пользователя (UID) и пароля (PWD), а также их значения. В следующем примере кода C# используется ADO .NET.

string ConnectionString =
@"Data Source=n9lxnyuzhv.database.windows.net; Authentication=Active Directory Password; Initial Catalog=testdb;  UID=bob@contoso.onmicrosoft.com; PWD=MyPassWord!";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();

Дополнительные сведения о методах проверки подлинности Azure AD и примеры кода вы найдете в демонстрации проверки подлинности Azure AD на GitHub.

Токен Azure AD

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

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

Пример строки подключения.

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

Дополнительные сведения см. в блоге о безопасности SQL Server. Дополнительные сведения о добавлении сертификата см. в статье Приступая к работе с аутентификацией на основе сертификата в Azure Active Directory.

sqlcmd

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

Примечание

Команда 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

Устранение неполадок проверки подлинности Azure Active Directory

Руководство по устранению неполадок проверки подлинности Azure Active Directory см. в следующем блоге: https://techcommunity.microsoft.com/t5/azure-sql-database/troubleshooting-problems-related-to-azure-ad-authentication-with/ba-p/1062991

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