Identità gestite in Microsoft Entra per Azure SQL

Si applica a:Database SQL di AzureIstanza gestita di SQL di Azure

Microsoft Entra ID (in precedenza Azure Active Directory) supporta due tipi di identità gestite: identità gestita assegnata dal sistema (SMI) e identità gestita assegnata dall'utente (UMI). Per altre informazioni, vedere Tipi di identità gestita.

Una SMI viene assegnata automaticamente all’Istanza gestita di SQL di Azure quando viene creata. Quando si usa l'autenticazione di Microsoft Entra con database SQL di Azure, è necessario assegnare una SMI quando le entità servizio di Azure vengono usate per creare utenti Microsoft Entra in database SQL.

In precedenza, solo una SMI poteva essere assegnata all'identità del server Istanza gestita di SQL di Azure o del server di database SQL. Ora, è possibile assegnare una UMI all’Istanza gestita di SQL o al database SQL come istanza o identità del server.

Oltre a usare una UMI e una SMI come istanza o identità del server, è possibile usarle per accedere al database usando l'opzione Authentication=Active Directory Managed Identity della stringa di connessione SQL. È necessario creare un utente SQL dall'identità gestita nel database di destinazione usando l'istruzione CREATE USER. Per altre informazioni, vedere Usare l’autenticazione di Microsoft Entra con SqlClient.

Per recuperare le UMI o le SMI correnti per l’Istanza gestita di SQL di Azure o il database SQL di Azure, vedere Ottenere o impostare un'identità gestita per un server logico o un'istanza gestita più avanti in questo articolo.

Vantaggi dell'uso delle identità gestite assegnate dall'utente

L'uso di una UMI come identità server offre diversi vantaggi:

  • Gli utenti hanno la flessibilità di creare e gestire le proprie UMI per un tenant. È possibile usare le UMI come identità del server per Azure SQL. Una UMI viene gestita dall'utente, mentre una SMI è definita in modo univoco per ogni server e assegnata dal sistema.

  • In passato, era necessario il ruolo amministratori che leggono la directory di Microsoft Entra ID quando si usava una SMI come identità del server o dell'istanza. Con l'introduzione dell'accesso a Microsoft Entra ID tramite Microsoft Graph, gli utenti interessati a concedere autorizzazioni di alto livello, ad esempio il ruolo di amministratori che leggono la directory a una SMI o una UMI, possono in alternativa concedere autorizzazioni di livello inferiore in modo che l'identità del server o dell'istanza possa accedere a Microsoft Graph.

    Per altre informazioni su come fornire autorizzazioni di amministratori che leggono la directory e le relative funzioni, vedere Ruolo amministratori che leggono la directory in Microsoft Entra ID per Azure SQL.

  • Gli utenti possono scegliere una UMI specifica come identità del server o dell'istanza per tutti i database o le istanze gestite nel tenant. Oppure possono avere più UMI assegnate a server o istanze diverse.

    Le UMI possono essere usate in server diversi per rappresentare funzionalità diverse. Ad esempio, una UMI può servire per la Transparent Data Encryption (TDE) in un server e un’altra può servire per l'autenticazione di Microsoft Entra in un altro server.

  • È necessaria una UMI per creare un server logico in Azure configurato con TDE con chiavi gestite dal cliente (CMK). Per altre informazioni, vedere Transparent Data Encryption gestita dal cliente con identità gestita assegnata dall'utente.

  • Le UMI sono indipendenti dai server logici o dalle istanze gestite. Quando un server logico o un'istanza viene eliminata, viene eliminata anche la SMI. Le UMI non vengono eliminate con il server.

Nota

È necessario abilitare l'identità dell'istanza (SMI o UMI) per consentire il supporto per l'autenticazione di Microsoft Entra nell’Istanza gestita di SQL. Per database SQL, l'abilitazione dell'identità del server è facoltativa e obbligatoria solo se un'entità servizio Microsoft Entra (applicazione Microsoft Entra) supervisiona la creazione e la gestione di utenti, gruppi o applicazioni Microsoft Entra nel server. Per altre informazioni, vedere Entità servizio di Microsoft Entra con Azure SQL.

Creare un'identità gestita assegnata dall'utente

Per informazioni su come creare una UMI, vedere Gestire le identità gestite assegnate dall'utente.

Autorizzazioni

Dopo aver creato la UMI, sono necessarie alcune autorizzazioni per consentire all'UMI di leggere da Microsoft Graph come identità del server. Concedere le autorizzazioni seguenti o assegnare alla UMI il ruolo di amministratori che leggono la directory.

Queste autorizzazioni devono essere concesse prima di effettuare il provisioning di un server logico o di un'istanza gestita. Dopo aver concesso le autorizzazioni alla UMI, queste vengono abilitate per tutti i server o le istanze create con l'UMI assegnata come identità del server.

Importante

Solo un Amministratore globale o un Amministratore con ruolo privilegiato può concedere queste autorizzazioni.

  • User.Read.All: consente l'accesso alle informazioni utente di Microsoft Entra.
  • GroupMember.Read.All: consente l'accesso alle informazioni del gruppo di Microsoft Entra.
  • Application.Read.ALL: consente l'accesso alle informazioni dell'entità servizio (applicazione) di Microsoft Entra.

Concedere le autorizzazioni

Lo script di PowerShell nell’esempio seguente concede le autorizzazioni necessarie per un'identità gestita. Questo esempio assegna le autorizzazioni all'identità gestita assegnata dall'utente umiservertest.

Per eseguire lo script, è necessario accedere come utente con un ruolo da amministratore globale o amministratore con ruolo privilegiato.

Lo script concede le autorizzazioni User.Read.All, GroupMember.Read.All e Application.Read.ALL a un'identità gestita così che questa possa accedere a 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 "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
}

Controllare le autorizzazioni per l'identità gestita assegnata dall'utente

Per controllare le autorizzazioni per una UMI, passare al portale di Azure. Nella risorsa Microsoft Entra ID, selezionare Applicazioni aziendali. Selezionare Tutte le applicazioni per tipo di applicazione e cercare la UMI che è stata creata.

Screenshot of enterprise application settings in the Azure portal.

Selezionare la UMI e passare alle impostazioni delle Autorizzazioni nella sezione Sicurezza.

Screenshot of user-assigned managed identity permissions.

Ottenere o impostare un'identità gestita per un server logico o un'istanza gestita

Per creare un server usando una UMI, vedere la guida seguente: Creare un server logico di Azure SQL usando un'identità gestita assegnata dall'utente.

Ottenere la SMI per il server logico del database SQL di Azure

Il portale di Azure mostra l'ID dell'identità gestita assegnata dal sistema (SMI) nel menu Proprietà del server logico database SQL di 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.

  • Per recuperare le UMI per l’Istanza gestita di SQL di Azure o per il database SQL di Azure, usare gli esempi di PowerShell o dell'interfaccia della riga di comando di Azure seguenti.
  • Per recuperare le SMI per l’Istanza gestita di SQL di Azure, usare gli esempi di PowerShell o dell'interfaccia della riga di comando di Azure seguenti.

Impostare l'identità gestita nel portale di Azure

Per impostare l'identità gestita dall'utente per il server logico del database SQL di Azure o dell’Istanza gestita di SQL di Azure nel portale di Azure:

  1. Passare alla risorsa SQL server o all’istanza gestita di SQL.
  2. Selezionare l’impostazione Identità dal menu Sicurezza.
  3. Selezionare Aggiungi nella sezione identità gestita assegnata dall'utente.
  4. Selezionare una sottoscrizione e quindi, come Identità primaria, selezionare un'identità gestita per la sottoscrizione. Scegliere quindi il pulsante Seleziona.

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

Creare o impostare l'identità gestita con l'interfaccia della riga di comando di Azure

L'interfaccia della riga di comando di Azure 2.26.0 (o versione successiva) è necessaria per eseguire questi comandi con una UMI.

Identità gestita del database SQL di Azure usando l'interfaccia della riga di comando di Azure

  • Per effettuare il provisioning di un nuovo server con un'identità gestita assegnata dall'utente, usare il comando az sql server create .

  • Per ottenere le identità gestite per un server logico, usare il comando az sql server show.

    • Ad esempio, per recuperare le identità gestite assegnate dall'utente di un server logico, cercare il principalId di ognuna di esse:

      az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.userAssignedIdentities
      
    • Per recuperare l'identità gestita assegnata dal sistema di un server logico database SQL di Azure:

      az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.principalId
      
  • Per aggiornare le impostazioni server della UMI, usare il comando az sql server update.

Identità gestita dell’Istanza gestita di SQL di Azure usando l'interfaccia della riga di comando di Azure

  • Per effettuare il provisioning di una nuova istanza gestita con una UMI, usare il comando az sql mi create.

  • Per ottenere le identità gestite assegnate dal sistema e assegnate dall'utente per le istanze gestite, usare il comando az sql mi show.

    • Ad esempio, per recuperare le UMI per un'istanza gestita, cercare la principalId di ognuna di esse:

      az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.userAssignedIdentities
      
    • Per recuperare la SMI di un'istanza gestita:

      az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.principalId
      
  • Per aggiornare l'impostazione dell'istanza gestita della UMI, usare il comando az sql mi update.

Creare o impostare un'identità gestita usando PowerShell

Il modulo Az.Sql 3.4 o versione successiva è necessario per l'uso di PowerShell con una UMI. È consigliata l’ultima versione di PowerShell, oppure la Azure Cloud Shell nel portale di Azure.

Identità gestita del database SQL di Azure con PowerShell

  • Per effettuare il provisioning di un nuovo server con una UMI, usare il comando New-AzSqlServer.

  • Per ottenere le identità gestite per un server logico, usare il comando Get-AzSqlServer.

    • Ad esempio, per recuperare le UMI di un server logico, cercare la principalId di ognuna di esse:

      $MI = Get-AzSqlServer -ResourceGroupName "resourcegroupnamehere" -Name "sql-logical-server-name-here"
      $MI.Identity.UserAssignedIdentities | ConvertTo-Json 
      
    • Per recuperare la SMI di un server logico database SQL di Azure:

      $MI = Get-AzSqlServer -ResourceGroupName "resourcegroupnamehere" -Name "sql-logical-server-name-here"
      $MI.Identity.principalId
      
  • Per aggiornare le impostazioni server della UMI, usare il comando Set-AzSqlServer.

Identità gestita dell’Istanza gestita di SQL di Azure usando PowerShell

  • Per effettuare il provisioning di una nuova istanza gestita con una UMI, usare il comando New-AzSqlInstance.

  • Per ottenere le identità gestite per un’istanza gestita, usare il comando Get-AzSqlInstance.

    • Ad esempio, per recuperare le UMI per un'istanza gestita, cercare la principalId di ognuna di esse:

      $MI = Get-AzSqlInstance -ResourceGroupName "resourcegroupnamehere" -Name "sql-mi-name-here"
      $MI.Identity.UserAssignedIdentities | ConvertTo-Json 
      
    • Per recuperare la SMI di un'istanza gestita:

      $MI = Get-AzSqlInstance -ResourceGroupName "resourcegroupnamehere" -Name "sql-mi-name-here"
      $MI.Identity.principalId
      
  • Per aggiornare l'impostazione dell'istanza gestita della UMI, usare il comando Set-AzSqlInstance.

Creare o impostare un'identità gestita con la API REST

Per aggiornare le impostazioni della UMI per il server, è anche possibile usare lo script di provisioning dell'API REST usato in Creare un server logico usando un'identità gestita assegnata dall'utente o Creare un'istanza gestita usando un'identità gestita assegnata dall'utente. Eseguire di nuovo il comando di provisioning nella guida con la proprietà di identità gestita assegnata dall'utente aggiornata che si vuole aggiornare.

Creare o impostare un'identità gestita usando un modello di ARM

Per aggiornare le impostazioni della UMI per il server, è anche possibile usare il modello di Resource Manager Azure (modello di ARM) usato in Creare un server logico usando un'identità gestita assegnata dall'utente o Creare un'istanza gestita usando un'identità gestita assegnata dall'utente. Eseguire di nuovo il comando di provisioning nella guida con la proprietà di identità gestita assegnata dall'utente aggiornata che si vuole aggiornare.

Nota

Non è possibile modificare l'amministratore del server o la password né modificare l'amministratore di Microsoft Entra eseguendo nuovamente il comando di provisioning per il modello di ARM.

Limitazioni e problemi noti

  • Dopo aver creato un'istanza gestita, nella pagina di amministrazione di Microsoft Entra per l'istanza gestita nel portale di Azure viene mostrato un avviso: Managed Instance needs permissions to access Microsoft Entra ID. Click here to grant "Read" permissions to your Managed Instance. Se sono state concesse all'UMI le autorizzazioni appropriate descritte in precedenza in questo articolo, è possibile ignorare questo avviso.
  • Se si usa una SMI o una UMI come identità del server o dell'istanza, l'eliminazione dell'identità renderà il server o l'istanza non più in grado di accedere a Microsoft Graph. L'autenticazione Microsoft Entra e le altre funzioni avranno esito negativo. Per ripristinare la funzionalità Microsoft Entra, assegnare una nuova SMI o UMI al server con le autorizzazioni appropriate.
  • Per concedere le autorizzazioni per accedere a Microsoft Graph tramite SMI o UMI, è necessario usare PowerShell. Non è possibile concedere queste autorizzazioni usando il portale di Azure.