Управляемые удостоверения в Azure AD для Azure SQL

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

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

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

Ранее удостоверению сервера можно назначить только SMI Управляемый экземпляр SQL Azure или База данных SQL. Теперь UMI можно назначить Управляемый экземпляр SQL или База данных SQL в качестве экземпляра или удостоверения сервера.

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

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

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

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

  • Пользователи могут создавать и поддерживать собственные пользовательские интерфейсы единой системы обмена сообщениями для клиента. Вы можете использовать UMIs в качестве удостоверений сервера для Azure SQL. UMI управляется пользователем, тогда как SMI однозначно определяется для каждого сервера и назначается системой.

  • В прошлом при использовании SMI в качестве удостоверения сервера или экземпляра требовалась роль читателей каталогов Azure AD. С появлением доступа к Azure AD через Microsoft Graph пользователи, которые обеспокоены предоставлением высокоуровневых разрешений, таких как роль читателей каталогов для SMI или UMI, могут также предоставлять разрешения более низкого уровня, чтобы удостоверение сервера или экземпляра удостоверяло доступ к Microsoft Graph.

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

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

    UMIs можно использовать на разных серверах для представления различных функций. Например, UMI может обслуживать прозрачное шифрование данных (TDE) на одном сервере, а UMI может обслуживать проверку подлинности Azure AD на другом сервере.

  • Для создания логического сервера в Azure , настроенного с помощью TDE с ключами, управляемыми клиентом( CMK), требуется UMI. Дополнительные сведения см. в статье Прозрачное шифрование данных, управляемое клиентом, с использованием управляемого удостоверения, назначаемого пользователем.

  • UMIs не зависят от логических серверов или управляемых экземпляров. При удалении логического сервера или экземпляра SMI также удаляется. UMIs не удаляются с сервером.

Примечание

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

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

Сведения о создании UMI см. в разделе "Управление управляемыми удостоверениями, назначаемыми пользователем".

Разрешения

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

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

Важно!

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

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

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

В следующем примере скрипта PowerShell предоставляются необходимые разрешения для UMI или SMI. В этом примере разрешения назначаются UMI umiservertest.

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

Скрипт предоставляет User.Read.Allразрешения GroupMember.Read.AlluMI Application.Read.ALL или SMI для доступа к Microsoft Graph.

# Script to assign permissions to the UMI "umiservertest"

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

Connect-AzureAD -TenantID $tenantId
# Log in as a user with a "Global Administrator" or "Privileged Role Administrator" role
# Script to assign permissions to an 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

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

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

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

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

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

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

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

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

Получение SMI для логического сервера базы данных Azure SQL

В портал Azure отображается идентификатор управляемого удостоверения, назначаемого системой (SMI), в меню "Свойства" логического сервера Azure SQL базы данных.

Снимок экрана: страница портал Azure для логического сервера базы данных Azure SQL. В меню

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

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

Чтобы задать управляемое пользователем удостоверение для логического сервера базы данных Azure SQL или Управляемый экземпляр SQL Azure в портал Azure:

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

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

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

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

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

  • Чтобы подготовить новый сервер с помощью UMI, используйте команду az sql server create .
  • Чтобы получить управляемые удостоверения для логического сервера, используйте команду az sql server show .
    • Например, чтобы получить UMI логического сервера, найдите principalId каждый из них:
    az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.userAssignedIdentities
    
    • Чтобы получить SMI Azure SQL логического сервера базы данных, выполните следующие действия.
    az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.principalId
    
  • Чтобы обновить параметр сервера UMI, используйте команду az sql server update .

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

  • Чтобы подготовить новый управляемый экземпляр с помощью UMI, используйте команду az sql mi create .
  • Чтобы получить назначаемые системой и назначаемые пользователем MI для управляемых экземпляров, используйте команду az sql mi show .
    • Например, чтобы получить UMI для управляемого экземпляра, найдите principalId каждый из них:
    az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.userAssignedIdentities
    
    • Чтобы получить SMI управляемого экземпляра, выполните следующие действия.
    az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.principalId
    
  • Чтобы обновить параметр управляемого экземпляра UMI, используйте команду az sql mi update .

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

Для использования PowerShell с UMI требуется модуль Az.Sql 3.4 или более поздней версии. Рекомендуется использовать последнюю версию PowerShell или использовать Cloud Shell Azure в портал Azure.

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

  • Чтобы подготовить новый сервер с помощью UMI, используйте команду New-AzSqlServer .
  • Чтобы получить управляемые удостоверения для логического сервера, используйте команду Get-AzSqlServer .
    • Например, чтобы получить UMI логического сервера, найдите principalId каждый из них:
    $MI = get-azsqlserver -resourcegroupname "resourcegroupnamehere" -name "sql-logical-server-name-here"
    $MI.Identity.UserAssignedIdentities | ConvertTo-Json 
    
    • Чтобы получить SMI Azure SQL логического сервера базы данных, выполните следующие действия.
    $MI = get-azsqlserver -resourcegroupname "resourcegroupnamehere" -name "sql-logical-server-name-here"
    $MI.Identity.principalId
    
  • Чтобы обновить параметр сервера UMI, используйте команду Set-AzSqlServer .

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

  • Чтобы подготовить новый управляемый экземпляр с помощью UMI, используйте команду New-AzSqlInstance .
  • Чтобы получить управляемые удостоверения для управляемого экземпляра, используйте команду Get-AzSqlInstance .
    • Например, чтобы получить UMI управляемого экземпляра, найдите principalId каждый из них:
    $MI = get-azsqlinstance -resourcegroupname "resourcegroupnamehere" -name "sql-mi-name-here"
    $MI.Identity.UserAssignedIdentities | ConvertTo-Json 
    
    • Чтобы получить SMI управляемого экземпляра, выполните следующие действия.
    $MI = get-azsqlinstance -resourcegroupname "resourcegroupnamehere" -name "sql-mi-name-here"
    $MI.Identity.principalId
    
  • Чтобы обновить параметр управляемого экземпляра UMI, используйте команду Set-AzSqlInstance .

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

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

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

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

Примечание

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

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

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

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