Поделиться через


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

Применимо к:Azure SQL DatabaseAzure SQL Managed Instance

Microsoft Entra ID (формерно Azure Active Directory) поддерживает два типа управляемых удостоверений: назначаемое системой управляемое удостоверение (SMI) и управляемое удостоверение, назначаемое пользователем (UMI). Дополнительные сведения см. в разделе Типы управляемых удостоверений.

При создании экземпляра управляемой базы данных SQL в Azure (SQL Managed Instance) ему автоматически присваивается SMI. При использовании проверки подлинности Microsoft Entra с Azure SQL Database необходимо назначить SMI, когда субъекты-службы Azure создают пользователей Microsoft Entra в базе данных SQL.

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

Помимо использования UMI и SMI в качестве идентификации экземпляра или удостоверения сервера, их можно использовать для доступа к базе данных с помощью параметра строки подключения SQL Authentication=Active Directory Managed Identity. Необходимо создать SQL-пользователя из управляемого идентификатора в целевой базе данных с помощью инструкции CREATE USER. Дополнительные сведения см. в статье Using Microsoft Entra authentication with SqlClient.

Для получения текущих UMIs или SMI для управляемого экземпляра Azure SQL или Azure SQL Database, см. раздел Получение или установка управляемой учетной записи для логического сервера или управляемого экземпляра далее в этой статье.

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

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

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

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

    Для получения дополнительной информации о предоставлении разрешений читателей каталогов и их функциях см. раздел Directory Readers в Microsoft Entra ID для Azure SQL.

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

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

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

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

Примечание.

Необходимо включить удостоверение экземпляра (SMI или UMI), чтобы разрешить поддержку проверки подлинности Microsoft Entra в SQL Managed Instance. Для базы данных SQL включение удостоверения сервера не является обязательным и требуется только в случае, если учетная запись службы Microsoft Entra (приложение Microsoft Entra) контролирует создание и управление пользователями, группами или приложениями Microsoft Entra на сервере. Дополнительные сведения см. в разделе Microsoft Entra структурные элементы службы с 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 (приложении).

Разрешения для SMI

Для SMI требуются те же разрешения для приложений Microsoft Graph.

Применяется только к Azure SQL Database. Использование SMI дает возможность явно не подготавливать разрешения Microsoft Graph. Пользователи Microsoft Entra по-прежнему могут создаваться без необходимых разрешений Microsoft Graph с помощью синтаксиса CREATE USER T-SQL. Для этого потребуется синтаксис SID и TYPE, как описано в статье CREATE USER.

CREATE USER
    {
    Microsoft_Entra_principal FROM EXTERNAL PROVIDER [ WITH <limited_options_list> [ ,... ] ]
    | Microsoft_Entra_principal WITH <options_list> [ ,... ]
    }
 [ ; ]

<limited_options_list> ::=
      DEFAULT_SCHEMA = schema_name
    | OBJECT_ID = 'objectid'
<options_list> ::=
      DEFAULT_SCHEMA = schema_name
    | SID = sid
    | TYPE = { X | E }

Приведенный выше синтаксис позволяет создавать пользователей Microsoft Entra без проверки. Для этого необходимо указать Object Id сущности Microsoft Entra и использовать его в качестве SID во инструкции T-SQL, как описано в Создание пользователя автономной базы данных из сущности Microsoft Entra без проверки.

Проверка допустимости идентификатора объекта является ответственностью пользователя, выполняющего инструкцию T-SQL.

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

В этом примере сценария PowerShell предоставляются необходимые разрешения для управляемой идентификации. Этот пример назначает разрешения назначенному пользователем управляемому удостоверению umiservertest.

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

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

# 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 "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 ID перейдите к приложениям Enterprise. Выберите Все приложения для Тип приложения и найдите UMI, который вы создали.

Скриншот настроек корпоративного приложения на портале Azure.

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

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

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

Чтобы создать сервер или экземпляр с использованием UMI, см. следующие руководства.

Установить SMI

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

  1. Перейдите к своему ресурсу сервера SQL или управляемого экземпляра SQL.

  2. В разделе "Безопасность" выберите "Удостоверение".

  3. В разделе Управляемое удостоверение, назначаемое системой, установите Состояние в положение Включено.

    Снимок экрана панели идентификаций логического сервера на портале Azure.

  4. Выберите Сохранить, чтобы сохранить изменения.

Чтобы задать управляемое системой удостоверение для Azure SQL Managed Instance на портале Azure выполните следующие действия.

  1. Перейдите к ресурсу управляемого экземпляра SQL .

  2. В разделе "Безопасность" выберите "Удостоверение".

  3. В разделе Управляемое удостоверение, назначаемое системой, установите состояние в положение Включено.

    Снимок экрана панели идентификации для управляемого экземпляра SQL на портале Azure.

  4. Выберите Сохранить, чтобы сохранить изменения.

Получите SMI

На портале Azure в меню Properties логического сервера Azure SQL Database отображается идентификатор управляемой системой (SMI).

Скриншот страницы портала Azure для логического сервера Azure SQL Database. В меню

  • Чтобы получить UMIs для Azure SQL Managed Instance или Azure SQL Database, воспользуйтесь примерами PowerShell или Azure CLI далее в этой статье.
  • Чтобы получить SMI для Azure SQL Managed Instance, используйте PowerShell или Azure CLI примеры далее в этой статье.

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

Чтобы задать управляемое пользователем удостоверение для логического сервера Azure SQL Database или Azure SQL Managed Instance на портале Azure:

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

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

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

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

управляемое удостоверение Azure SQL Database с помощью 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
      
    • Чтобы получить управляемую идентичность, назначаемую системой для логического сервера базы данных Azure SQL Database:

      az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.principalId
      
  • Чтобы обновить параметр сервера UMI, используйте команду az sql server update .

управляемое удостоверение Azure SQL Managed Instance с помощью 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.

управляемое удостоверение Azure SQL Database с помощью PowerShell

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

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

    • Например, чтобы получить UMIs логического сервера, найдите principalId для каждого из них:

      $MI = Get-AzSqlServer -ResourceGroupName "resourcegroupnamehere" -Name "sql-logical-server-name-here"
      $MI.Identity.UserAssignedIdentities | ConvertTo-Json
      
    • Чтобы получить SMI Azure SQL Database логического сервера, выполните следующие действия.

      $MI = Get-AzSqlServer -ResourceGroupName "resourcegroupnamehere" -Name "sql-logical-server-name-here"
      $MI.Identity.principalId
      
  • Чтобы обновить параметр сервера UMI, используйте команду Set-AzSqlServer .

Управление управляемой идентичностью Azure SQL Managed Instance с помощью PowerShell

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

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

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