Condividi tramite


Esercitazione: Impostare l’autenticazione Microsoft Entra per SQL Server

Si applica a: SQL Server 2022 (16.x)

Questo articolo descrive un processo dettagliato per configurare l'autenticazione con Microsoft Entra ID e mostra come usare diversi metodi di autenticazione di Microsoft Entra.

Nota

Microsoft Entra ID era precedentemente conosciuto come Azure Active Directory (Azure AD).

In questa esercitazione apprenderai a:

  • Creare e registrare un'applicazione Microsoft Entra
  • Concedere autorizzazioni all'applicazione Microsoft Entra
  • Creare e assegnare un certificato
  • Configurare l'autenticazione di Microsoft Entra per SQL Server tramite il portale di Azure
  • Creare account di accesso e utenti
  • Connettersi con un metodo di autenticazione supportato

Prerequisiti

Prerequisiti per l'autenticazione

Nota

La funzionalità estesa è stata implementata in Azure per consentire la creazione automatica del certificato di Azure Key Vault e dell'applicazione Microsoft Entra durante la configurazione di un amministratore di Microsoft Entra per SQL Server. Per ulteriori informazioni, vedi Esercitazione: Usare l'automazione per configurare l'amministratore di Microsoft Entra per SQL Server.

  • Registrazione dell'applicazione di Microsoft Entra per SQL Server. La registrazione di un'istanza di SQL Server come applicazione Microsoft Entra consente all'istanza di eseguire query sul Microsoft Entra ID e consente all'applicazione Microsoft Entra di eseguire l'autenticazione per conto dell'istanza di SQL Server. La registrazione dell'applicazione richiede anche alcune autorizzazioni, usate da SQL Server per determinate query.

  • SQL Server usa un certificato per questa autenticazione, archiviato in Azure Key Vault (AKV). L'agente Azure Arc scarica il certificato nell'host dell'istanza di SQL Server.

Avviso

Le connessioni autenticate da Microsoft Entra ID vengono sempre crittografate. Se SQL Server usa un certificato autofirmato, è necessario aggiungere trust server cert = true nella stringa di connessione. Le connessioni autenticate di SQL Server e Windows non richiedono la crittografia, anche se è consigliabile.

Creare e registrare un'applicazione Microsoft Entra

  • Andare al portale di Azure, selezionare Microsoft Entra ID>Registrazioni app>Nuova registrazione.
    1. Specificare un nome: l'esempio in questo articolo usa SQLServerCTP1.
    2. Selezionare Tipi di account supportati e usare Account solo in questo elenco dell'organizzazione
    3. Non impostare un URI di reindirizzamento
    4. Selezionare Registra

Vedere la registrazione dell'applicazione di seguito:

Screenshot di registrazione dell'applicazione nel portale di Azure.

Concedere le autorizzazioni per le applicazioni

Selezionare l'applicazione appena creata e, nel menu a sinistra, selezionare Autorizzazioni API.

  1. Selezionare Aggiungi un'autorizzazione>Microsoft Graph>Autorizzazioni dell'applicazione

    1. Spuntare Directory.Read.All
    2. Selezionare Aggiungi autorizzazioni
  2. Selezionare Aggiungi un'autorizzazione> Microsoft Graph>Autorizzazioni delegate

    1. Spuntare Application.Read.All
    2. Spuntare Directory.AccessAsUser.All
    3. Spuntare Group.Read.All
    4. Spuntare User.Read.All
    5. Selezionare Aggiungi autorizzazioni
  3. Selezionare Concedi consenso amministratore

Screenshot delle autorizzazioni delle applicazioni nel portale di Azure.

Nota

Per concedere il consenso amministratore per le autorizzazioni precedenti, l'account di Microsoft Entra richiede un ruolo di amministratore globale o un amministratore ruolo con privilegi.

Creare e assegnare un certificato

  1. Andare al portale di Azure, selezionare Insiemi di credenziali delle chiavi e selezionare l'insieme di credenziali delle chiavi che si vuole usare, oppure crearne uno nuovo. Selezionare Certificati>Genera/Importa

    1. Per il Metodo di creazione del certificato, usare Genera.

    2. Aggiungere un nome e un oggetto del certificato.

    3. Il periodo di validità consigliato è al massimo 12 mesi. È possibile lasciare gli altri valori come da impostazione predefinita.

    4. Seleziona Crea.

    Screenshot di creazione del certificato nel portale di Azure.

    Nota

    Dopo averlo creato, il certificato potrebbe essere disabilitato. Aggiornando il sito, il certificato verrà visualizzato come abilitato.

  2. Passare al nuovo certificato e selezionare la riga per visualizzare l'ultima versione del certificato. Selezionare Download in formato CER per salvare la chiave pubblica del certificato.

    Screenshot del certificato nel portale di Azure in cui è possibile visualizzare e scaricare il certificato.

    Nota

    Questa operazione non deve essere eseguita nell'host di SQL Server, ma da uno qualsiasi dei client che accederanno al portale di Azure per il passaggio successivo.

  3. Nel portale di Azure, passare alla registrazione dell'app creata in precedenza e selezionare l'elenco Certificati

    1. Selezionare Carica certificato.
    2. Selezionare la chiave pubblica (file CER) scaricata nell'ultimo passaggio.
    3. Selezionare Aggiungi.

    Screenshot del menu Certificato e segreti nel portale Azure.

  4. Nel portale di Azure, passare all'istanza di Azure Key Vault in cui è archiviato il certificato e selezionare Criteri di accesso dal menu di spostamento.

    1. Seleziona Crea.

    2. Per Autorizzazioni segrete, seleziona Get e List.

    3. Per Autorizzazioni certificato seleziona Get e List.

    4. Selezionare Avanti.

    5. Nella pagina Entità cerca il nome dell'istanza di Machine - Azure Arc, ovvero il nome host dell'host di SQL Server.

      Screenshot della risorsa del server Azure Arc nel portale.

    6. Ignora la pagina Applicazione (facoltativa) selezionando Avanti due volte oppure selezionando Rivedi e crea.

      Verifica che l'"ID oggetto" dell’Entità corrisponda all'ID entità dell'identità gestita assegnata all'istanza.

      Screenshot del portale di Azure per esaminare e creare criteri di accesso.

      Per confermare, vai alla pagina della risorsa e seleziona Visualizzazione JSON in alto a destra nella casella Essentials nella pagina Panoramica. In Identità sarà disponibile il principalId

      Screenshot di controllo del portale per la visualizzazione JSON della definizione del computer.

    7. Seleziona Crea.

    Devi selezionare Crea per assicurarti che vengano applicate le autorizzazioni. Per assicurarti che le autorizzazioni siano state archiviate, aggiorna la finestra del browser e verifica che la riga per l'istanza di Azure Arc sia ancora presente.

    Screenshot di aggiunta dei criteri di accesso a un insieme di credenziali delle chiavi nel portale di Azure.

Configurare l'autenticazione di Microsoft Entra per SQL Server tramite il portale di Azure

Nota

È disponibile l'uso di interfaccia della riga di comando di Azure, PowerShell o modello di ARM per configurare un amministratore di Microsoft Entra per SQL Server.

  1. Accedere al portale di Azure e selezionare SQL Server – Azure Arc e poi l'istanza per l'host di SQL Server.

  2. Controlla lo stato della risorsa SQL Server - Azure Arc e verifica se è connessa dal menu Proprietà. Per ulteriori informazioni, vedere Convalidare le risorse di SQL Server - Azure Arc.

  3. Selezionare Microsoft Entra ID e Purview in Impostazioni nel menu della risorsa.

  4. Selezionare Imposta amministratore per aprire il riquadro Microsoft Entra ID e scegliere un account da impostare come account di accesso amministratore per SQL Server.

  5. Selezionare Certificato gestito dal cliente e Seleziona un certificato.

  6. Selezionare Cambia certificato e scegliere l'istanza di Azure Key Vault e il certificato creati in precedenza nel nuovo riquadro.

  7. Selezionare Registrazione app gestita dal cliente.

  8. Selezionare Modifica registrazione app e scegliere la registrazione dell'app creata in precedenza.

  9. Seleziona Salva. In questo modo viene inviata una richiesta all'agente server Arc, che configura l'autenticazione di Microsoft Entra per l'istanza di SQL Server.

    Screenshot di configurazione dell'autenticazione di Microsoft Entra nel portale di Azure.

    Sono necessari alcuni minuti per scaricare i certificati e configurare le impostazioni. Dopo aver impostato tutti i parametri e aver selezionato Salva nel portale di Azure, potrebbe apparire il messaggio seguente: SQL Server's Azure Arc agent is currently processing a request. Values below may be incorrect. Please wait until the agent is done before continuing. Attendere fino a quando il processo di salvataggio non viene confermato con Saved successfully prima di tentare un accesso a Microsoft Entra.

    L'agente server di Azure Arc può essere aggiornato solo dopo il completamento dell'azione precedente. Ciò significa che il salvataggio di una nuova configurazione di Microsoft Entra prima che l'ultimo abbia finalizzato può causare un errore. Se viene visualizzato il messaggio Chiamata estesa non riuscita quando si seleziona Salva, attendere 5 minuti e riprovare.

    Nota

    Quando all'account di accesso amministratore di Microsoft Entra viene concesso il ruolo sysadmin, la modifica dell'amministratore di Microsoft Entra nel portale di Azure non rimuove l'account di accesso precedente, che rimane come sysadmin. Per rimuovere l'account di accesso, è necessario eliminarlo manualmente.

    La modifica dell'amministratore di Microsoft Entra per l'istanza di SQL Server viene eseguita senza un riavvio del server, una volta completato il processo con l'agente Azure Arc di SQL Server. Affinché il nuovo amministratore venga visualizzato in sys.server_principals, è necessario riavviare l'istanza di SQL Server, altrimenti verrà visualizzato sempre il vecchio amministratore. L'amministratore corrente di Microsoft Entra può sincronizzato nel portale di Azure.

Creare account di accesso e utenti

Dopo che l'agente di Azure Arc nell'host di SQL Server ha completato l'operazione, l'account amministratore selezionato nel menu Microsoft Entra ID nel portale sarà un sysadmin nell'istanza di SQL Server. Accedere a SQL Server con l'account amministratore di Microsoft Entra che dispone delle autorizzazioni sysadmin per il server usando un client come SSMS o Azure Data Studio.

Nota

Tutte le connessioni a SQL Server eseguite con l'autenticazione di Microsoft Entra richiedono una connessione crittografata. Se l'Amministratore di database (DBA) non ha configurato un certificato SSL/TLS attendibile per il server, è probabile che gli account di accesso avranno esito negativo con il messaggio La catena di certificati è stata emessa da un'autorità non attendibile. Per risolvere questo problema, configurare l'istanza di SQL Server per l'uso di un certificato SSL/TLS considerato attendibile dal client o selezionare certificato del server attendibile nelle proprietà di connessione avanzate. Per ulteriori informazioni, vedere Abilitare connessioni crittografate al motore di database.

Creare la sintassi di accesso

La stessa sintassi per la creazione di account di accesso e utenti di Microsoft Entra in database SQL di Azure e Istanza gestita di SQL di Azure ora può essere usata in SQL Server.

Nota

In SQL Server, tutti gli account che hanno l'autorizzazione ALTER ANY LOGIN o ALTER ANY USER possono creare rispettivamente account di accesso o utenti di Microsoft Entra. L'account non deve essere un account di accesso di Microsoft Entra.

Per creare un accesso per un account Microsoft Entra, eseguire il comando T-SQL seguente nel database master:

CREATE LOGIN [principal_name] FROM EXTERNAL PROVIDER;

Per gli utenti, il nome dell'entità di sicurezza deve essere nel formato user@tenant.com. In Microsoft Entra ID, si tratta del User Principal Name. Per tutti gli altri tipi di account, ad esempio i gruppi o le applicazioni di Microsoft Entra, il nome dell'entità di sicurezza è il nome dell'oggetto di Microsoft Entra.

Ecco alcuni esempi:

-- login creation for Microsoft Entra user
CREATE LOGIN [user@contoso.com] FROM EXTERNAL PROVIDER;
GO
-- login creation for Microsoft Entra group
CREATE LOGIN [my_group_name] FROM EXTERNAL PROVIDER;
GO
-- login creation for Microsoft Entra application
CREATE LOGIN [my_app_name] FROM EXTERNAL PROVIDER;
GO

Per elencare gli account di accesso di Microsoft Entra nel database master, eseguire il comando T-SQL:

SELECT * FROM sys.server_principals
WHERE type IN ('E', 'X');

Per concedere a un utente Microsoft Entra l'adesione al ruolo sysadmin (ad esempio, admin@contoso.com), eseguire i comandi seguenti in master:

CREATE LOGIN [admin@contoso.com] FROM EXTERNAL PROVIDER; 
GO
ALTER SERVER ROLE sysadmin ADD MEMBER [admin@contoso.com];
GO

La stored procedure sp_addsrvrolemember deve essere eseguita come membro del ruolo del server sysadmin di SQL Server.

Creare la sintassi utente

È possibile creare un utente di database da Microsoft Entra ID come utente di database associato a un'entità del server (account di accesso) o come utente del database indipendente.

Per creare un utente di Microsoft Entra da un account di accesso di Microsoft Entra in un database di SQL Server, usare la sintassi seguente:

CREATE USER [principal_name] FROM LOGIN [principal_name];

La sintassi principal_name è identica a quella per gli account di accesso.

Di seguito sono riportati alcuni esempi.

-- for Azure AD user
CREATE USER [user@contoso.com] FROM LOGIN [user@contoso.com];
GO
-- for Azure AD group
CREATE USER [my_group_name] FROM LOGIN [my_group_name];
GO
-- for Azure AD application
CREATE USER [my_app_name] FROM LOGIN [my_app_name];
GO

Per creare un utente di database indipendente di Microsoft Entra, ovvero un utente non associato a un account di accesso al server, è possibile eseguire la sintassi seguente:

CREATE USER [principal name] FROM EXTERNAL PROVIDER;

Usare il nome gruppo di Microsoft Entra o il nome dell'applicazione di Microsoft Entra come <principal name> quando si crea un utente del database di Microsoft Entra da un gruppo o un'applicazione.

Di seguito sono riportati alcuni esempi.

-- for Azure AD contained user
CREATE USER [user@contoso.com] FROM EXTERNAL PROVIDER;
GO
-- for Azure AD contained group
CREATE USER [my_group_name] FROM EXTERNAL PROVIDER;
GO
--for Azure AD contained application
CREATE USER [my_group_name] FROM EXTERNAL PROVIDER;
GO

Per elencare gli utenti creati nel database, eseguire il comando T-SQL seguente:

SELECT * FROM sys.database_principals;

Un nuovo utente del database ha l'autorizzazione Connessione per impostazione predefinita. Tutte le altre autorizzazioni di SQL Server devono essere concesse in modo esplicito dai responsabili autorizzati.

Account Guest di Microsoft Entra

La sintassi CREATE LOGIN e CREATE USER supporta anche gli utenti guest. Ad esempio, se testuser@outlook.com viene invitato al tenant contoso.com, può essere aggiunto come account di accesso a SQL Server con la stessa sintassi della creazione di qualsiasi altro utente o account di accesso di Microsoft Entra. Quando si creano utenti guest e account di accesso, usare il messaggio e-mail di origine dell'account guest, non il nome dell'entità utente nel tenant. Negli esempi, outlook.com viene fornito anche se l'account è registrato nel tenant contoso.com.

Creare un utente guest da un account di accesso esistente

CREATE USER [testuser@outlook.com] FROM LOGIN [testuser@outlook.com];

Creare un utente guest come utente indipendente

CREATE USER [testuser@outlook.com] FROM EXTERNAL PROVIDER;

Connettersi con un metodo di autenticazione supportato

SQL Server supporta diversi metodi di autenticazione di Microsoft Entra:

  • Predefiniti
  • Nome utente e password
  • Integrato
  • Universale con autenticazione a più fattori
  • Entità servizio
  • Identità gestita
  • Token di accesso

Usare uno di questi metodi per connettersi all'istanza di SQL Server. Per ulteriori informazioni, vedere EAutenticazione di Microsoft Entra per SQL Server.

Esempio di autenticazione con SSMS

Nota

Anche se Microsoft Entra ID è il nuovo nome per Azure Active Directory (Azure AD), per evitare l'interruzione degli ambienti esistenti, la denominazione Azure AD è tuttora mantenuta in alcuni elementi hardcoded, ad esempio campi dell'interfaccia utente, provider di connessioni, codici errore e cmdlet. All’interno di questo articolo i due nomi vengono utilizzati in modo intercambiabile.

Di seguito è riportato lo snapshot della pagina di connessione di SQL Server Management Studio (SSMS) usando il metodo di autenticazione Azure Active Directory - Universale con MFA.

Screenshot di SSMS che mostra la finestra Connetti al server.

Durante il processo di autenticazione, un database in cui è stato creato l'utente deve essere indicato in modo esplicito in SSMS. Espandere Opzioni > Proprietà di connessione > Connetti al database: database_name.

Per ulteriori informazioni, vedere Utilizzare l'autenticazione a più fattori di Microsoft Entra.

Gli strumenti di SQL Server che supportano l'autenticazione di Microsoft Entra per Azure SQL sono supportati anche per SQL Server 2022 (16.x).

Posizione in cui vengono archiviati i parametri di Microsoft Entra ID

Avviso

I parametri di Microsoft Entra ID sono configurati dall'agente di Azure Arc e non devono essere riconfigurati manualmente.

In Linux, i parametri di Microsoft Entra ID vengono archiviati in mssql-conf. Per ulteriori informazioni sulla configurazione delle opzioni in Linux, vedere Configurare SQL Server in Linux con lo strumento mssql-conf.

Problemi noti

  • L'aggiornamento del certificato non viene propagato:
    • Dopo aver configurato l'autenticazione di Microsoft Entra per SQL Server, l'aggiornamento del certificato in SQL Server - Azure Arc nel riquadro della risorsa Microsoft Entra ID e Purview potrebbero non propagarsi completamente. In questo modo, il salvataggio viene eseguito correttamente, ma il valore precedente viene ancora visualizzato. Per aggiornare il certificato, seguire questa procedura:

      • Selezionare Rimuovi amministratore.
      • Seleziona Salva.
      • Selezionare Imposta amministratore e riconfigurare l'autenticazione di Microsoft Entra con il nuovo certificato.
      • Seleziona Salva.

Vedi anche