Управляемые удостоверения в 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 IdentitySQL строка подключения. Необходимо создать пользователя SQL из управляемого удостоверения в целевой базе данных с помощью инструкции CREATE USER . Дополнительные сведения см. в статье Об использовании проверки подлинности Microsoft Entra с sqlClient.

Сведения о получении текущих UMI или SMI для управляемого экземпляра SQL Azure или База данных SQL Azure см. в статье "Получение или установка управляемого удостоверения для логического сервера или управляемого экземпляра" далее в этой статье.

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

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

Примечание.

Необходимо включить удостоверение экземпляра (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, назначаемого пользователем.

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

Скрипт предоставляет User.Read.AllGroupMember.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.

Screenshot of enterprise application settings in the Azure portal.

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

Screenshot of user-assigned managed identity permissions.

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

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

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

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

Screenshot of the Azure portal page for an Azure SQL Database logical server. In the Properties menu, the System Assigned Managed Identity is highlighted.

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

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

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

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

Azure portal screenshot of selecting a user-assigned managed identity when configuring an existing server identity.

Создание или установка управляемого удостоверения с помощью 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.