Управляемые удостоверения в Microsoft Entra для SQL Azure
Применимо к: База данных SQL Azure Управляемый экземпляр SQL Azure
Идентификатор Microsoft Entra (ранее Azure Active Directory) поддерживает два типа управляемых удостоверений: назначаемое системой управляемое удостоверение (SMI) и назначаемое пользователем управляемое удостоверение (UMI). Дополнительные сведения см. в статье Что такое управляемые удостоверения для ресурсов Azure?
При создании SMI автоматически назначается Управляемый экземпляр SQL Azure. При использовании проверки подлинности Microsoft Entra с База данных SQL Azure необходимо назначить SMI, когда субъекты-службы Azure используются для создания пользователей Microsoft Entra в База данных SQL.
Ранее только SMI можно назначить Управляемый экземпляр SQL Azure или База данных SQL удостоверения сервера. Теперь UMI можно назначить Управляемый экземпляр SQL или База данных SQL как экземпляр или удостоверение сервера.
Помимо использования UMI и SMI в качестве экземпляра или удостоверения сервера, их можно использовать для доступа к базе данных с помощью параметра Authentication=Active Directory Managed Identity
SQL строка подключения. Необходимо создать пользователя SQL из управляемого удостоверения в целевой базе данных с помощью инструкции CREATE USER . Дополнительные сведения см. в статье Об использовании проверки подлинности Microsoft Entra с sqlClient.
Сведения о получении текущих UMI или SMI для управляемого экземпляра SQL Azure или База данных SQL Azure см. в статье "Получение или установка управляемого удостоверения для логического сервера или управляемого экземпляра" далее в этой статье.
Преимущества управляемых удостоверений, назначаемых пользователем
Существует несколько преимуществ использования UMI в качестве удостоверения сервера:
Пользователи имеют гибкость для создания и поддержания собственных UMIS для клиента. UMIs можно использовать в качестве удостоверений сервера для SQL Azure. UMI управляется пользователем, в то время как SMI однозначно определяется на сервер и назначается системой.
В прошлом при использовании SMI в качестве сервера или удостоверения экземпляра требуется роль читателя каталога идентификаторов идентификатора Microsoft Entra. С введением доступа к идентификатору Microsoft Entra с помощью Microsoft Graph пользователи, которые обеспокоены предоставлением высокоуровневых разрешений, таких как роль читателей каталогов для SMI или UMI, могут также предоставлять разрешения на более низкий уровень, чтобы удостоверение сервера или экземпляра могли получить доступ к Microsoft Graph.
Дополнительные сведения о предоставлении разрешений читателя каталогов и ее функции см . в разделе "Читатели каталогов" в идентификаторе Microsoft Entra для SQL Azure.
Пользователи могут выбрать определенный идентификатор UMI для сервера или экземпляра для всех баз данных или управляемых экземпляров в клиенте. Кроме того, они могут назначать несколько UMIS разным серверам или экземплярам.
UMIs можно использовать на разных серверах для представления различных функций. Например, UMI может обслуживать прозрачное шифрование данных (TDE) на одном сервере, а UMI может обслуживать проверку подлинности Microsoft Entra на другом сервере.
Для создания логического сервера в Azure, настроенного с помощью TDE, требуется UMI с ключами, управляемыми клиентом (CMKs). Дополнительные сведения см. в статье Прозрачное шифрование данных, управляемое клиентом, с использованием управляемого удостоверения, назначаемого пользователем.
UMIs не зависят от логических серверов или управляемых экземпляров. При удалении логического сервера или экземпляра SMI также удаляется. UMIs не удаляются с сервером.
Примечание.
Необходимо включить удостоверение экземпляра (SMI или UMI), чтобы разрешить поддержку проверки подлинности Microsoft Entra в Управляемый экземпляр SQL. Для База данных SQL включение удостоверения сервера является необязательным и обязательным, только если субъект-служба Microsoft Entra (приложение Microsoft Entra) контролирует создание пользователей, групп или приложений Microsoft Entra на сервере и управление ими. Дополнительные сведения см. в статье Microsoft Entra Service Principal with Azure SQL.
Создание управляемого удостоверения, назначаемого пользователем
Сведения о создании UMI см. в статье "Управление управляемыми удостоверениями, назначаемыми пользователем".
Разрешения
После создания UMI некоторые разрешения необходимы для чтения UMI из Microsoft Graph в качестве удостоверения сервера. Предоставьте следующие разрешения или предоставьте роль чтения каталогов UMI.
Перед подготовкой логического сервера или управляемого экземпляра необходимо предоставить эти разрешения. После предоставления разрешений UMI они включены для всех серверов или экземпляров, созданных с помощью UMI, назначенных в качестве удостоверения сервера.
Внимание
Предоставить такие разрешения может только глобальный администратор или администратор привилегированных ролей:
- User.Read.All: разрешает доступ к сведениям пользователя Microsoft Entra.
- GroupMember.Read.All: разрешает доступ к данным группы Microsoft Entra.
- Application.Read.ALL: разрешает доступ к сведениям субъекта-службы (приложения) Microsoft Entra.
Предоставить разрешения
В следующем примере скрипта PowerShell предоставляются необходимые разрешения для управляемого удостоверения. Этот пример назначает разрешения управляемому удостоверению umiservertest
, назначаемого пользователем.
Чтобы запустить сценарий, необходимо войти в качестве пользователя с ролью глобального администратора или администратора привилегированных ролей.
Скрипт предоставляет User.Read.All
GroupMember.Read.All
управляемому удостоверению разрешения на доступ к Microsoft Graph.Application.Read.ALL
# Script to assign permissions to an existing UMI
# The following required Microsoft Graph permissions will be assigned:
# User.Read.All
# GroupMember.Read.All
# Application.Read.All
Import-Module Microsoft.Graph.Authentication
Import-Module Microsoft.Graph.Applications
$tenantId = "<tenantId>" # Your tenant ID
$MSIName = "<managedIdentity>"; # Name of your managed identity
# Log in as a user with the "Global Administrator" or "Privileged Role Administrator" role
Connect-MgGraph -TenantId $tenantId -Scopes "AppRoleAssignment.ReadWrite.All,Application.Read.All"
# Search for Microsoft Graph
$MSGraphSP = Get-MgServicePrincipal -Filter "DisplayName eq 'Microsoft Graph'";
$MSGraphSP
# Sample Output
# DisplayName Id AppId SignInAudience ServicePrincipalType
# ----------- -- ----- -------------- --------------------
# Microsoft Graph 47d73278-e43c-4cc2-a606-c500b66883ef 00000003-0000-0000-c000-000000000000 AzureADMultipleOrgs Application
$MSI = Get-MgServicePrincipal -Filter "DisplayName eq '$MSIName'"
if($MSI.Count -gt 1)
{
Write-Output "More than 1 principal found with that name, please find your principal and copy its object ID. Replace the above line with the syntax $MSI = Get-MgServicePrincipal -ServicePrincipalId <your_object_id>"
Exit
}
# Get required permissions
$Permissions = @(
"User.Read.All"
"GroupMember.Read.All"
"Application.Read.All"
)
# Find app permissions within Microsoft Graph application
$MSGraphAppRoles = $MSGraphSP.AppRoles | Where-Object {($_.Value -in $Permissions)}
# Assign the managed identity app roles for each permission
foreach($AppRole in $MSGraphAppRoles)
{
$AppRoleAssignment = @{
principalId = $MSI.Id
resourceId = $MSGraphSP.Id
appRoleId = $AppRole.Id
}
New-MgServicePrincipalAppRoleAssignment `
-ServicePrincipalId $AppRoleAssignment.PrincipalId `
-BodyParameter $AppRoleAssignment -Verbose
}
Проверка разрешений на управляемое удостоверение, назначаемое пользователем
Чтобы проверить разрешения для UMI, перейдите на портал Azure. В ресурсе Идентификатора Microsoft Entra перейдите в корпоративные приложения. Выберите все приложения для типа приложения и найдите созданный UMI.
Выберите UMI и перейдите к параметрам Разрешения в разделе Безопасность.
Получение или установка управляемого удостоверения для логического сервера или управляемого экземпляра
Сведения о создании сервера с помощью UMI см. в следующем руководстве. Создание логического сервера SQL Azure с помощью управляемого удостоверения, назначаемого пользователем.
Получение SMI для логического сервера База данных SQL Azure
В портал Azure отображается идентификатор управляемого удостоверения, назначаемого системой (SMI), в меню "Свойства" База данных SQL Azure логического сервера.
- Чтобы получить UMI для Управляемый экземпляр SQL Azure или База данных SQL Azure, используйте следующие примеры PowerShell или Azure CLI.
- Чтобы получить SMI для Управляемый экземпляр SQL Azure, используйте следующие примеры PowerShell или Azure CLI.
Настройка управляемого удостоверения в портал Azure
Чтобы задать управляемое пользователем удостоверение для логического сервера База данных SQL Azure или Управляемый экземпляр SQL Azure в портал Azure:
- Перейдите к своему ресурсу сервера SQL или управляемого экземпляра SQL.
- В разделе "Безопасность" выберите параметр удостоверений .
- В разделе Управляемое удостоверение, назначаемое пользователем выберите команду Добавить.
- Выберите подписку, а затем для первичного удостоверения выберите управляемое удостоверение для подписки. Затем нажмите кнопку Выбрать.
Создание или установка управляемого удостоверения с помощью Azure CLI
Для выполнения этих команд с помощью UMI требуется Azure CLI 2.26.0 (или более поздней версии).
База данных SQL Azure управляемое удостоверение с помощью Azure CLI
Чтобы подготовить новый сервер с управляемым удостоверением, назначаемого пользователем, используйте команду az sql server create .
Чтобы получить управляемые удостоверения для логического сервера, используйте команду az sql server show .
Например, чтобы получить назначаемые пользователем управляемые удостоверения логического сервера, найдите
principalId
каждый из них:az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.userAssignedIdentities
Чтобы получить управляемое удостоверение, назначаемое системой, База данных SQL Azure логическим сервером:
az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.principalId
Чтобы обновить параметр сервера UMI, используйте команду az sql server update .
Управляемый экземпляр SQL Azure управляемое удостоверение с помощью Azure CLI
Чтобы подготовить новый управляемый экземпляр с помощью UMI, используйте команду az sql mi create .
Чтобы получить управляемые удостоверения, назначенные системой и назначаемые пользователем, для управляемых экземпляров, используйте команду 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
Модуль Az.Sql 3.4 или более поздней версии необходим для использования PowerShell с UMI. Рекомендуется использовать последнюю версию PowerShell или использовать Azure Cloud Shell в портал Azure.
управляемое удостоверение База данных SQL Azure с помощью PowerShell
Чтобы подготовить новый сервер с помощью UMI, используйте команду New-AzSqlServer .
Чтобы получить управляемые удостоверения для логического сервера, используйте команду Get-AzSqlServer .
Например, чтобы получить UMI-адреса логического сервера, найдите
principalId
каждый из них:$MI = Get-AzSqlServer -ResourceGroupName "resourcegroupnamehere" -Name "sql-logical-server-name-here" $MI.Identity.UserAssignedIdentities | ConvertTo-Json
Чтобы получить SMI База данных SQL Azure логического сервера:
$MI = Get-AzSqlServer -ResourceGroupName "resourcegroupnamehere" -Name "sql-logical-server-name-here" $MI.Identity.principalId
Чтобы обновить параметр сервера UMI, используйте команду Set-AzSqlServer .
управляемое удостоверение Управляемый экземпляр SQL Azure с помощью PowerShell
Чтобы подготовить новый управляемый экземпляр с помощью 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), используемый в создании логического сервера с помощью управляемого удостоверения, назначаемого пользователем, или создать управляемый экземпляр с помощью управляемого удостоверения, назначаемого пользователем. Повторно выполните команду подготовки, приведенную в руководстве, указав обновленное свойство управляемого удостоверения, назначаемого пользователем, которое вы хотите обновить.
Примечание.
Вы не можете изменить администратора сервера или пароль или изменить администратора Microsoft Entra, повторно выполнив команду подготовки для шаблона ARM.
Известные проблемы и ограничения
- После создания управляемого экземпляра страница администрирования Microsoft Entra для управляемого экземпляра в портал Azure отображает предупреждение:
Managed Instance needs permissions to access Microsoft Entra ID. Click here to grant "Read" permissions to your Managed Instance.
если вы предоставили UMI соответствующие разрешения, рассмотренные ранее в этой статье, вы можете игнорировать это предупреждение. - Если вы используете SMI или UMI в качестве удостоверения сервера или экземпляра, удаление удостоверения сделает сервер или экземпляр не в состоянии получить доступ к Microsoft Graph. Проверка подлинности Microsoft Entra и другие функции завершаются ошибкой. Чтобы восстановить функциональные возможности Microsoft Entra, назначьте новый SMI или UMI серверу с соответствующими разрешениями.
- Чтобы предоставить разрешения на доступ к Microsoft Graph через SMI или UMI, необходимо использовать PowerShell. Эти разрешения нельзя предоставить с помощью портал Azure.