Condividi tramite


Esercitazione: Proteggere con accessi Microsoft Entra - Istanza gestita di SQL di Azure

Applica a:Istanza gestita di SQL di Azure

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

In questa esercitazione apprenderai a:

  • Creare un account di accesso Microsoft Entra per un'istanza gestita di SQL.
  • Concedere permessi agli account di accesso in un'istanza SQL gestita.
  • Creare utenti di Microsoft Entra dalle credenziali.
  • Assegnare autorizzazioni agli utenti e gestire la sicurezza del database.
  • Usare l'impersonificazione con gli utenti.
  • Usare query tra database da parte degli utenti.
  • Informazioni sulle funzionalità di sicurezza, ad esempio protezione dalle minacce, controllo, maschera dati e 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

È possibile accedere alle istanze gestite di SQL tramite un indirizzo IP privato. Analogamente a un ambiente SQL Server isolato, le applicazioni o gli utenti devono accedere alla rete Istanza gestita di SQL prima di poter stabilire una connessione. Per altre informazioni, vedere Connettere l'applicazione a Istanza gestita di SQL.

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

Creare un account di accesso Microsoft Entra con SSMS

L'amministratore SQL può creare il primo account di accesso Microsoft Entra, oppure utilizzare l'amministratore Microsoft Entra creato durante il provisioning. Per ulteriori informazioni, vedere Provisiona un amministratore Microsoft Entra per Istanza gestita di SQL.

Vedere gli articoli seguenti per esempi di connessione a Istanza gestita di SQL:

  1. Connetti all'istanza SQL gestita con un account di accesso sysadmin o con l'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. Controllare l'account di accesso appena aggiunto eseguendo il comando T-SQL seguente:

    SELECT *
    FROM sys.server_principals;
    GO
    

    Screenshot della scheda risultati dell'Esplora oggetti di SSMS che mostra il nome, principal_id, sid, tipo e type_desc del login appena aggiunto.

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 Microsoft Entra.

Accessi autenticazione SQL

Se il login è un principale del server basato sull'autenticazione SQL, è necessario assegnare il ruolo sysadmin per creare login per gli account Microsoft Entra.

Microsoft Entra logins di autenticazione

  • Se il login è un principale server Microsoft Entra, deve essere assegnato il ruolo server sysadmin o securityadmin per creare login per altri utenti, gruppi e applicazioni Microsoft Entra.
  • È necessario concedere almeno l'autorizzazione ALTER ANY LOGIN per creare altri account di accesso 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 DATABASE.
  • Il ruolo del server sysadmin può essere concesso a diversi accessi Microsoft Entra all'interno di un'istanza gestita di SQL Server.

Per aggiungere le informazioni di accesso al ruolo del server sysadmin:

  1. Accedere di nuovo all'istanza gestita di SQL oppure usare la connessione esistente con l'amministratore Microsoft Entra o l'entità SQL 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 server sysadmin usando la sintassi T-SQL seguente:

    ALTER SERVER ROLE sysadmin ADD MEMBER login_name
    GO
    

    Nell'esempio seguente viene concesso 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 Microsoft Entra con SSMS

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

  1. Connettersi all'istanza gestita di SQL con l'account di accesso Microsoft Entra selezionando Connetti al server in SQL Server Management Studio (SSMS).

    1. Immettere il nome host dell'istanza SQL gestita in nome server.
    2. Per Authentication selezionare Microsoft Entra MFA per visualizzare una finestra di accesso con autenticazione a più fattori. Accedi. Per altre informazioni, vedere Autenticazione universale (supporto di SSMS per 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
    

    Questo esempio crea un account di accesso per l'utente Microsoft Entra bob@aadsqlmi.net, il cui dominio aadsqlmi.net è federated con il dominio Microsoft Entra aadsqlmi.onmicrosoft.com.

    Eseguire il comando T-SQL seguente. Gli account federati di Microsoft Entra sono i rimpiazzi per le istanze gestite di SQL per gli accessi e gli utenti Windows locali.

    USE master
    GO
    CREATE LOGIN [bob@aadsqlmi.net] FROM EXTERNAL PROVIDER
    GO
    
  4. Creare un database nell'istanza gestita di SQL 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 questo 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. Come test, accedere all'istanza gestita di SQL con l'account di accesso o il gruppo appena creato. Aprire una nuova connessione all'istanza gestita di SQL e usare il nuovo account di accesso durante 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 per i principali di Microsoft Entra come utenti e credenziali di accesso si estende agli utenti guest interni ed esterni di Microsoft Entra per ID esterno. Gli utenti guest, sia singolarmente che come parte di un gruppo, possono essere usati come qualsiasi altro utente Microsoft Entra in Azure SQL. Se si vuole che gli utenti guest possano creare altri account di accesso o utenti di database del server di 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 Microsoft Entra dall'account di accesso 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 sono state concesse le autorizzazioni per tale database o aggiunte a un ruolo del database.

Dopo aver creato un database denominato MyMITestDB e un account di accesso con 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 di SQL e visualizzare tutti i database, ma non può interagire con i database. 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 di un messaggio di errore del Esplora oggetti SSMS che legge

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

Creare un utente Microsoft Entra e creare una tabella di esempio

Nota

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

  1. Accedere all'istanza gestita di SQL con un account sysadmin in 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 Microsoft Entra:

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

    L'esempio seguente mostra come creare 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. È anche supportata la creazione di un utente Microsoft Entra a partire da un login Microsoft Entra che è un gruppo.

    L'esempio seguente crea un account di accesso per il gruppo Microsoft Entra mygroup esistente nel tenant 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 USER da un account di accesso Microsoft Entra, specificare il user_name come lo stesso login_name di 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 creata in precedenza da sysadmin . È 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 di SQL 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 database db_datareader 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 fornisce 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 Microsoft Entra creato nel database esista eseguendo il comando seguente:

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

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

    Screenshot di Esplora oggetti in SSMS che mostra la struttura di cartelle per le tabelle in MyMITestDB. La cartella dbo.TestTable è evidenziata.

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

    SELECT *
    FROM TestTable
    

    I dati della tabella sono visibili? Verranno visualizzate le colonne restituite come illustrato nello screenshot seguente:

    Screenshot della scheda Risultati nel Esplora oggetti SSMS che mostra le intestazioni di colonna della tabella AccountNum, City, Name e State.

Assumere l'identità degli account di accesso Microsoft Entra

Istanza gestita di SQL supporta l'impersonazione dei login di Microsoft Entra.

Test di impersonificazione

  1. Accedere all'istanza gestita di SQL 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 impersonato durante l'esecuzione della stored procedure sia bob@aadsqlmi.net.

    Exec dbo.usp_Demo
    
  5. Simulare l'impersonificazione con 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 ruolo sysadmin possono eseguire le operazioni seguenti destinate alle entità di Microsoft Entra:

  • EXECUTE AS USER
  • EXECUTE AS LOGIN

Usare le query inter-database

Le query tra database sono supportate per gli account di Microsoft Entra con accessi Microsoft Entra. Per testare una query tra database con un gruppo di 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 di SQL 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 SELECT le autorizzazioni per tale database a mygroup:

    USE MyMITestDB2
    GO
    CREATE USER [mygroup] FROM LOGIN [mygroup]
    GO
    GRANT SELECT TO [mygroup]
    GO
    
  5. Esegui l'accesso all'istanza gestita di SQL utilizzando SQL Server Management Studio in qualità di membro del gruppo Microsoft Entra mygroup. Aprire una nuova finestra di query ed eseguire l'istruzione trasversale tra database SELECT.

    USE MyMITestDB
    SELECT * FROM MyMITestDB2..TestTable2
    GO
    

    Dovrebbero essere visualizzati i risultati della tabella di TestTable2.

Altri scenari supportati

  • Il supporto per le esecuzioni dei lavori e la gestione di SQL Agent è garantito per gli account di login Microsoft Entra.
  • Gli accessi di Microsoft Entra possono eseguire operazioni di backup e ripristino del database.
  • Auditing di tutte le dichiarazioni relative ai tentativi di accesso e agli eventi di autenticazione di Microsoft Entra.
  • Connessione amministrativa dedicata per gli account di accesso Microsoft Entra membri del ruolo server sysadmin.
  • Gli accessi Microsoft Entra sono supportati utilizzando l'utilità sqlcmd e lo strumento SQL Server Management Studio.
  • I trigger di logon sono supportati per gli eventi di accesso provenienti dai logon di Microsoft Entra.
  • Service Broker e posta elettronica di database possono essere configurati usando le credenziali di accesso Microsoft Entra.