Esercitazione: Sicurezza in Azure SQL istanza gestita usando Azure AD principali del server (account di accesso)

SI APPLICA A: Istanza gestita SQL Azure

L'SQL gestita di Azure offre quasi tutte le funzionalità di sicurezza disponibili nel motore di database SQL Server (edizione Enterprise) più recente:

  • Limitare l'accesso in un ambiente isolato
  • Usare meccanismi di autenticazione che richiedono l'identità: Azure Active Directory (Azure AD) e SQL autenticazione
  • Usare l'autorizzazione con le appartenenze e le autorizzazioni basate sui ruoli
  • Abilitare le funzionalità di sicurezza

In questa esercitazione imparerai a:

  • Creare un'Azure AD server principale (account di accesso) per un'istanza gestita
  • Concedere le autorizzazioni Azure AD entità server (account di accesso) in un'istanza gestita
  • Creare Azure AD utenti da Azure AD server principal (account di accesso)
  • Assegnare autorizzazioni agli Azure AD utenti e gestire la sicurezza del database
  • Usare la rappresentazione con Azure AD utenti
  • Usare query tra database con Azure AD utenti
  • Informazioni sulle caratteristiche di sicurezza, ad esempio la protezione dalle minacce, il controllo, il mascheramento dei dati e la crittografia

Per altre informazioni, vedere panoramica dell'istanza SQL azure.

Prerequisiti

Per completare l'esercitazione, verificare di avere i prerequisiti seguenti:

Limitare l'accesso

È possibile accedere alle istanze gestite tramite un indirizzo IP privato. Analogamente a un ambiente SQL Server, le applicazioni o gli utenti devono accedere alla rete SQL istanza gestita (VNet) prima di poter stabilire una connessione. Per altre informazioni, vedere Connessione'applicazione per SQL'istanza gestita.

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

Nota

Anche con gli endpoint di servizio abilitati, database SQL di Azure regole del firewall non si applicano. L'SQL gestita di Azure ha un firewall incorporato per gestire la connettività.

Creare un'Azure AD server principale (account di accesso) usando SSMS

La prima entità server Azure AD (accesso) può essere creata dall'account di amministratore standard di SQL (non Azure AD) che è un , o dall'amministratore di Azure AD per l'istanza gestita creata durante il processo di sysadmin provisioning. Per altre informazioni, vedere Eseguire il provisioning di un amministratore Azure Active Directory per SQL'istanza gestita.

Per esempi di connessione a un'SQL gestita, vedere gli articoli seguenti:

  1. Accedere all'istanza gestita usando un account di accesso SQL standard (non Azure AD) o un amministratore di Azure AD per un'istanza gestita di SQL, usando sysadminsysadmin.

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

  3. Nella finestra della query usare la sintassi seguente per creare un account di accesso per un account Azure AD locale:

    USE master
    GO
    CREATE LOGIN login_name FROM EXTERNAL PROVIDER
    GO
    

    Questo esempio crea 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 in Esplora oggetti S S M S con il nome, principal_id, sid, tipo e type_desc dell'account di accesso appena aggiunto.

Per altre informazioni, vedere CREATE LOGIN.

Concedere le autorizzazioni per creare account di accesso

Per creare altre entità Azure AD server (account di accesso), SQL Server ruoli o autorizzazioni devono essere concesse all'entità (SQL o Azure AD).

SQL autenticazione

  • Se l'account di accesso è un'entità SQL, solo gli account di accesso che fanno parte del ruolo possono usare il comando create per creare account di accesso per un sysadmin account Azure AD account.

Azure AD autenticazione

  • Per consentire all'entità server Azure AD appena creata (account di accesso) di creare altri account di accesso per altri utenti, gruppi o applicazioni di Azure AD, concedere l'accesso o il sysadminsecurityadmin ruolo del server.
  • Come minimo, è necessario concedere l'autorizzazione ALTER ANY LOGIN all'entità server Azure AD (account di accesso) per creare altre entità Azure AD server (account di accesso).
  • Per impostazione predefinita, l'autorizzazione standard concessa alle entità server Azure AD appena create (account di accesso) nel master è: CONNECT SQL e VIEW ANY DATABASE.
  • Il ruolo del server può essere concesso a molte sysadmin entità Azure AD server (account di accesso) all'interno di un'istanza gestita.

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

  1. Accedere di nuovo all'istanza gestita oppure usare la connessione esistente con l'Azure AD o l'SQL principale di . sysadmin

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

  3. Concedere all Azure AD principale del server (account di accesso) il ruolo del server usando la sintassi sysadmin T-SQL seguente:

    ALTER SERVER ROLE sysadmin ADD MEMBER login_name
    GO
    

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

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

Creare altre entità Azure AD server (account di accesso) usando SSMS

Dopo aver creato Azure AD principale del server (account di accesso) e aver fornito i privilegi, l'account di accesso può creare altri account di accesso usando la clausola FROM EXTERNAL PROVIDER con sysadminCREATE LOGIN. sysadmin

  1. Connessione'istanza gestita con l'entità server Azure AD (account di accesso), usando SQL Server Management Studio. Immettere il nome SQL host istanza gestita. Per l'autenticazione in SSMS, è possibile scegliere tra tre opzioni quando si esegue l'accesso con un account Azure AD account:

  2. Selezionare Active Directory - Universale con supporto MFA. Viene visualizzata una finestra di accesso a Multi-Factor Authentication. Accedere con la password Azure AD utente.

    Screenshot della finestra di accesso a Multi-Factor Authentication con il cursore nel campo Immettere la password.

  3. In SSMS Esplora oggettifare clic con il pulsante destro del mouse sul server e scegliere Nuova query.

  4. Nella finestra della query usare la sintassi seguente per creare un account di accesso per un altro account Azure AD account:

    USE master
    GO
    CREATE LOGIN login_name FROM EXTERNAL PROVIDER
    GO
    

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

    Eseguire il comando T-SQL seguente. Gli account Azure AD federati sono le sostituzioni SQL istanze gestite per gli accessi e gli utenti locali Windows utenti.

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

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

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

      CREATE DATABASE MyMITestDB;
      GO
      
  6. Creare un SQL di accesso istanza gestita per un gruppo in Azure AD. Il gruppo dovrà essere presente in Azure AD prima di poter aggiungere l'account di accesso SQL istanza gestita. Vedere Creare un gruppo di base e aggiungere membri usando Azure Active Directory. Creare un gruppo mygroup e aggiungere membri a questo gruppo.

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

    Questo esempio presuppone l'esistenza di un gruppo denominato mygroup in Azure AD. Eseguire il comando seguente:

    USE master
    GO
    CREATE LOGIN [mygroup] FROM EXTERNAL PROVIDER
    GO
    
  8. Come 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 durante l'autenticazione.

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

  10. Controllare le autorizzazioni del server per la nuova entità Azure AD server principale (account di accesso) eseguendo il comando seguente:

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

Gli utenti guest sono supportati come singoli utenti (senza far parte di un gruppo di AAD (anche se possono essere) e gli account di accesso possono essere creati direttamente nel master , ad esempio , usando la sintassi di accesso joe@contoso.con corrente.

Creare un Azure AD utente dall'entità Azure AD server principale (account di accesso)

L'autorizzazione per i singoli database funziona in modo molto identico SQL'istanza gestita, come per i database in SQL Server. Un utente può essere creato da un account di accesso esistente in un database e può essere fornito con le autorizzazioni per il database o aggiunto a un ruolo del database.

Dopo aver creato un database denominato MyMITestDBe un account di accesso che ha solo le 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 interagire con i database. Se si accede con l'account Azure AD che dispone delle autorizzazioni predefinite e si prova ad espandere il database appena creato, verrà visualizzato l'errore seguente:

Screenshot di un messaggio di errore visualizzato in Esplora oggetti S S M S che indica che il database MyMITestDB non è accessibile. (ObjectExplorer)

Per altre informazioni sulla concessione delle autorizzazioni per il database, vedere Guida introduttiva motore di database autorizzazioni.

Creare un Azure AD utente e creare una tabella di esempio

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

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

  3. Nella finestra della query usare la sintassi seguente per creare un Azure AD utente da un'entità Azure AD server principale (account di accesso):

    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 bob@aadsqlmi.net accesso:

    USE MyMITestDB
    GO
    CREATE USER [bob@aadsqlmi.net] FROM LOGIN [bob@aadsqlmi.net]
    GO
    
  4. È anche supportato creare un utente Azure AD da un'entità Azure AD server principale (account di accesso) che è un gruppo.

    L'esempio seguente crea un account di accesso per il gruppo Azure AD mygroup esistente nell'istanza Azure AD utente.

    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 UTENTE da un'entità Azure AD server (account di accesso), specificare l'user_name della stessa 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 SSMS con l'utente creato. Si noterà che non è possibile visualizzare la tabella TestTable creata in precedenza. È necessario fornire all'utente le autorizzazioni per leggere i dati dal database.

  7. È possibile controllare l'autorizzazione corrente dell'utente eseguendo il comando seguente:

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

Aggiungere utenti ai ruoli a livello di database

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

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

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

  3. Concedere all Azure AD utente il ruolo db_datareader di 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 fornisce all'utente e al gruppo bob@aadsqlmi.netbob@aadsqlmi.netdb_datareader le autorizzazioni per il database db_datareader

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

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

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

    Screenshot di Esplora oggetti in S S M S che mostra la struttura delle cartelle per le tabelle in MyMITestDB. Dbo. Cartella TestTable evidenziata.

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

    SELECT *
    FROM TestTable
    

    È possibile visualizzare i dati della tabella? Dovrebbero essere visualizzate le colonne restituite.

    Screenshot della scheda Risultati in Esplora oggetti S S M S con le intestazioni di colonna della tabella AccountNum, City, Name e State.

Rappresentare le Azure AD principali a livello di server (account di accesso)

SQL'istanza gestita supporta la rappresentazione Azure AD entità a livello di server (account di accesso).

Verifica della rappresentazione

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

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

  3. Nella finestra della 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 l'esecuzione della stored procedure sia bob@aadsqlmi.net .

    Exec dbo.usp_Demo
    
  5. Testare la rappresentazione usando l'istruzione EXECUTE AS LOGIN:

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

Nota

Solo le entità SQL a livello di server (account di accesso) che fanno parte del ruolo possono eseguire le operazioni seguenti per le entità Azure AD sysadmin principali:

  • ESEGUI COME UTENTE
  • ESEGUI COME ACCOUNT DI ACCESSO

Usare query tra database

Le query tra database sono supportate per gli account Azure AD con Azure AD principali del server (account di accesso). Per testare una query tra database con un gruppo Azure AD database, è necessario creare un altro database e una tabella. È possibile ignorare la creazione di un altro database e di un'altra tabella, se ne esiste già uno.

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

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

  3. Nella finestra della 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 MyMITestDB2e concedere a mygrouple autorizzazioni SELECT per il database:

    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 Azure AD mygroup. 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 da TestTable2.

Altri scenari supportati

  • SQL gestione dell'agente e le esecuzioni dei processi sono supportate Azure AD principali del server (account di accesso).
  • Le operazioni di backup e ripristino del database possono essere eseguite Azure AD principali del server (account di accesso).
  • Controllo di tutte le istruzioni relative a Azure AD principali del server (account di accesso) ed eventi di autenticazione.
  • Connessione amministratore dedicata per Azure AD principali del server (account di accesso) che sono membri del sysadmin server-role.
  • Azure AD le entità server (account di accesso) sono supportate con l'utilità sqlcmd e lo strumento SQL Server Management Studio database.
  • I trigger di accesso sono supportati per gli eventi di accesso provenienti Azure AD principali del server (account di accesso).
  • La posta di Service Broker e DB può essere impostata Azure AD principali del server (account di accesso).

Passaggi successivi

Abilitare le funzionalità di sicurezza

Vedere l'SQL funzionalità di sicurezza dell'istanza gestita per un elenco completo dei modi per proteggere il database. Vengono illustrate le caratteristiche di sicurezza seguenti:

SQL delle istanze gestite

Per una panoramica completa delle funzionalità SQL istanza gestita, vedere: