Identità gestite in Azure AD per Azure SQL

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

Azure Active Directory (Azure AD) 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 a Istanza gestita di SQL di Azure quando viene creata. Quando si usa l'autenticazione di Azure AD con Azure SQL Database, è necessario assegnare un'entità servizio di Azure quando le entità servizio di Azure vengono usate per creare utenti di Azure AD in database SQL.

In precedenza, è possibile assegnare solo una SMI all'identità del server Istanza gestita di SQL di Azure o database SQL. Ora è possibile assegnare un'messaggistica unificata a Istanza gestita di SQL o database SQL come istanza o identità del server.

Oltre a usare un UMI e un SMI come istanza o identità del server, è possibile usarli per accedere al database usando l'opzione Authentication=Active Directory Managed Identitystringa di connessione SQL . È necessario eseguire il mapping di un utente SQL all'identità gestita nel database di destinazione. Per altre informazioni, vedere Uso dell'autenticazione di Azure Active Directory con SqlClient.

Per recuperare le UMI correnti o SMI per Azure SQL istanza gestita o Azure SQL Database, 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

Esistono diversi vantaggi dell'uso di un'UMI come identità del server:

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

  • In passato è necessario il ruolo Lettori directory di Azure AD quando si usa un SMI come identità del server o dell'istanza. Con l'introduzione dell'accesso ad Azure AD tramite Microsoft Graph, gli utenti interessati a concedere autorizzazioni di alto livello, ad esempio il ruolo Lettori directory al ruolo SMI o 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 sulla fornitura di autorizzazioni per lettori directory e sulla relativa funzione, vedere Ruolo Lettori directory in Azure Active Directory per Azure SQL.

  • Gli utenti possono scegliere un UMI specifico per essere l'identità del server o dell'istanza per tutti i database o le istanze gestite nel tenant. Oppure possono avere più UMI assegnati a server o istanze diverse.

    Le UMI possono essere usate in server diversi per rappresentare funzionalità diverse. Ad esempio, un UMI può servire la crittografia dei dati trasparente (TDE) in un server e un'UMI può servire l'autenticazione di Azure AD in un altro server.

  • È necessario creare un server logico in Azure configurato con TDE con chiavi gestite dal cliente. Per altre informazioni, vedere Crittografia dei dati trasparente gestita dal cliente usando l'identità gestita assegnata dall'utente.

  • Le UMI sono indipendenti da server logici o istanze gestite. Quando viene eliminato un server logico o un'istanza, viene eliminato anche 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 Azure AD in Istanza gestita di SQL. Per database SQL, l'abilitazione dell'identità del server è facoltativa e necessaria solo se un'entità servizio di Azure AD (applicazione Azure AD) controlla la creazione e la gestione di utenti, gruppi o applicazioni di Azure AD nel server. Per altre informazioni, vedere Entità servizio di Azure Active Directory con Azure SQL.

Creare un'identità gestita assegnata dall'utente

Per informazioni su come creare un'MESSAGGISTICA unificata, vedere Gestire le identità gestite assegnate dall'utente.

Autorizzazioni

Dopo aver creato l'MESSAGGISTICA unificata, alcune autorizzazioni sono necessarie per consentire all'UMI di leggere da Microsoft Graph come identità del server. Concedere le autorizzazioni seguenti oppure assegnare il ruolo UMI ai lettori di 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 all'MESSAGGISTICA unificata, sono abilitate per tutti i server o le istanze create con l'MESSAGGISTICA unificata assegnata come identità server.

Importante

Solo un amministratore globale o un amministratore ruolo con privilegi può concedere queste autorizzazioni.

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

Concedere le autorizzazioni

Lo script di PowerShell di esempio seguente concede le autorizzazioni necessarie per un UMI o per un SMI. Questo esempio assegna le autorizzazioni all'UMI umiservertest.

Per eseguire lo script, è necessario accedere come utente con un ruolo Amministratore globale o Amministratore ruolo con privilegi.

Lo script concede le User.Read.Allautorizzazioni , GroupMember.Read.Alle Application.Read.ALL a un UMI o A SMI per accedere a Microsoft Graph.

# Script to assign permissions to the UMI "umiservertest"

import-module AzureAD
$tenantId = '<tenantId>' # Your Azure AD tenant ID

Connect-AzureAD -TenantID $tenantId
# Log in as a user with a "Global Administrator" or "Privileged Role Administrator" role
# Script to assign permissions to an existing UMI 
# The following Microsoft Graph permissions are required: 
#   User.Read.All
#   GroupMember.Read.All
#   Application.Read.ALL

# Search for Microsoft Graph
$AAD_SP = Get-AzureADServicePrincipal -SearchString "Microsoft Graph";
$AAD_SP
# Use Microsoft Graph; in this example, this is the first element $AAD_SP[0]

#Output

#ObjectId                             AppId                                DisplayName
#--------                             -----                                -----------
#47d73278-e43c-4cc2-a606-c500b66883ef 00000003-0000-0000-c000-000000000000 Microsoft Graph
#44e2d3f6-97c3-4bc7-9ccd-e26746638b6d 0bf30f3b-4a52-48df-9a82-234910c4a086 Microsoft Graph #Change 

$MSIName = "<managedIdentity>";  # Name of your user-assigned or system-assigned managed identity
$MSI = Get-AzureADServicePrincipal -SearchString $MSIName 
if($MSI.Count -gt 1)
{ 
Write-Output "More than 1 principal found, please find your principal and copy the right object ID. Now use the syntax $MSI = Get-AzureADServicePrincipal -ObjectId <your_object_id>"

# Choose the right UMI or SMI

Exit
} 

# If you have more UMIs with similar names, you have to use the proper $MSI[ ]array number

# Assign the app roles

$AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "User.Read.All"}
New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId  -PrincipalId $MSI.ObjectId  -ResourceId $AAD_SP.ObjectId[0]  -Id $AAD_AppRole.Id 
$AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "GroupMember.Read.All"}
New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId  -PrincipalId $MSI.ObjectId  -ResourceId $AAD_SP.ObjectId[0]  -Id $AAD_AppRole.Id
$AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "Application.Read.All"}
New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId  -PrincipalId $MSI.ObjectId  -ResourceId $AAD_SP.ObjectId[0]  -Id $AAD_AppRole.Id

Nei passaggi finali dello script, se sono presenti più UMI con nomi simili, è necessario usare il numero appropriato $MSI[ ]array . Un esempio è $AAD_SP.ObjectId[0].

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

Per controllare le autorizzazioni per un UMI, passare alla portale di Azure. Nella risorsa Azure Active Directory passare ad Applicazioni aziendali. Selezionare Tutte le applicazioni per il tipo di applicazione e cercare l'UMI creato.

Screenshot delle impostazioni dell'applicazione aziendale nella portale di Azure.

Selezionare l'MESSAGGISTICA unificata e passare alle impostazioni Autorizzazioni in Sicurezza.

Screenshot delle autorizzazioni di identità gestite assegnate dall'utente.

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

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

Ottenere sMI per Azure SQL server logico del database

Il portale di Azure visualizza l'ID dell'identità gestita assegnata dal sistema nel menu Proprietà del server logico del database di Azure SQL.

Screenshot della pagina portale di Azure per un server logico del database di Azure SQL. Nel menu Proprietà viene evidenziata l'identità gestita assegnata dal sistema.

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

Impostare un'identità gestita nel portale di Azure

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

  1. Passare alla risorsa istanza gestita di SQL Server o SQL.
  2. In Sicurezza selezionare l'impostazione Identità .
  3. In Identità gestita assegnata dall'utente selezionare Aggiungi.
  4. Selezionare una sottoscrizione e quindi per Identità primaria selezionare un UMI per la sottoscrizione. Scegliere quindi il pulsante Seleziona.

portale di Azure screenshot della selezione di un'identità gestita assegnata dall'utente durante la configurazione di un'identità del server esistente.

Creare o impostare un'identità gestita usando 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 un'MESSAGGISTICA unificata.

Database SQL di Azure

  • Per effettuare il provisioning di un nuovo server con un'MESSAGGISTICA unificata, 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 UMI di un server logico, cercare l'oggetto principalId di ogni:
    az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.userAssignedIdentities
    
    • Per recuperare l'SMI di un server logico del database di Azure SQL:
    az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.principalId
    
  • Per aggiornare l'impostazione del server UMI, usare il comando az sql server update .

Istanza gestita di SQL di Azure

  • Per effettuare il provisioning di una nuova istanza gestita con un UMI, usare il comando az sql mi create .
  • Per ottenere il comando az sql mi show assegnato dal sistema e assegnato dall'utente per le istanze gestite, usare il comando az sql mi show .
    • Ad esempio, per recuperare le UMI per un'istanza gestita, cercare l'oggetto principalId di ogni:
    az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.userAssignedIdentities
    
    • Per recuperare l'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 di 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 un'MESSAGGISTICA unificata. La versione più recente di PowerShell è consigliata o usare il Cloud Shell di Azure nel portale di Azure.

Database SQL di Azure

  • Per effettuare il provisioning di un nuovo server con un'MESSAGGISTICA unificata, 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 l'oggetto principalId di ogni:
    $MI = get-azsqlserver -resourcegroupname "resourcegroupnamehere" -name "sql-logical-server-name-here"
    $MI.Identity.UserAssignedIdentities | ConvertTo-Json 
    
    • Per recuperare l'SMI di un server logico del database di Azure SQL:
    $MI = get-azsqlserver -resourcegroupname "resourcegroupnamehere" -name "sql-logical-server-name-here"
    $MI.Identity.principalId
    
  • Per aggiornare l'impostazione del server UMI, usare il comando Set-AzSqlServer .

Istanza gestita di SQL di Azure

  • Per effettuare il provisioning di una nuova istanza gestita con un'messaggistica unificata, 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 di un'istanza gestita, cercare di principalId ognuna di esse:
    $MI = get-azsqlinstance -resourcegroupname "resourcegroupnamehere" -name "sql-mi-name-here"
    $MI.Identity.UserAssignedIdentities | ConvertTo-Json 
    
    • Per recuperare l'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 di messaggistica unificata, usare il comando Set-AzSqlInstance .

Creare o impostare un'identità gestita usando l'API REST

Per aggiornare le impostazioni di messaggistica unificata 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à dell'identità gestita assegnata dall'utente aggiornata che si vuole aggiornare.

Creare o impostare un'identità gestita usando un modello di Resource Manager

Per aggiornare le impostazioni di messaggistica unificata per il server, è anche possibile usare il modello di Azure Resource Manager 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à dell'identità gestita assegnata dall'utente aggiornata che si vuole aggiornare.

Nota

Non è possibile modificare l'amministratore del server o la password o modificare l'amministratore di Azure AD eseguendo di nuovo il comando di provisioning per il modello di Resource Manager.

Limitazioni e problemi noti

  • Dopo aver creato un'istanza gestita, il riquadro Azure Active Directory nel portale di Azure visualizza un avviso: Managed Instance needs permissions to access Azure Active Directory. Click here to grant "Read" permissions to your Managed Instance. se è stata specificata l'messaggistica unificata le autorizzazioni appropriate descritte in precedenza in questo articolo, è possibile ignorare questo avviso.
  • Se si usa un oggetto SMI o un'MESSAGGISTICA unificata come identità del server o dell'istanza, l'eliminazione dell'identità renderà il server o l'istanza in grado di accedere a Microsoft Graph. L'autenticazione di Azure AD e altre funzioni avranno esito negativo. Per ripristinare la funzionalità di Azure AD, assegnare un nuovo 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.

Passaggi successivi