Entità servizio Microsoft Entra con Azure SQL

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

Le risorse SQL di Azure supportano l'accesso a livello di codice per le applicazioni usando entità servizio e identità gestite in Microsoft Entra ID (in precedenza Azure Active Directory).

Supporto dell'entità servizio (applicazioni Microsoft Entra)

Questo articolo si applica alle applicazioni registrate in Microsoft Entra ID. L'uso delle credenziali dell'applicazione per accedere ad Azure SQL supporta il principio di sicurezza separazione dei compiti, consentendo alle organizzazioni di configurare l'accesso preciso per ogni applicazione che si connette ai database. Le identità gestite, una forma speciale di entità servizio, sono particolarmente consigliate perché sono senza password ed eliminano la necessità di credenziali gestite dallo sviluppatore.

Microsoft Entra ID abilita ulteriormente scenari di autenticazione avanzati come OAuth 2.0 On-Behalf-Of Flow (OBO). OBO consente alle applicazioni di richiedere le credenziali utente che hanno eseguito l'accesso, per scenari in cui alle applicazioni stesse non deve essere concesso l'accesso al database senza autorizzazioni delegate.

Per altre informazioni sulle applicazioni Microsoft Entra, vedere Oggetti applicazione e entità servizio in Microsoft Entra ID e Creare un'entità servizio di Azure con Azure PowerShell.

Creazione utente di Microsoft Entra con entità servizio

Il supporto di questa funzionalità è utile nei processi di automazione delle applicazioni Microsoft Entra in cui vengono create e gestite le entità Di sicurezza di Microsoft Entra in database SQL o Istanza gestita di SQL senza interazione umana. Le entità servizio possono essere un amministratore di Microsoft Entra per il server logico SQL o l'istanza gestita, come parte di un gruppo o come identità autonoma. L'applicazione può automatizzare la creazione di oggetti Microsoft Entra in database SQL o Istanza gestita di SQL, consentendo l'automazione completa della creazione dell'utente del database.

Abilitare le entità servizio per creare utenti di Microsoft Entra

Quando si usano applicazioni per accedere ad Azure SQL, la creazione di utenti e account di accesso Di Microsoft Entra richiede autorizzazioni non assegnate alle entità servizio o alle identità gestite per impostazione predefinita: la possibilità di leggere utenti, gruppi e applicazioni in un tenant da Microsoft Graph. Queste autorizzazioni sono necessarie per il motore SQL per convalidare l'identità specificata in CREATE LOGIN o CREATE USERed eseguire il pull di informazioni importanti, tra cui l'OGGETTO o l'ID applicazione dell'identità, usato per creare l'account di accesso o l'utente.

Quando un utente di Microsoft Entra esegue questi comandi, l'applicazione Microsoft di Azure SQL usa autorizzazioni delegate per rappresentare l'utente connesso ed esegue query su Microsoft Graph usando le relative autorizzazioni. Questo flusso non è possibile con le entità servizio, perché un'applicazione non può rappresentare un'altra applicazione. Il motore SQL tenta invece di usare l'identità del server, ovvero l'identità gestita primaria assegnata a un'istanza gestita di SQL, a un server logico SQL di Azure o a un'area di lavoro di Azure Synapse. L'identità del server deve esistere e avere le autorizzazioni di query di Microsoft Graph o le operazioni hanno esito negativo.

La procedura seguente illustra come assegnare un'identità gestita al server e assegnargli le autorizzazioni di Microsoft Graph per consentire alle entità servizio di creare utenti e account di accesso Di Microsoft Entra nel database.

  1. Assegnare l'identità del server. L'identità del server può essere un'identità gestita assegnata dal sistema o assegnata dall'utente. Per altre informazioni, vedere Identità gestita assegnata dall'utente in Microsoft Entra ID for Azure SQL.

    • Il comando di PowerShell seguente crea un nuovo server logico di cui è stato effettuato il provisioning con un'identità gestita assegnata dal sistema:
    New-AzSqlServer -ResourceGroupName <resource group> -Location <Location name> -ServerName <Server name> -ServerVersion "12.0" -SqlAdministratorCredentials (Get-Credential) -AssignIdentity
    

    Per altre informazioni, vedere il comando New-AzSqlServer o Il comando New-AzSqlInstance per Istanza gestita di SQL.

    • Per un server logico esistente, eseguire il comando seguente per aggiungere un'identità gestita assegnata dal sistema al server:
    Set-AzSqlServer -ResourceGroupName <resource group> -ServerName <Server name> -AssignIdentity
    

    Per altre informazioni, vedere il comando Set-AzSqlServer o Set-AzSqlInstance per Istanza gestita di SQL.

    Nota

    L'identità del server può essere assegnata anche usando l'API REST e i comandi dell'interfaccia della riga di comando. Per altre informazioni, vedere az sql server create, az sql server update e Servers - REST API.

  2. Concedere all'identità del server le autorizzazioni per eseguire query su Microsoft Graph. Questa operazione può essere eseguita in diversi modi: aggiungendo l'identità al ruolo Lettori della directory di Microsoft Entra, assegnando l'identità alle singole autorizzazioni di Microsoft Graph o aggiungendo l'identità a un gruppo assegnabile di ruolo con il ruolo Lettori directory:

    • Aggiungere l'identità del server a un gruppo assegnabile a un ruolo

      Negli ambienti di produzione è consigliabile che un amministratore tenant crei un gruppo assegnabile a ruoli e assegni il ruolo Lettori directory . I proprietari del gruppo possono quindi aggiungere identità del server al gruppo, ereditando tali autorizzazioni. In questo modo viene rimosso il requisito di un Amministrazione istrator globale o di ruoli con privilegi Amministrazione istrator per concedere le autorizzazioni a ogni singola identità del server, consentendo agli amministratori di delegare l'assegnazione delle autorizzazioni ai proprietari del gruppo per questo scenario. Per altre informazioni, vedere Ruolo Lettori directory in Microsoft Entra ID for Azure SQL.

    • Assegnare le autorizzazioni di Microsoft Graph all'identità del server

      Per assegnare le singole autorizzazioni di Microsoft Graph all'identità del server, è necessario avere il ruolo Microsoft Entra Global Amministrazione istrator o Privileged Roles Amministrazione istrator. È consigliabile assegnare il ruolo Lettori directory , perché nel ruolo non è necessaria l'identità del server. L'assegnazione solo delle singole autorizzazioni di lettura di Microsoft Graph limita le autorizzazioni dell'identità del server all'interno del tenant e mantiene il principio dei privilegi minimi. Per istruzioni, vedere Identità gestita assegnata dall'utente in Microsoft Entra ID for Azure SQL.

    • Aggiungere l'identità del server al ruolo Lettori directory

      Per aggiungere l'identità del server al ruolo Lettori directory, è necessario essere membri del ruolo Microsoft Entra Global Amministrazione istrator o Privileged Roles Amministrazione istrator. Negli ambienti di produzione questa opzione non è consigliata per due motivi: il ruolo Lettore directory concede più autorizzazioni rispetto all'identità del server e il processo di assegnazione dei ruoli richiede comunque approvazioni di amministratore per ogni identità del server (a differenza dei gruppi). Seguire le istruzioni Istanza gestita di SQL disponibili nell'articolo Effettuare il provisioning dell'amministratore di Microsoft Entra (Istanza gestita di SQL).

Risoluzione dei problemi

Durante la risoluzione dei problemi, potrebbe verificarsi l'errore seguente:

Msg 33134, Level 16, State 1, Line 1
Principal 'test-user' could not be resolved.
Error message: 'Server identity is not configured. Please follow the steps in "Assign an Azure AD identity to your server and add Directory Reader permission to your identity" (https://aka.ms/sqlaadsetup)'

Questo errore indica che l'identità del server non è stata creata o non è stata assegnata alle autorizzazioni di Microsoft Graph. Seguire la procedura per Assegnare un'identità al server logico e Assegnare l'autorizzazione Lettori directory all'identità del server logico.

Limiti

  • Le entità servizio non possono eseguire l'autenticazione attraverso i limiti dei tenant. Il tentativo di accesso a database SQL o Istanza gestita di SQL tramite un'applicazione Microsoft Entra creata in un tenant diverso ha esito negativo.

  • Il modulo Az.Sql 2.9.0 o versione successiva è necessario per impostare un'applicazione Microsoft Entra come amministratore di Microsoft Entra per Azure SQL. Assicurarsi di essere aggiornati al modulo più recente.

Passaggi successivi