Esercitazione: Proteggere con gli account di accesso di Microsoft Entra - Istanza gestita di SQL di Azure

Si applica a:Azure SQL Managed Instance

Questo articolo illustra come usare le entità server (account di accesso) supportate da Microsoft Entra ID (in precedenza Azure Active Directory) per proteggere un Istanza gestita di SQL di Azure.

In questa esercitazione apprenderai a:

  • Creare un account di accesso di Microsoft Entra per un'istanza gestita
  • Concedere autorizzazioni agli account di accesso in un'istanza gestita
  • Creare utenti di Microsoft Entra da account di accesso
  • Assegnare autorizzazioni agli utenti e gestire la sicurezza del database
  • Usare la rappresentazione con gli utenti
  • Usare query tra database con gli utenti
  • Informazioni sulle funzionalità di sicurezza come la protezione da minacce, il controllo, il data masking e la crittografia

Nota

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

Prerequisiti

Per completare questa esercitazione, verificare di avere i prerequisiti seguenti:

Limitare l'accesso

Le istanze gestite sono accessibili tramite un indirizzo IP privato. Analogamente a quanto avviene con un ambiente SQL Server isolato, le applicazioni o gli utenti devono accedere alla rete dell'istanza gestita di SQL (rete virtuale) prima di poter stabilire una connessione. Per altre informazioni, vedere Connettere l'applicazione a Istanza gestita di SQL di Azure.

È anche possibile configurare nell'istanza gestita un endpoint servizio che consente le connessioni pubbliche, in modo analogo al database SQL di Azure. Per altre informazioni, vedere Configurare l'endpoint pubblico nell'istanza gestita di SQL di Azure.

Creare un account di accesso di Microsoft Entra con SSMS

Il primo account di accesso di Microsoft Entra può essere creato dall'amministratore sql o dall'amministratore di Microsoft Entra creato durante il provisioning. Per altre informazioni, vedere Effettuare il provisioning di un amministratore di Microsoft Entra per Istanza gestita di SQL.

Per esempi relativi alla connessione all'istanza gestita di SQL, vedere gli articoli seguenti:

  1. Connessione all'istanza gestita con uno dei due sysadmin Account di accesso SQL o amministratore di Microsoft Entra usando SQL Server Management Studio (SSMS).

  2. In Esplora oggetti fare clic con il pulsante destro del mouse sul server e scegliere Nuova query.

  3. Nella finestra di query usare la sintassi seguente per creare un account di accesso per un account Microsoft Entra locale:

    USE master
    GO
    CREATE LOGIN login_name FROM EXTERNAL PROVIDER
    GO
    

    Questo esempio mostra come creare un account di accesso per l'account nativeuser@aadsqlmi.onmicrosoft.com.

    USE master
    GO
    CREATE LOGIN [nativeuser@aadsqlmi.onmicrosoft.com] FROM EXTERNAL PROVIDER
    GO
    
  4. Sulla barra degli strumenti selezionare Esegui per creare l'account di accesso.

  5. Verificare l'account di accesso appena aggiunto eseguendo il comando T-SQL seguente:

    SELECT *  
    FROM sys.server_principals;  
    GO
    

    Screenshot of the Results tab in the S S M S Object Explorer showing the name, principal_id, sid, type, and type_desc of the newly added login.

Per altre informazioni, vedere CREATE LOGIN.

Concedere le autorizzazioni per la creazione degli account di accesso

Gli account di accesso esistenti devono avere autorizzazioni appropriate o far parte dei ruoli del server appropriati per creare altri account di accesso di Microsoft Entra.

Account di accesso con autenticazione SQL

  • Se l'account di accesso è un'entità server basata sull'autenticazione SQL, deve essere assegnato il sysadmin ruolo per creare account di accesso per gli account Microsoft Entra.

Account di accesso per l'autenticazione di Microsoft Entra

  • Se l'account di accesso è un'entità server Microsoft Entra, deve essere assegnato il sysadmin ruolo server o securityadmin per creare account di accesso per altri utenti, gruppi e applicazioni Di Microsoft Entra.
  • È necessario concedere almeno l'autorizzazione ALTER ANY LOGIN per creare altri account di accesso di Microsoft Entra.
  • Per impostazione predefinita, le autorizzazioni standard concesse agli account di accesso Microsoft Entra appena creati in master sono: CONNECT SQL e VIEW ANY DATABA edizione Standard.
  • Il sysadmin ruolo del server può essere concesso a molti account di accesso di Microsoft Entra all'interno di un'istanza gestita.

Per aggiungere l'account di accesso al ruolo del server sysadmin:

  1. Accedere di nuovo all'istanza gestita oppure usare la connessione esistente con l'amministratore di Microsoft Entra o l'entità SQL che è un oggetto sysadmin.

  2. In Esplora oggetti fare clic con il pulsante destro del mouse sul server e scegliere Nuova query.

  3. Concedere all'account di accesso Microsoft Entra il ruolo del sysadmin server usando la sintassi T-SQL seguente:

    ALTER SERVER ROLE sysadmin ADD MEMBER login_name
    GO
    

    L'esempio seguente mostra come concedere il ruolo del server sysadmin all'account di accesso nativeuser@aadsqlmi.onmicrosoft.com

    ALTER SERVER ROLE sysadmin ADD MEMBER [nativeuser@aadsqlmi.onmicrosoft.com]
    GO
    

Creare account di accesso Aggiuntivi di Microsoft Entra con SSMS

Dopo aver creato e concesso sysadmin privilegi all'account di accesso di Microsoft Entra, tale account di accesso può creare account di accesso aggiuntivi usando la clausola FROM EXTERNAL PROVIDER con CREATE LOGIN.

  1. Connessione all'istanza gestita con l'account di accesso di Microsoft Entra selezionando Connessione a Server in SQL Server Management Studio (SSMS).

    1. Immettere il nome host Istanza gestita di SQL in Nome server.
    2. Per Autenticazione selezionare Active Directory - Universale con supporto MFA per visualizzare una finestra di accesso con autenticazione a più fattori. Accedi. Per altre informazioni, vedere Autenticazione universale (supporto di SSMS per l'autenticazione a più fattori).
  2. In Esplora oggetti fare clic con il pulsante destro del mouse sul server e scegliere Nuova query.

  3. Nella finestra di query usare la sintassi seguente per creare un account di accesso per un altro account Microsoft Entra:

    USE master
    GO
    CREATE LOGIN login_name FROM EXTERNAL PROVIDER
    GO
    

    In questo esempio viene creato un account di accesso per l'utente bob@aadsqlmi.netMicrosoft Entra , il cui dominio aadsqlmi.net è federato con il dominio microsoft Entra aadsqlmi.onmicrosoft.com.

    Eseguire il comando T-SQL seguente. Gli account Microsoft Entra federati sono le sostituzioni Istanza gestita di SQL per gli account di accesso e gli utenti di Windows locali.

    USE master
    GO
    CREATE LOGIN [bob@aadsqlmi.net] FROM EXTERNAL PROVIDER
    GO
    
  4. Creare un database nell'istanza gestita usando la sintassi CREATE DATABASE. Questo database verrà usato per testare gli account di accesso nella sezione successiva.

    1. In Esplora oggetti fare clic con il pulsante destro del mouse sul server e scegliere Nuova query.

    2. Nella finestra di query usare la sintassi seguente per creare un database denominato MyMITestDB.

      CREATE DATABASE MyMITestDB;
      GO
      
  5. Creare un account di accesso Istanza gestita di SQL per un gruppo in Microsoft Entra ID. Il gruppo deve esistere in Microsoft Entra ID prima di aggiungere l'account di accesso a Istanza gestita di SQL. Vedere Creare un gruppo di base e aggiungere membri usando Microsoft Entra ID. Creare un gruppo mygroup e aggiungere membri a tale gruppo.

  6. Aprire una nuova finestra di query in SQL Server Management Studio.

    In questo esempio si presuppone che esista un gruppo denominato mygroup in Microsoft Entra ID. Eseguire il comando seguente:

    USE master
    GO
    CREATE LOGIN [mygroup] FROM EXTERNAL PROVIDER
    GO
    
  7. A scopo di test, accedere all'istanza gestita con l'account di accesso o il gruppo appena creato. Aprire una nuova connessione all'istanza gestita e usare il nuovo account di accesso per l'autenticazione.

  8. In Esplora oggetti fare clic con il pulsante destro del mouse sul server e scegliere Nuova query per la nuova connessione.

  9. Controllare le autorizzazioni del server per l'account di accesso microsoft Entra appena creato eseguendo il comando seguente:

    SELECT * FROM sys.fn_my_permissions (NULL, 'DATABASE')
    GO
    

Il supporto di Azure SQL delle entità di sicurezza di Microsoft Entra come utenti e account di accesso si estende a Microsoft Entra per ID esterno utenti guest interni ed esterni. Gli utenti guest, sia singolarmente che come parte di un gruppo, possono essere usati come qualsiasi altro utente di Microsoft Entra in Azure SQL. Se si vuole che gli utenti guest possano creare altri account di accesso o di database del server Microsoft Entra, devono disporre delle autorizzazioni per leggere altre identità nella directory Microsoft Entra. Questa autorizzazione è configurata a livello di directory. Per altre informazioni, vedere Autorizzazioni di accesso guest in Microsoft Entra ID.

Creare un utente di Microsoft Entra dall'account di accesso di Microsoft Entra

L'autorizzazione ai singoli database funziona allo stesso modo in Istanza gestita di SQL dei database in SQL Server. È possibile creare un utente da un account di accesso esistente in un database a cui vengono concesse le autorizzazioni o aggiunte a un ruolo del database.

A questo punto, dopo aver creato un database denominato MyMITestDB e un account di accesso che dispone solo delle autorizzazioni predefinite, il passaggio successivo consiste nel creare un utente da tale account di accesso. Al momento, l'account di accesso può connettersi all'istanza gestita e visualizzare tutti i database, ma non può interagire con essi. Se si accede con l'account Microsoft Entra con le autorizzazioni predefinite e si tenta di espandere il database appena creato, verrà visualizzato l'errore seguente:

Screenshot of an error message from the the S S M S Object Explorer that reads

Per altre informazioni sulla concessione delle autorizzazioni per i database, vedere Introduzione alle autorizzazioni del motore di database.

Creare un utente di Microsoft Entra e creare una tabella di esempio

Nota

Esistono alcune limitazioni quando un utente accede come parte di un gruppo Microsoft Entra. Ad esempio, una chiamata a SUSER_SID restituisce NULL, poiché l'utente Microsoft Entra specificato non fa parte della sys.server_principals tabella. Pertanto, l'accesso a determinate stored procedure o a un elenco di autorizzazioni concesse può essere limitato in questo caso.

  1. Accedere all'istanza gestita con un account sysadmin usando SQL Server Management Studio.

  2. In Esplora oggetti fare clic con il pulsante destro del mouse sul server e scegliere Nuova query.

  3. Nella finestra di query usare la sintassi seguente per creare un utente da un account di accesso di Microsoft Entra:

    USE <Database Name> -- provide your database name
    GO
    CREATE USER user_name FROM LOGIN login_name
    GO
    

    L'esempio seguente crea un utente bob@aadsqlmi.net dall'account di accesso bob@aadsqlmi.net:

    USE MyMITestDB
    GO
    CREATE USER [bob@aadsqlmi.net] FROM LOGIN [bob@aadsqlmi.net]
    GO
    
  4. È supportato anche per creare un utente di Microsoft Entra da un account di accesso di Microsoft Entra che è un gruppo.

    Nell'esempio seguente viene creato un account di accesso per il gruppo mygroup Microsoft Entra esistente nel tenant di Microsoft Entra.

    USE MyMITestDB
    GO
    CREATE USER [mygroup] FROM LOGIN [mygroup]
    GO
    

    Tutti gli utenti che appartengono a mygroup possono accedere al database MyMITestDB.

    Importante

    Quando si crea un U edizione Standard R da un account di accesso di Microsoft Entra, specificare il user_name come lo stesso login_name da LOGIN.

    Per altre informazioni, vedere CREATE USER.

  5. In una nuova finestra di query creare una tabella di test usando il comando T-SQL seguente:

    USE MyMITestDB
    GO
    CREATE TABLE TestTable
    (
    AccountNum varchar(10),
    City varchar(255),
    Name varchar(255),
    State varchar(2)
    );
    
  6. Creare una connessione in SQL Server Management Studio con l'utente che è stato creato. Si noterà che non è possibile visualizzare la tabella TestTable che è stato creato da sysadmin in precedenza. È necessario fornire all'utente le autorizzazioni per leggere i dati dal database.

  7. È possibile verificare l'autorizzazione corrente disponibile per l'utente eseguendo il comando seguente:

    SELECT * FROM sys.fn_my_permissions('MyMITestDB','DATABASE')
    GO
    

Aggiungere utenti a ruoli a livello di database

Per consentire all'utente di visualizzare i dati nel database, è possibile concedergli i ruoli a livello di database.

  1. Accedere all'istanza gestita con un account sysadmin usando SQL Server Management Studio.

  2. In Esplora oggetti fare clic con il pulsante destro del mouse sul server e scegliere Nuova query.

  3. Concedere all'utente Microsoft Entra il ruolo del db_datareader database usando la sintassi T-SQL seguente:

    Use <Database Name> -- provide your database name
    ALTER ROLE db_datareader ADD MEMBER user_name
    GO
    

    L'esempio seguente mostra come concedere all'utente bob@aadsqlmi.net e al gruppo mygroup le autorizzazioni di db_datareader per il database MyMITestDB:

    USE MyMITestDB
    GO
    ALTER ROLE db_datareader ADD MEMBER [bob@aadsqlmi.net]
    GO
    ALTER ROLE db_datareader ADD MEMBER [mygroup]
    GO
    
  4. Verificare che l'utente di Microsoft Entra creato nel database esista eseguendo il comando seguente:

    SELECT * FROM sys.database_principals
    GO
    
  5. Creare una nuova connessione all'istanza gestita con l'utente che è stato aggiunto al ruolo db_datareader.

  6. Espandere il database in Esplora oggetti per visualizzare la tabella.

    Screenshot from Object Explorer in S S M S showing the folder structure for Tables in MyMITestDB. The dbo.TestTable folder is highlighted.

  7. Aprire una nuova finestra di query ed eseguire l'istruzione SELECT seguente:

    SELECT *
    FROM TestTable
    

    I dati della tabella sono visibili? Dovrebbe essere possibile visualizzare le colonne restituite.

    Screenshot of the Results tab in the S S M S Object Explorer showing the table column headers AccountNum, City, Name, and State.

Rappresentare gli account di accesso di Microsoft Entra

Istanza gestita di SQL supporta la rappresentazione degli account di accesso di Microsoft Entra.

Testare la rappresentazione

  1. Accedere all'istanza gestita con un account sysadmin usando SQL Server Management Studio.

  2. In Esplora oggetti fare clic con il pulsante destro del mouse sul server e scegliere Nuova query.

  3. Nella finestra di query usare il comando seguente per creare una nuova stored procedure:

    USE MyMITestDB
    GO  
    CREATE PROCEDURE dbo.usp_Demo  
    WITH EXECUTE AS 'bob@aadsqlmi.net'  
    AS  
    SELECT user_name();  
    GO
    
  4. Usare il comando seguente per verificare che l'utente rappresentato durante volta l'esecuzione della stored procedure sia bob@aadsqlmi.net.

    Exec dbo.usp_Demo
    
  5. Per testare la rappresentazione, usare l'istruzione EXECUTE AS LOGIN:

    EXECUTE AS LOGIN = 'bob@aadsqlmi.net'
    GO
    SELECT SUSER_SNAME()
    REVERT
    GO
    

Nota

Solo gli account di accesso a livello di SQL Server che fanno parte del sysadmin ruolo possono eseguire le operazioni seguenti destinate alle entità di sicurezza Microsoft Entra:

  • EXECUTE AS USER
  • EXECUTE AS LOGIN

Usare le query tra database

Le query tra database sono supportate per gli account Microsoft Entra con account di Accesso Microsoft Entra. Per testare una query tra database con un gruppo Microsoft Entra, è necessario creare un altro database e un'altra tabella. È possibile non creare un altro database e un'altra tabella se esistono già.

  1. Accedere all'istanza gestita con un account sysadmin usando SQL Server Management Studio.

  2. In Esplora oggetti fare clic con il pulsante destro del mouse sul server e scegliere Nuova query.

  3. Nella finestra di query usare il comando seguente per creare un database denominato MyMITestDB2 e una tabella denominata TestTable2:

    CREATE DATABASE MyMITestDB2;
    GO
    USE MyMITestDB2
    GO
    CREATE TABLE TestTable2
    (
    EmpId varchar(10),
    FirstName varchar(255),
    LastName varchar(255),
    Status varchar(10)
    );
    
  4. In una nuova finestra di query eseguire il comando seguente per creare l'utente mygroup nel nuovo database MyMITestDB2 e concedere le autorizzazioni SELECT per tale database a mygroup:

    USE MyMITestDB2
    GO
    CREATE USER [mygroup] FROM LOGIN [mygroup]
    GO
    GRANT SELECT TO [mygroup]
    GO
    
  5. Accedere all'istanza gestita usando SQL Server Management Studio come membro del gruppo Mygroup Di Microsoft Entra. Aprire una nuova finestra di query ed eseguire l'istruzione SELECT tra database:

    USE MyMITestDB
    SELECT * FROM MyMITestDB2..TestTable2
    GO
    

    Dovrebbero essere visualizzati i risultati della tabella di TestTable2.

Altri scenari supportati

  • Le esecuzioni di processi e gestione di SQL Agent sono supportate per gli account di accesso di Microsoft Entra.
  • Le operazioni di backup e ripristino del database possono essere eseguite dagli account di accesso di Microsoft Entra.
  • Controllo di tutte le istruzioni correlate agli account di accesso e agli eventi di autenticazione di Microsoft Entra.
  • Connessione amministrativa dedicata per gli account di accesso di Microsoft Entra che sono membri del ruolo server sysadmin .
  • Gli account di accesso di Microsoft Entra sono supportati con l'uso dell'utilità sqlcmd e dello strumento SQL Server Management Studio.
  • I trigger di accesso sono supportati per gli eventi di accesso provenienti dagli account di accesso di Microsoft Entra.
  • Service Broker e posta elettronica database possono essere configurati usando gli account di accesso di Microsoft Entra.

Passaggi successivi

Abilitare le funzionalità di sicurezza

Vedere l'articolo sulle funzionalità di sicurezza delle istanze gestite di SQL per un elenco completo di soluzioni per proteggere il database. Sono illustrate le funzionalità di sicurezza seguenti:

Funzionalità delle istanze gestite di SQL

Per una panoramica completa delle funzionalità delle istanze gestite di SQL, vedere: