Entità servizio di Azure Active Directory con Azure SQL

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

Azure Active Directory (Azure AD) supporta la creazione di utenti in Azure SQL Database (database SQL) per conto delle applicazioni Azure AD (entità servizio). Questa opzione è supportata per Azure SQL Database e Istanza gestita di SQL di Azure.

Supporto dell'entità servizio (applicazioni Azure AD)

Questo articolo si applica alle applicazioni integrate con Azure AD e fanno parte della registrazione di Azure AD. Queste applicazioni richiedono spesso l'autenticazione e l'accesso all'autorizzazione per Azure SQL per eseguire varie attività. Questa funzionalità consente alle entità servizio di creare utenti di Azure AD in database SQL. Si è verificato un limite che impedisce la creazione di oggetti di Azure AD per conto delle applicazioni Azure AD rimosse.

Quando un'applicazione Azure AD viene registrata usando il portale di Azure o un comando di PowerShell, vengono creati due oggetti nel tenant di Azure AD:

  • Un oggetto applicazione
  • Un oggetto entità servizio

Per altre informazioni sulle applicazioni di Azure AD, vedere Oggetti applicazione e entità servizio in Azure Active Directory e Creare un'entità servizio di Azure con Azure PowerShell.

database SQL e Istanza gestita di SQL supportano gli oggetti di Azure AD seguenti:

  • Utenti di Azure AD (gestiti, federati e guest)
  • Gruppi di Azure AD (gestiti e federati)
  • Applicazioni Azure AD

Il comando CREATE USER [Azure_AD_Object] FROM EXTERNAL PROVIDER T-SQL per conto di un'applicazione Azure AD è ora supportato per database SQL.

Funzionalità della creazione di utenti di Azure AD con entità servizio

Il supporto di questa funzionalità è utile nei processi di automazione delle applicazioni di Azure AD in cui gli oggetti di Azure AD vengono creati e gestiti in database SQL senza interazione umana. Le entità servizio possono essere un amministratore di Azure AD per il server logico SQL, come parte di un gruppo o di un singolo utente. L'applicazione può automatizzare la creazione di oggetti di Azure AD in database SQL quando viene eseguita come amministratore di sistema e non richiede privilegi SQL aggiuntivi. Ciò consente un'automazione completa della creazione di un utente del database. Questa funzionalità supporta anche l'identità gestita assegnata dal sistema di Azure AD e l'identità gestita assegnata dall'utente che possono essere create come utenti in database SQL per conto delle entità servizio. Per altre informazioni, vedere Che cosa sono le identità gestite per le risorse di Azure?

Abilitare le entità servizio per creare utenti di Azure AD

Per abilitare la creazione di un oggetto di Azure AD in database SQL per conto di un'applicazione Azure AD, sono necessarie le impostazioni seguenti:

  1. Assegnare l'identità del server. L'identità del server assegnata rappresenta l'identità del servizio gestito. L'identità del server può essere assegnata dal sistema o dall'identità gestita assegnata dall'utente. Per altre informazioni, vedere Identità gestita assegnata dall'utente in Azure AD per Azure SQL.

    • Per un nuovo server logico Azure SQL, eseguire il comando di PowerShell seguente:
    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 i server logici Azure SQL esistenti, eseguire il comando seguente:
    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à del server è assegnata al server, eseguire il comando Get-AzSqlServer.

    Nota

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

  2. Concedere l'autorizzazione Lettori di Directory di Azure AD all'identità del server creata o assegnata al server.

    • Per concedere questa autorizzazione, seguire la descrizione usata per Istanza gestita di SQL disponibile nell'articolo seguente: Effettuare il provisioning dell'amministratore di Azure AD (Istanza gestita di SQL)
    • L'utente di Azure AD che concede questa autorizzazione deve far parte del ruolo Amministratore globale di Azure AD o Amministratore ruoli con privilegi .
    • Per i pool SQL dedicati in un'area di lavoro Azure Synapse, usare l'identità gestita dell'area di lavoro anziché l'identità del server Azure SQL.

Importante

Con il supporto di Microsoft Graph per Azure SQL, il ruolo Lettori directory può essere sostituito con usando autorizzazioni di livello inferiore. Per altre informazioni, vedere Identità gestita assegnata dall'utente in Azure AD per Azure SQL

I passaggi 1 e 2 devono essere eseguiti nell'ordine precedente. Per prima cosa, creare o assegnare l'identità del server, seguita dalla concessione dell'autorizzazione Con autorizzazioni di lettura directory o autorizzazioni di livello inferiore descritte in Identità gestita assegnata dall'utente in Azure AD per Azure SQL. L'omissione di uno di questi passaggi o di entrambi causerà un errore di esecuzione durante la creazione di un oggetto Azure AD in Azure SQL per conto di un'applicazione Azure AD.

È possibile assegnare il ruolo Lettori directory a un gruppo in Azure AD. I proprietari del gruppo possono quindi aggiungere l'identità gestita come membro di questo gruppo, ignorando la necessità di un amministratore globale o un amministratore dei ruoli con privilegi per concedere il ruolo Con autorizzazioni di lettura della directory . Per altre informazioni su questa funzionalità, vedere Ruolo con autorizzazioni di lettura nella directory in Azure Active Directory per Azure SQL.

Risoluzione dei problemi e limitazioni

  • Quando si creano oggetti Azure AD in Azure SQL per conto di un'applicazione Azure AD senza abilitare l'identità del server e concedere autorizzazioni di lettura della directory o autorizzazioni di livello inferiore descritte in Identità gestita assegnata dall'utente in Azure AD per Azure SQL, l'operazione avrà esito negativo con gli errori seguenti. L'errore di esempio seguente riguarda l'esecuzione di un comando di PowerShell per creare un utente myapp database SQL nell'articolo Esercitazione: Creare utenti di Azure AD usando le applicazioni Azure AD.
    • Exception calling "ExecuteNonQuery" with "0" argument(s): "'myapp' is not a valid login or you do not have permission. Cannot find the user 'myapp', because it does not exist, or you do not have permission."
    • Exception calling "ExecuteNonQuery" with "0" argument(s): "Principal 'myapp' 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)'"
    • L'impostazione dell'entità servizio (applicazione Azure AD) come amministratore di Azure AD per database SQL è supportata usando i comandi portale di Azure, PowerShell, API REST e interfaccia della riga di comando.
  • L'uso di un'applicazione Azure AD con un'entità servizio da un altro tenant di Azure AD avrà esito negativo quando si accede a database SQL o Istanza gestita di SQL creati in un tenant diverso. Un'entità servizio assegnata a questa applicazione deve appartenere allo stesso tenant del server logico SQL o Istanza gestita.
  • Un modulo Az.Sql 2.9.0 o versioni successive se si usa PowerShell per configurare una singola applicazione di Azure AD come amministratore Azure AD per Azure SQL. Assicurarsi di aver effettuato l'aggiornamento al modulo più recente.

Passaggi successivi