Spravované identity v Microsoft Entra pro Azure SQL

Platí pro: Azure SQL Database Azure SQL Managed Instance

Microsoft Entra ID (dříve Azure Active Directory) podporuje dva typy spravovaných identit: spravovanou identitu přiřazenou systémem (SMI) a spravovanou identitu přiřazenou uživatelem (UMI). Další informace najdete v tématu Typy spravovaných identit.

Rozhraní SMI se automaticky přiřadí ke službě Azure SQL Managed Instance při jejím vytvoření. Pokud používáte ověřování Microsoft Entra se službou Azure SQL Database, musíte přiřadit SMI, když se instanční objekty Azure použijí k vytvoření uživatelů Microsoft Entra ve službě SQL Database.

Dříve bylo možné přiřadit pouze SMI k identitě serveru Azure SQL Managed Instance nebo SQL Database. Teď je možné přiřadit rozhraní UMI ke službě SQL Managed Instance nebo SQL Database jako identitu instance nebo serveru.

Kromě použití rozhraní UMI a SMI jako instance nebo serverové identity je můžete použít pro přístup k databázi pomocí možnosti Authentication=Active Directory Managed IdentitySQL připojovací řetězec . Pomocí příkazu CREATE USER musíte vytvořit uživatele SQL ze spravované identity v cílové databázi. Další informace naleznete v tématu Použití ověřování Microsoft Entra s SqlClient.

Pokud chcete načíst aktuální rozhraní UMI nebo SMI pro spravovanou instanci Azure SQL nebo Azure SQL Database, přečtěte si téma Získání nebo nastavení spravované identity pro logický server nebo spravovanou instanci dále v tomto článku.

Výhody používání spravovaných identit přiřazených uživatelem

Použití UMI jako serverové identity má několik výhod:

  • Uživatelé mají flexibilitu při vytváření a údržbě vlastních umI pro tenanta. Rozhraní UMI můžete použít jako identity serveru pro Azure SQL. UMI spravuje uživatel, zatímco SMI je jednoznačně definován na server a přiřazen systémem.

  • V minulosti jste potřebovali roli Čtenáře adresáře Microsoft Entra ID při použití SMI jako identity serveru nebo instance. Díky zavedení přístupu k Microsoft Entra ID prostřednictvím Microsoft Graphu můžou uživatelé, kteří se zabývají poskytováním oprávnění vysoké úrovně, jako je role Čtenáři adresáře pro SMI nebo UMI, případně udělit oprávnění nižší úrovni, aby identita serveru nebo instance získala přístup k Microsoft Graphu.

    Další informace o poskytování oprávnění Čtenáři adresáře a jeho funkce naleznete v tématu Role Čtenář adresáře v Microsoft Entra ID pro Azure SQL.

  • Uživatelé můžou zvolit konkrétní UMI, který bude identitou serveru nebo instance pro všechny databáze nebo spravované instance v tenantovi. Nebo můžou mít přiřazených více umI k různým serverům nebo instancím.

    UmI lze použít na různých serverech, aby představovaly různé funkce. UMI může například obsluhovat transparentní šifrování dat (TDE) na jednom serveru a UMI může obsluhovat ověřování Microsoft Entra na jiném serveru.

  • K vytvoření logického serveru v Azure nakonfigurovaného transparentním šifrováním dat s klíči spravovanými zákazníkem (CMK) potřebujete UMI. Další informace najdete v tématu Transparentní šifrování dat spravované zákazníkem pomocí spravované identity přiřazené uživatelem.

  • Rozhraní UMI jsou nezávislá na logických serverech nebo spravovaných instancích. Při odstranění logického serveru nebo instance se odstraní také SMI. Rozhraní UMI se se serverem neodstraní.

Poznámka:

Pokud chcete povolit podporu ověřování Microsoft Entra ve službě SQL Managed Instance, musíte povolit identitu instance (SMI nebo UMI). Pro SLUŽBU SQL Database je povolení identity serveru volitelné a povinné pouze v případě, že instanční objekt Microsoft Entra (aplikace Microsoft Entra) dohlíží na vytváření a správu uživatelů, skupin nebo aplikací Microsoft Entra na serveru. Další informace najdete v tématu Instanční objekt Microsoft Entra s Azure SQL.

Vytvoření spravované identity přiřazené uživatelem

Informace o tom, jak vytvořit UMI, najdete v tématu Správa spravovaných identit přiřazených uživatelem.

Oprávnění

Po vytvoření rozhraní UMI jsou potřeba některá oprávnění, aby rozhraní UMI mohlo číst z Microsoft Graphu jako identitu serveru. UMI udělte následující oprávnění nebo umi přidělte roli Čtenáři adresáře.

Tato oprávnění by měla být udělena před zřízením logického serveru nebo spravované instance. Po udělení oprávnění UMI se povolí pro všechny servery nebo instance vytvořené pomocí UMI přiřazené jako identita serveru.

Důležité

Tato oprávnění může udělit pouze globální správce nebo správce privilegovaných rolí.

  • User.Read.All: Umožňuje přístup k informacím o uživateli Microsoft Entra.
  • GroupMember.Read.All: Umožňuje přístup k informacím o skupině Microsoft Entra.
  • Application.Read.ALL: Umožňuje přístup k informacím instančního objektu Microsoft Entra (aplikace).

Udělit oprávnění

Následující ukázkový skript PowerShellu uděluje potřebná oprávnění pro spravovanou identitu. Tato ukázka přiřadí oprávnění spravované identitě umiservertestpřiřazené uživatelem .

Pokud chcete skript spustit, musíte se přihlásit jako uživatel s rolí globálního správce nebo správce privilegovaných rolí.

Skript udělí spravované identitě a oprávnění pro přístup k Microsoft Graphu.Application.Read.ALL User.Read.AllGroupMember.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
}

Kontrola oprávnění pro spravovanou identitu přiřazenou uživatelem

Pokud chcete zkontrolovat oprávnění pro UMI, přejděte na web Azure Portal. V prostředku Microsoft Entra ID přejděte do podnikových aplikací. Vyberte Všechny aplikace pro typ aplikace a vyhledejte vytvořený UMI.

Snímek obrazovky s nastavením podnikové aplikace na webu Azure Portal

Vyberte UMI a přejděte do nastavení Oprávnění v části Zabezpečení.

Snímek obrazovky s oprávněními spravované identity přiřazené uživatelem

Získání nebo nastavení spravované identity pro logický server nebo spravovanou instanci

Pokud chcete vytvořit server pomocí rozhraní UMI, projděte si následující příručku: Vytvoření logického serveru Azure SQL pomocí spravované identity přiřazené uživatelem.

Získání logického serveru SMI pro Azure SQL Database

Na webu Azure Portal se v nabídce Vlastnosti logického serveru Azure SQL Database zobrazí ID spravované identity (SMI) přiřazené systémem.

Snímek obrazovky se stránkou webu Azure Portal pro logický server Azure SQL Database V nabídce Vlastnosti je zvýrazněná spravovaná identita přiřazená systémem.

  • Pokud chcete načíst rozhraní UMI pro azure SQL Managed Instance nebo Azure SQL Database, použijte následující příklady PowerShellu nebo Azure CLI.
  • Pokud chcete načíst SMI pro Azure SQL Managed Instance, použijte následující příklady PowerShellu nebo Azure CLI.

Nastavení spravované identity na webu Azure Portal

Nastavení identity spravované uživatelem pro logický server Azure SQL Database nebo azure SQL Managed Instance na webu Azure Portal:

  1. Přejděte na sql server nebo prostředek spravované instance SQL.
  2. V části Zabezpečení vyberte nastavení Identita .
  3. V části Spravovaná identita přiřazená uživatelem vyberte Přidat.
  4. Vyberte předplatné a pak jako primární identitu vyberte spravovanou identitu předplatného. Pak zvolte tlačítko Vybrat .

Snímek obrazovky webu Azure Portal s výběrem spravované identity přiřazené uživatelem při konfiguraci existující identity serveru

Vytvoření nebo nastavení spravované identity pomocí Azure CLI

Ke spuštění těchto příkazů s rozhraním UMI se vyžaduje Azure CLI 2.26.0 (nebo novější).

Spravovaná identita Azure SQL Database pomocí Azure CLI

  • Pokud chcete zřídit nový server se spravovanou identitou přiřazenou uživatelem, použijte příkaz az sql server create .

  • Pokud chcete získat spravované identity pro logický server, použijte příkaz az sql server show .

    • Pokud například chcete načíst spravované identity přiřazené uživatelem logického serveru, vyhledejte principalId jednotlivé identity:

      az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.userAssignedIdentities
      
    • Načtení spravované identity přiřazené systémem logického serveru Azure SQL Database:

      az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.principalId
      
  • Pokud chcete aktualizovat nastavení serveru UMI, použijte příkaz az sql server update .

Spravovaná identita azure SQL Managed Instance pomocí Azure CLI

  • Pokud chcete zřídit novou spravovanou instanci pomocí UMI, použijte příkaz az sql mi create .

  • Pokud chcete získat spravované identity přiřazené systémem a přiřazené uživatelem pro spravované instance, použijte příkaz az sql mi show .

    • Pokud například chcete načíst UMI pro spravovanou instanci, vyhledejte principalId jednotlivé položky:

      az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.userAssignedIdentities
      
    • Načtení SMI spravované instance:

      az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.principalId
      
  • Pokud chcete aktualizovat nastavení spravované instance UMI, použijte příkaz az sql mi update .

Vytvoření nebo nastavení spravované identity pomocí PowerShellu

Modul Az.Sql 3.4 nebo novější se vyžaduje pro použití PowerShellu s rozhraním UMI. Doporučujeme nejnovější verzi PowerShellu nebo použijte Azure Cloud Shell na webu Azure Portal.

Spravovaná identita azure SQL Database pomocí PowerShellu

  • Pokud chcete zřídit nový server pomocí UMI, použijte příkaz New-AzSqlServer .

  • Pokud chcete získat spravované identity pro logický server, použijte příkaz Get-AzSqlServer .

    • Pokud například chcete načíst UMI logického serveru, vyhledejte principalId jednotlivé položky:

      $MI = Get-AzSqlServer -ResourceGroupName "resourcegroupnamehere" -Name "sql-logical-server-name-here"
      $MI.Identity.UserAssignedIdentities | ConvertTo-Json 
      
    • Načtení SMI logického serveru Azure SQL Database:

      $MI = Get-AzSqlServer -ResourceGroupName "resourcegroupnamehere" -Name "sql-logical-server-name-here"
      $MI.Identity.principalId
      
  • Pokud chcete aktualizovat nastavení serveru UMI, použijte příkaz Set-AzSqlServer .

Spravovaná identita spravované instance Azure SQL pomocí PowerShellu

  • Pokud chcete zřídit novou spravovanou instanci pomocí rozhraní UMI, použijte příkaz New-AzSqlInstance .

  • Pokud chcete získat spravované identity pro spravovanou instanci, použijte příkaz Get-AzSqlInstance .

    • Pokud například chcete načíst UMI spravované instance, vyhledejte principalId jednotlivé instance:

      $MI = Get-AzSqlInstance -ResourceGroupName "resourcegroupnamehere" -Name "sql-mi-name-here"
      $MI.Identity.UserAssignedIdentities | ConvertTo-Json 
      
    • Načtení SMI spravované instance:

      $MI = Get-AzSqlInstance -ResourceGroupName "resourcegroupnamehere" -Name "sql-mi-name-here"
      $MI.Identity.principalId
      
  • Pokud chcete aktualizovat nastavení spravované instance UMI, použijte příkaz Set-AzSqlInstance .

Vytvoření nebo nastavení spravované identity pomocí rozhraní REST API

Pokud chcete aktualizovat nastavení rozhraní UMI pro server, můžete použít také skript zřizování rozhraní REST API použitý při vytváření logického serveru pomocí spravované identity přiřazené uživatelem nebo vytvořit spravovanou instanci pomocí spravované identity přiřazené uživatelem. Znovu spusťte příkaz zřizování v příručce s aktualizovanou vlastností spravované identity přiřazenou uživatelem, kterou chcete aktualizovat.

Vytvoření nebo nastavení spravované identity pomocí šablony ARM

Pokud chcete aktualizovat nastavení UMI pro server, můžete také použít šablonu Azure Resource Manageru (šablonu ARM) použitou v části Vytvoření logického serveru pomocí spravované identity přiřazené uživatelem nebo vytvořit spravovanou instanci pomocí spravované identity přiřazené uživatelem. Znovu spusťte příkaz zřizování v příručce s aktualizovanou vlastností spravované identity přiřazenou uživatelem, kterou chcete aktualizovat.

Poznámka:

Správce serveru ani heslo nemůžete změnit ani změnit správce Microsoft Entra tak, že znovu provedete příkaz zřizování pro šablonu ARM.

Omezení a známé problémy

  • Po vytvoření spravované instance se na stránce pro správu Microsoft Entra pro vaši spravovanou instanci na webu Azure Portal zobrazí upozornění: Managed Instance needs permissions to access Microsoft Entra ID. Click here to grant "Read" permissions to your Managed Instance. Pokud jste uMI zadali příslušná oprávnění probíraná výše v tomto článku, můžete toto upozornění ignorovat.
  • Pokud jako identitu serveru nebo instance používáte SMI nebo UMI, odstraněním identity se server nebo instance nepodaří získat přístup k Microsoft Graphu. Ověřování Microsoft Entra a další funkce selžou. Pokud chcete obnovit funkce Microsoft Entra, přiřaďte serveru nové rozhraní SMI nebo UMI s příslušnými oprávněními.
  • Pokud chcete udělit oprávnění pro přístup k Microsoft Graphu prostřednictvím SMI nebo UMI, musíte použít PowerShell. Tato oprávnění nemůžete udělit pomocí webu Azure Portal.