Entità servizio Microsoft Entra con Azure SQL

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

Le risorse Azure SQL 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 delle entità servizio (applicazioni Microsoft Entra)

Questo articolo riguarda le applicazioni registrate in Microsoft Entra ID. L'uso delle credenziali dell'applicazione per accedere ad Azure SQL supporta il principio di sicurezza della separazione dei compiti, consentendo alle organizzazioni di configurare un 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 flusso On-Behalf-Of (OBO). OBO consente alle applicazioni di richiedere le credenziali degli utenti registrati, 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 oggetti entità servizio di Microsoft Entra ID e Creare un'entità servizio di Azure con Azure PowerShell.

Creazione utente di Microsoft Entra usando le entità servizio

Il supporto di questa funzionalità è utile nei processi di automazione delle applicazioni di Microsoft Entra in cui le entità di sicurezza Microsoft Entra vengono create e gestite in database SQL o Istanza gestita di SQL senza interazione umana. Le entità servizio possono essere un amministratore Microsoft Entra per il server logico SQL o l’istanza gestita, come parte di un gruppo o come un’identità indipendente. 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 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 che per impostazione predefinita non sono assegnate alle entità servizio o alle identità gestite: 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 USER, ed 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 Azure SQL 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 avranno 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 dall'utente. Per altre informazioni, vedere Identità gestita assegnata dall'utente in Microsoft Entra ID per 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 il comando Set-AzSqlInstance per Istanza gestita di SQL.

    • Per verificare se l'identità è assegnata al server, eseguire il comando Get-AzSqlServer, oppure il comando Get-AzSqlInstance per un’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 Server - API REST.

  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 Amministratori che leggono la 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 Amministratori che leggono la 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 Amministratori che leggono la directory. I proprietari del gruppo possono quindi aggiungere identità del server al gruppo, ereditando tali autorizzazioni. In questo modo si elimina la necessità che un amministratore globale o un amministratore ruolo con privilegi conceda 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 amministratori che leggono la directory in Microsoft Entra ID per Azure SQL.

    • Assegnare autorizzazioni Microsoft Graph all'identità del server

      Per assegnare le singole autorizzazioni di Microsoft Graph all'identità del server, è necessario avere il ruolo Amministratore globale o Amministratore ruolo con privilegi di Microsoft Entra. Questa soluzione è consigliata rispetto all’assegnazione del ruolo Amministratori che leggono la directory, tale ruolo include autorizzazioni di cui l'identità del server non ha bisogno. La sola assegnazione delle singole autorizzazioni di lettura di Microsoft Graph limita le autorizzazioni dell'identità del server all'interno del tenant e rispetta il principio dei privilegi minimi. Per istruzioni, vedere Identità gestita assegnata dall'utente in Microsoft Entra ID per Azure SQL.

    • Aggiungere l'identità del server al ruolo amministratori che leggono la directory

      Per aggiungere l'identità del server al ruolo Amministratori che leggono la directory, è necessario essere membri del ruolo Amministratore globale o Amministratore ruolo con privilegi di Microsoft Entra. Negli ambienti di produzione questa opzione non è consigliata per due motivi: il ruolo amministratori che leggono la directory concede più autorizzazioni rispetto a quelle necessarie per l'identità del server, e il processo di assegnazione dei ruoli richiede comunque approvazioni dell’amministratore per ogni identità del server (a differenza dell’uso dei gruppi). Seguire le istruzioni relative all’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 i passaggi per Assegnare un'identità al server logico e Assegnare l'autorizzazione amministratori che leggono la 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.

  • È necessario un modulo Az.Sql 2.9.0 o versioni successive per configurare un’applicazione di Microsoft Entra come amministratore Microsoft Entra per Azure SQL. Assicurarsi di aver effettuato l'aggiornamento al modulo più recente.

Passaggi successivi