Управляемое удостоверение, назначаемое пользователем, в Azure AD для Azure SQL

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

Azure Active Directory (AD) поддерживает два типа управляемых удостоверений: управляемое удостоверение, назначаемое системой (SMI) и управляемое удостоверение, назначаемое пользователем (UMI). Дополнительные сведения см. в статье Что такое управляемые удостоверения для ресурсов Azure?

При создании управляемому экземпляру автоматически назначается управляемое удостоверение, назначаемое системой. При использовании проверки подлинности Azure AD с Управляемым экземпляром SQL Azure в качестве удостоверения сервера нужно назначить управляемое удостоверение. Ранее в качестве удостоверения сервера Управляемого экземпляра или Базы данных SQL можно было назначить только управляемое удостоверение, назначаемое системой. Благодаря поддержке управляемых удостоверений, назначаемых пользователем, Управляемому экземпляру SQL или Базе данных SQL Azure можно назначить UMI как удостоверение экземпляра или сервера. Эта функция теперь поддерживается для Базы данных SQL.

Помимо использования UMI и SMI в качестве удостоверения сервера или экземпляра, UMI и SMI можно использовать для доступа к базе данных с помощью параметра Authentication=Active Directory Managed Identityстроки подключения SQL. Дополнительные сведения см. в статье "Использование проверки подлинности Azure Active Directory с применением SqlClient". В целевой базе данных должен быть сопоставлен пользователь SQL с управляемым удостоверением.

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

Использование UMI в качестве удостоверения сервера имеет ряд преимуществ:

  • Гибкие возможности создания и обслуживания управляемых удостоверений, назначаемых пользователем, для конкретного арендатора. UMI можно использовать в качестве удостоверений сервера для Azure SQL. UMI управляет пользователь, в отличие от удостоверения SMI, которое уникально определяется для каждого сервера и назначается системой.
  • Ранее для использования SMI в качестве удостоверения сервера или экземпляра требовалась роль Читатели каталога Azure AD. После обеспечения доступа к Azure AD с использованием Microsoft Graph пользователи, которым требуется предоставить высокий уровень разрешений, такой как роль "Читатели каталогов", для SMI или UMI, также могут предоставить разрешения более низкого уровня для доступа удостоверения сервера или экземпляра к Microsoft Graph. Дополнительные сведения о предоставлении разрешений "Читатели каталогов" и их функциях см. в статье Роль "Читатели каталогов" в Azure Active Directory для Azure SQL.
  • Пользователи могут выбрать определенное удостоверение UMI в качестве удостоверения сервера или экземпляра для всех баз данных SQL или управляемых экземпляров в арендаторе или иметь несколько удостоверений UMI, которые назначены разным серверам или экземплярам. Например, разные удостоверения UMI можно использовать на разных серверах, представляющих различные функции. К примеру, одно удостоверение UMI может обслуживать прозрачное шифрование данных на одном сервере, а другое — проверку подлинности Azure AD на другом.
  • UMI требуется для создания логического сервера Azure SQL с прозрачным шифрованием данных (TDE) и ключами, управляемыми клиентом (CMK). Дополнительные сведения см. в статье Прозрачное шифрование данных, управляемое клиентом, с использованием управляемого удостоверения, назначаемого пользователем.
  • Управляемые удостоверения, назначаемые пользователем, не зависят от логических серверов или управляемых экземпляров. При удалении логического сервера или экземпляра также удаляется управляемое удостоверение, назначаемое системой. Управляемые удостоверения, назначаемые пользователем, не удаляются вместе с сервером.

Примечание

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

Создание управляемого удостоверения, назначаемого пользователем

Сведения о том, как создать управляемое удостоверение, назначаемое пользователем, см. в статье Администрирование управляемых удостоверений, назначаемых пользователем.

Разрешения

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

Важно!

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

  • User.Read.All — обеспечивает доступ к сведениям о пользователе Azure AD.
  • GroupMember.Read.All — обеспечивает доступ к сведениям о группе Azure AD.
  • Application.Read.ALL — обеспечивает доступ к сведениям о субъекте-службе (приложения) Azure AD.

Предоставить разрешения

Ниже приведен пример скрипта PowerShell, который предоставляет необходимые разрешения для UMI или SMI. В этом примере будут назначены разрешения для UMI umiservertest. Чтобы выполнить скрипт, необходимо войти в систему как пользователь с ролью "Глобальный администратор" или "Администратор привилегированных ролей" и иметь следующие разрешения Microsoft Graph:

  • User.Read.All.
  • GroupMember.Read.All
  • Application.Read.ALL
# Script to assign permissions to the UMI "umiservertest"

import-module AzureAD
$tenantId = '<tenantId>' # Your Azure AD tenant ID

Connect-AzureAD -TenantID $tenantId
# Login as a user with a "Global Administrator" or "Privileged Role Administrator" role
# Script to assign permissions to existing UMI 
# The following Microsoft Graph permissions are required: 
#   User.Read.All
#   GroupMember.Read.All
#   Application.Read.ALL

# Search for Microsoft Graph
$AAD_SP = Get-AzureADServicePrincipal -SearchString "Microsoft Graph";
$AAD_SP
# Use Microsoft Graph; in this example, this is the first element $AAD_SP[0]

#Output

#ObjectId                             AppId                                DisplayName
#--------                             -----                                -----------
#47d73278-e43c-4cc2-a606-c500b66883ef 00000003-0000-0000-c000-000000000000 Microsoft Graph
#44e2d3f6-97c3-4bc7-9ccd-e26746638b6d 0bf30f3b-4a52-48df-9a82-234910c4a086 Microsoft Graph #Change 

$MSIName = "<managedIdentity>";  # Name of your user-assigned or system-assigned managed identity
$MSI = Get-AzureADServicePrincipal -SearchString $MSIName 
if($MSI.Count -gt 1)
{ 
Write-Output "More than 1 principal found, please find your principal and copy the right object ID. Now use the syntax $MSI = Get-AzureADServicePrincipal -ObjectId <your_object_id>"

# Choose the right UMI or SMI

Exit
} 

# If you have more UMIs with similar names, you have to use the proper $MSI[ ]array number

# Assign the app roles

$AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "User.Read.All"}
New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId  -PrincipalId $MSI.ObjectId  -ResourceId $AAD_SP.ObjectId[0]  -Id $AAD_AppRole.Id 
$AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "GroupMember.Read.All"}
New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId  -PrincipalId $MSI.ObjectId  -ResourceId $AAD_SP.ObjectId[0]  -Id $AAD_AppRole.Id
$AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "Application.Read.All"}
New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId  -PrincipalId $MSI.ObjectId  -ResourceId $AAD_SP.ObjectId[0]  -Id $AAD_AppRole.Id

На заключительных этапах скрипта, если у вас есть другие UMI с похожими именами, необходимо использовать правильный номер $MSI[ ]array, например, $AAD_SP.ObjectId[0].

Проверка разрешений для управляемого удостоверения, назначаемого пользователем

Чтобы проверить разрешения для UMI, перейдите на портал Azure. В области ресурса Azure Active Directory выберите элемент Корпоративные приложения. Выберите значение Все приложения для параметра Тип приложения и выполните поиск созданного UMI.

Снимок экрана: параметры корпоративного приложения портал Azure

Выберите UMI и перейдите к параметрам Разрешения в разделе Безопасность.

Снимок экрана: разрешения управляемого удостоверения, назначаемые пользователем

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

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

Настройка управляемых удостоверений на портале Azure

Настройка удостоверения для сервера SQL или управляемого экземпляра SQL на портале Azure:

  1. Перейдите к своему ресурсу сервера SQL или управляемого экземпляра SQL.
  2. В разделе "Безопасность" выберите параметр удостоверения .
  3. В разделе Управляемое удостоверение, назначаемое пользователем выберите команду Добавить.
  4. Выберите нужную подписку, а затем в разделе Управляемые удостоверения, назначенные пользователем выберите нужное управляемое удостоверение из выбранной подписки. Затем нажмите кнопку Выбрать.

портал Azure снимок экрана управляемого удостоверения, назначаемого пользователем при настройке существующего удостоверения сервера

Создание или настройка управляемого удостоверения с помощью Azure CLI

Для запуска этих команд с UMI необходима версия Azure CLI 2.26.0 (или выше).

База данных SQL Azure

  • Чтобы подготовить новый сервер с UMI, воспользуйтесь командой az sql server create.
  • Чтобы получить сведения о сервере UMI, используйте команду az sql server show.
  • Чтобы обновить параметр сервера UMI, используйте команду az sql server update.

Управляемый экземпляр SQL Azure

  • Чтобы создать новый управляемый экземпляр с UMI, используйте команду az sql mi create.
  • Чтобы получить сведения об управляемом экземпляре UMI, используйте команду az sql server show.
  • Чтобы обновить параметр управляемого экземпляра UMI, используйте команду az sql mi update.

Создание или настройка управляемого удостоверения с помощью PowerShell

При использовании PowerShell с UMI требуется модуль Az.Sql 3.4 или более поздней версии.

База данных SQL Azure

  • Чтобы подготовить новый сервер с UMI, воспользуйтесь командой New-AzSqlServer.
  • Чтобы получить сведения о сервере UMI, используйте команду Get-AzSqlServer.
  • Чтобы получить сведения о сервере UMI, используйте команду Set-AzSqlServer.

Управляемый экземпляр SQL Azure

  • Чтобы создать новый управляемый экземпляр с UMI, используйте команду New-AzSqlInstance.
  • Чтобы получить сведения об управляемом экземпляре UMI, используйте команду Get-AzSqlInstance.
  • Чтобы обновить параметр управляемого экземпляра UMI, используйте команду Set-AzSqlInstance.

Создание или настройка управляемого удостоверения с помощью REST API

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

Создание или настройка управляемого удостоверения с помощью шаблона ARM

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

Примечание

Вы не можете изменить администратора сервера или пароль в SQL или администратора Azure AD, повторно выполнив команду для шаблона ARM.

Ограничения и известные проблемы

  • После создания управляемого экземпляра в колонке Администратор Active Directory на портале Azure появляется предупреждение Managed Instance needs permissions to access Azure Active Directory. Click here to grant "Read" permissions to your Managed Instance.. Если управляемому удостоверению, назначаемому пользователем, предоставлены соответствующие разрешения, рассмотренные в разделе Разрешения выше, это предупреждение можно пропустить.
  • Если в качестве удостоверения сервера или экземпляра используется управляемое удостоверение, назначаемое системой или пользователем, после удаления удостоверения сервер или экземпляр не сможет получить доступ к Microsoft Graph. Проверка подлинности и другие функции Azure AD нельзя будет выполнить. Чтобы восстановить функциональность Azure AD, серверу нужно назначить новое удостоверение SMI или UMI с соответствующими разрешениями.
  • Разрешения на доступ к Microsoft Graph с использованием UMI или SMI можно предоставить только с помощью PowerShell. Эти разрешения нельзя предоставить с помощью портала Azure.

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