Condividi tramite


Esercitazione: Proteggere un database nel database SQL di Azure

Si applica a: database SQL di Azure

In questa esercitazione si apprenderà come:

  • Creare regole del firewall a livello di server e di database
  • Configurare un amministratore di Microsoft Entra
  • Gestire l'accesso degli utenti con l'autenticazione SQL, l'autenticazione di Microsoft Entra e le stringhe di connessione sicure
  • Abilitare funzionalità di sicurezza come Microsoft Defender per SQL, il controllo, la maschera dati e la crittografia

Nota

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

Il database SQL di Azure protegge i dati consentendo di:

  • Limitare l'accesso tramite regole del firewall
  • Usare meccanismi di autenticazione che verificano l'identità
  • Concedere autorizzazioni tramite appartenenze e autorizzazioni basate sui ruoli
  • Abilitare le funzionalità di sicurezza

Nota

L'istanza gestita di SQL di Azure viene protetta tramite regole di sicurezza di rete ed endpoint privati come descritto in Istanza gestita di SQL di Azure e in Architettura della connettività.

Per altre informazioni, vedere gli articoli database SQL di Azure - Sicurezza avanzata e Panoramica della funzionalità di sicurezza del database SQL di Azure.

Suggerimento

Questo modulo Learn gratuito illustra come proteggere il database nel database SQL di Azure.

Prerequisiti

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

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Accedere al portale di Azure

Per tutti i passaggi dell'esercitazione, accedere al portale di Azure

Creare regole del firewall

I database nel database SQL sono protetti da firewall in Azure. Per impostazione predefinita, vengono rifiutate tutte le connessioni al server e al database. Per altre informazioni, vedere regole del firewall a livello di server e di database.

La configurazione più sicura consiste nell'impostare Consenti l'accesso a Servizi di Azure su NO. Quindi, creare un IP riservato (distribuzione classica) per la risorsa da connettere, ad esempio una macchina virtuale di Azure o un servizio cloud, e consentire l'accesso tramite il firewall solo a questo indirizzo IP. Se si usa il modello di distribuzione di Resource Manager, è necessario un indirizzo IP pubblico dedicato per ogni risorsa.

Nota

Il database SQL comunica attraverso la porta 1433. Se si sta provando a connettersi da una rete aziendale, il traffico in uscita sulla porta 1433 potrebbe non essere consentito dal firewall della rete. In questo caso, non è possibile connettersi al server a meno che l'amministratore non apra la porta 1433.

Configurare le regole del firewall a livello di server

Le regole del firewall IP a livello di server si applicano a tutti i database all'interno dello stesso server.

Per configurare una regola del firewall a livello di server:

  1. Nel portale di Azure scegliere Database SQL dal menu a sinistra, quindi selezionare il database nella pagina Database SQL.

    Screenshot della pagina del portale di Azure per un database SQL logico, che evidenzia il nome del server.

    Nota

    Assicurarsi di copiare il nome completo del server, ad esempio server.database.windows.net, per l'uso successivo nell'esercitazione.

  2. Selezionare Rete in Impostazioni. Scegliere la scheda Accesso pubblico e quindi selezionare Reti selezionate in Accesso alla rete pubblica per mostrare la sezione Regole del firewall.

    Screenshot della pagina Rete del portale di Azure per SQL Server logico, che mostra la regola del firewall IP a livello di server.

  3. Selezionare Aggiungi IP client sulla barra degli strumenti per aggiungere l'indirizzo IP corrente a una nuova regola del firewall IP. Una regola del firewall per gli indirizzi IP può aprire la porta 1433 per un singolo indirizzo IP o un intervallo di indirizzi IP.

  4. Per salvare le impostazioni del firewall, selezionare OK.

È ora possibile connettersi a qualsiasi database nel server con l'indirizzo IP specificato o con un intervallo di indirizzi IP.

Configurare le regole del firewall per il database

Le regole del firewall a livello di database di applicano solo ai singoli database. Il database conserverà queste regole durante un failover del server. Le regole del firewall a livello di database possono essere configurate solo tramite istruzioni Transact-SQL (T-SQL) e solo dopo aver configurato una regola del firewall a livello di server.

Per configurare una regola del firewall a livello di database:

  1. Connettersi al database, ad esempio usando SQL Server Management Studio.

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

  3. Nella finestra della query aggiungere questa istruzione e sostituire l'indirizzo IP con l'indirizzo IP pubblico:

    EXECUTE sp_set_database_firewall_rule N'Example DB Rule','0.0.0.4','0.0.0.4';
    
  4. Sulla barra degli strumenti selezionare Esegui per creare la regola del firewall.

Nota

È anche possibile creare una regola del firewall a livello di server in SSMS usando il comando sp_set_firewall_rule, ma è necessario essere connessi al database master.

Creare un amministratore di Microsoft Entra

Assicurarsi di usare il dominio gestito di Microsoft Entra ID (in precedenza Azure Active Directory) appropriato. Per selezionare il dominio, usare l'angolo in alto a destra del portale di Azure. Con questa procedura è possibile accertarsi che venga usata la stessa sottoscrizione sia per Microsoft Entra ID sia per il server logico che ospita il database o il data warehouse.

Screenshot del portale di Azure che mostra la pagina filtro directory e sottoscrizione dove scegliere la directory.

Impostare l'amministratore Microsoft Entra.

  1. Nella pagina SQL Server del portale di Azure, selezionare Microsoft Entra ID dal menu della risorsa, poi selezionare Imposta amministratore per aprire il riquadro Microsoft Entra ID.

    Screenshot della pagina portale di Azure MICROSOFT Entra ID per un server logico.

    Importante

    Per eseguire questa attività è necessario essere un “Amministratore globale”.

  2. Nel riquadro Microsoft Entra ID, cercare e selezionare l'utente o il gruppo Microsoft Entra e scegliere Seleziona. Son elencati tutti i membri e i gruppi dell'organizzazione Microsoft Entra, e le voci disattivate non sono supportate come amministratori di Microsoft Entra. Vedere Funzionalità e limitazioni di Microsoft Entra.

    Screenshot della pagina del portale di Azure per aggiungere un amministratore Microsoft Entra.

    Importante

    Il Controllo degli accessi in base al ruolo di Azure si applica solo al portale e non viene propagato a SQL Server.

  3. Nella parte superiore della pagina di amministrazione di Microsoft Entra, selezionare Salva.

    Il processo di modifica di un amministratore può richiedere alcuni minuti. Il nuovo amministratore verrà quindi visualizzato nel campo Amministratore di Microsoft Entra.

Nota

Quando si imposta un amministratore di Microsoft Entra, il nome del nuovo amministratore (utente o gruppo) non può essere già presente nel database master come utente o account di accesso. Se presente, la configurazione non riesce e verrà eseguito il rollback delle modifiche, a indicare che tale nome di amministratore esiste già. Poiché l'account di accesso al server o l'utente non fa parte di Microsoft Entra ID, qualsiasi sforzo per connettersi al server tramite l'autenticazione di Microsoft Entra ha esito negativo.

Per informazioni sulla configurazione di Microsoft Entra ID, vedere:

Gestire l'accesso al database

Per gestire l'accesso al database, aggiungervi gli utenti oppure consentire loro l'accesso tramite stringhe di connessione sicure. Le stringhe di connessione sono utili per le applicazioni esterne. Per altre informazioni, vedere Gestire gli account di accesso e gli account utente e Autenticazione di Microsoft Entra.

Per aggiungere utenti, scegliere il tipo di autenticazione del database:

  • Autenticazione di SQL: usa nome utente e password per gli accessi, che sono validi solo nel contesto di uno specifico database all'interno del server

  • Autenticazione di Microsoft Entra, usare le identità gestite da Microsoft Entra ID

Autenticazione SQL

Per aggiungere un utente con l'autenticazione di SQL:

  1. Connettersi al database, ad esempio usando SQL Server Management Studio.

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

  3. Nella finestra della query immettere il comando seguente:

    CREATE USER ApplicationUser WITH PASSWORD = 'YourStrongPassword1';
    
  4. Sulla barra degli strumenti selezionare Esegui per creare l'utente.

  5. Per impostazione predefinita, l'utente può connettersi al database, ma non dispone delle autorizzazioni per leggere o scrivere dati. Per concedere le autorizzazioni, eseguire i due comandi seguenti in una nuova finestra della query:

    ALTER ROLE db_datareader ADD MEMBER ApplicationUser;
    ALTER ROLE db_datawriter ADD MEMBER ApplicationUser;
    

Nota

Creare gli account per gli utenti non amministratori a livello di database, a meno che non abbiano l'esigenza di eseguire attività di amministrazione come la creazione di nuovi utenti.

Autenticazione Microsoft Entra

Poiché il database SQL di Azure non supporta le entità server di Microsoft Entra (account di accesso), gli utenti di database creati con account Microsoft Entra vengono creati come utenti di database indipendenti. Un utente del database indipendente non è associato a un account di accesso nel database master, anche se esiste un account di accesso con lo stesso nome. L'identità di Microsoft Entra può essere relativa un singolo utente o a un gruppo. Per altre informazioni, vedere Utenti di database indipendente: rendere portabile un database e consultare l'esercitazione di Microsoft Entra sull'autenticazione tramite Microsoft Entra ID.

Nota

Gli utenti del database, ad eccezione degli amministratori, non possono essere creati tramite il portale di Azure. I ruoli di Microsoft Entra non vengono propagati in SQL Server, database o data warehouse. Vengono usati solo per la gestione delle risorse di Azure e non si applicano alle autorizzazioni per il database.

Ad esempio, il ruolo Collaboratore SQL Server non concede l'accesso per connettersi a un database o a un data warehouse. Questa autorizzazione deve essere concessa all'interno del database tramite istruzioni T-SQL.

Importante

I caratteri speciali, come i due punti : o la e commerciale &, non sono supportati nei nomi utente e nelle istruzioni T-SQL CREATE LOGIN e CREATE USER.

Per aggiungere un utente all'autenticazione con Microsoft Entra:

  1. Connettersi al server in Azure usando un account Microsoft Entra che abbia almeno l'autorizzazione ALTER ANY USER.

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

  3. Nella finestra della query immettere il comando seguente e sostituire <Azure_AD_principal_name> con il nome dell'entità utente di Microsoft Entra o con il nome visualizzato di un gruppo di Microsoft Entra:

    CREATE USER [<Azure_AD_principal_name>] FROM EXTERNAL PROVIDER;
    

Nota

Gli utenti di Microsoft Entra sono contrassegnati nei metadati del database con il tipo E (EXTERNAL_USER) e con il tipo X (EXTERNAL_GROUPS) per i gruppi. Per altre informazioni, vedere sys.database_principals.

Stringhe di connessione sicure

Per garantire una connessione crittografata e sicura tra l'applicazione client e il database SQL, è necessario configurare una stringa di connessione per:

  • Richiedere una connessione crittografata
  • Non considerare attendibile il certificato del server

La connessione viene stabilita tramite Transport Layer Security (TLS), riducendo il rischio di attacchi man-in-the-middle. Le stringhe di connessione sono disponibili per ogni database e sono preconfigurate per supportare driver client come ADO.NET, JDBC, ODBC e PHP. Per informazioni su TLS e la connettività, vedere Considerazioni su TLS.

Per copiare una stringa di connessione sicura:

  1. Nel portale di Azure scegliere Database SQL dal menu a sinistra, quindi selezionare il database nella pagina Database SQL.

  2. Nella pagina Panoramica selezionare Mostra stringhe di connessione del database.

  3. Selezionare la scheda di un driver e copiare la stringa di connessione completa.

    Screenshot del portale di Azure che mostra la pagina della stringa di connessione s. La scheda ADO.NET è selezionata e viene visualizzata la stringa di connessione ADO.NET (autenticazione SQL).

Abilitare le funzionalità di sicurezza

Il database SQL di Azure include funzionalità di sicurezza accessibili dal portale di Azure. Queste funzionalità sono disponibili sia per il database che per il server, ad eccezione della maschera dei dati, che è disponibile solo nel database. Per altre informazioni, vedere gli articoli relativi a Microsoft Defender per SQL, Controllo, Dynamic Data Masking e Transparent Data Encryption.

Microsoft Defender per SQL

La funzionalità Microsoft Defender per SQL rileva le potenziali minacce nel momento in cui si verificano e invia avvisi di sicurezza per le attività anomale. Gli utenti possono esaminare gli eventi sospetti con la funzionalità di controllo per determinare se si tratta di un tentativo di accesso, violazione o exploit dei dati del database. Possono inoltre accedere a una panoramica sulla sicurezza, che include una valutazione della vulnerabilità oltre allo strumento di individuazione e classificazione dei dati.

Nota

Un esempio di minaccia è SQL injection, un processo in cui gli utenti malintenzionati inseriscono codice SQL dannoso negli input dell'applicazione. L'applicazione può quindi eseguire inconsapevolmente tale codice, consentendo agli utenti malintenzionati di violare o modificare i dati del database.

Per abilitare Microsoft Defender for SQL:

  1. Nel portale di Azure scegliere Database SQL dal menu a sinistra, quindi selezionare il database nella pagina Database SQL.

  2. Nella pagina Panoramica selezionare il collegamento Nome server. Verrà visualizzata la pagina del server.

  3. Nella pagina SQL Server cercare la sezione Sicurezza e selezionare Defender per il cloud.

    1. Selezionare ON in Microsoft Defender per SQL per abilitare la funzionalità. Scegliere un account di archiviazione per il salvataggio dei risultati della valutazione della vulnerabilità. Quindi selezionare Salva.

      Screenshot del riquadro di spostamento del portale di Azure per le impostazioni di rilevamento delle minacce.

      È anche possibile configurare gli indirizzi di posta elettronica a cui ricevere avvisi di sicurezza, dettagli sulle risorse di archiviazione e tipi di rilevamento delle minacce.

  4. Tornare alla pagina Database SQL del database e selezionare Defender per il cloud nella sezione Sicurezza. In questa sezione sono disponibili vari indicatori della sicurezza per il database.

    Screenshot della pagina dello stato delle minacce del portale di Azure che mostra grafici a torta per individuazione dei dati e classificazione, valutazione della vulnerabilità e rilevamento delle minacce.

Se vengono rilevate attività anomale, si riceverà un messaggio di posta elettronica con informazioni sull'evento, tra cui la natura dell'attività, il database, il server, l'ora dell'evento, le possibili cause e le azioni consigliate per analizzare e contrastare la potenziale minaccia. Se si riceve un messaggio di questo tipo, selezionare il collegamento che punta al log di controllo del database SQL di Azure per avviare il portale di Azure e visualizzare i record di controllo pertinenti per l'ora dell'evento.

Screenshot di un messaggio di posta elettronica di esempio da Azure che indica il rilevamento di una potenziale minaccia sql injection. Viene evidenziato un collegamento nel corpo del messaggio di posta elettronica ai log di controllo del database SQL di Azure.

Controllo

La funzionalità di controllo tiene traccia degli eventi del database e li scrive in un log di controllo nell'archiviazione di Azure, nei log di Monitoraggio di Azure o in un hub eventi. Il controllo consente di gestire la conformità alle normative, ottenere informazioni sull'attività del database e rilevare discrepanze e anomalie che possono indicare possibili violazioni della sicurezza.

Per abilitare il controllo:

  1. Nel portale di Azure scegliere Database SQL dal menu a sinistra, quindi selezionare il database nella pagina Database SQL.

  2. Nella sezione Sicurezza selezionare Controllo.

  3. Nelle impostazioni di Controllo specificare i valori seguenti:

    1. Impostare Controllo su ON.

    2. Selezionare una delle opzioni seguenti per Destinazione del log di controllo:

      • Archiviazione, un account di archiviazione di Azure in cui vengono salvati i log degli eventi, che possono essere scaricati come file con estensione xel

        Suggerimento

        Per sfruttare al meglio i modelli di report di controllo, usare lo stesso account di archiviazione per tutti i database controllati.

      • Log Analytics, un servizio che archivia automaticamente gli eventi per le query o per ulteriori analisi

        Nota

        Per supportare funzionalità avanzate come l'analisi, le regole personalizzate degli avvisi e le esportazioni in Excel o Power BI, è necessaria un'area di lavoro di Log Analytics. Senza quest'area di lavoro, è disponibile solo l'editor di query.

      • Hub eventi, che consente di instradare gli eventi per l'uso in altre applicazioni

    3. Seleziona Salva.

      Screenshot della pagina delle impostazioni di controllo del portale di Azure. Il pulsante Salva è evidenziato. I campi di destinazione del log di controllo sono evidenziati.

  4. A questo punto è possibile selezionare Visualizza log di controllo per visualizzare i dati sugli eventi del database.

    Screenshot della pagina del portale di Azure che mostra la pagina dei record di Audit per un database SQL.

Importante

Per informazioni su come personalizzare ulteriormente gli eventi di controllo tramite PowerShell o l'API REST, vedere Introduzione al controllo del database SQL.

Maschera dati dinamica

La funzionalità di maschera dei dati nasconde automaticamente i dati sensibili nel database.

Per abilitare la maschera dei dati:

  1. Nel portale di Azure scegliere Database SQL dal menu a sinistra, quindi selezionare il database nella pagina Database SQL.

  2. Nella sezione Sicurezza selezionare Dynamic Data Masking.

  3. Nelle impostazioni di Dynamic Data Masking selezionare Aggiungi maschera per aggiungere una regola di mascheramento. Azure popola automaticamente gli schemi, le tabelle e le colonne del database disponibili tra cui scegliere.

    Screenshot della pagina del portale di Azure per salvare o aggiungere campi Maschera dati dinamica. Campi consigliati per mascherare lo schema, la tabella e le colonne delle tabelle.

  4. Seleziona Salva. Le informazioni selezionate saranno ora mascherate per la privacy.

    Screenshot di SQL Server Management Studio (SSMS) che mostra una semplice istruzione INSERT e SELECT. L'istruzione SELECT visualizza i dati mascherati nella colonna LastName.

Transparent Data Encryption

Questa funzionalità crittografa automaticamente i dati inattivi e non richiede modifiche alle applicazioni che accedono al database crittografato. Per i nuovi database, la crittografia è attivata per impostazione predefinita. È anche possibile crittografare i dati usando SSMS e la funzionalità Always Encrypted.

Per abilitare o verificare la crittografia:

  1. Nel portale di Azure scegliere Database SQL dal menu a sinistra, quindi selezionare il database nella pagina Database SQL.

  2. Nella sezione Sicurezza selezionare Transparent Data Encryption.

  3. Se necessario, impostare Crittografia dati su . Seleziona Salva.

    Screenshot della pagina del portale di Azure che consente di abilitare Transparent Data Encryption.

Nota

Per visualizzare lo stato di crittografia, connettersi al database tramite SSMS ed eseguire una query sulla colonna encryption_state della visualizzazione sys.dm_database_encryption_keys. Lo stato 3 indica che il database è crittografato.

Nota

Alcuni elementi considerati contenuto dei clienti, ad esempio nomi di tabella, nomi di oggetti e nomi di indice, potrebbero essere trasmessi nei file di resoconto per il supporto e la risoluzione dei problemi da parte di Microsoft.

Suggerimento

È tutto pronto per iniziare a sviluppare un'applicazione .NET? Questo modulo di apprendimento gratuito mostra come fare a Sviluppare e configurare un'applicazione ASP.NET che esegue query su un database SQL di Azure, inclusa la creazione di un database semplice.

Passaggio successivo

Passare all'esercitazione successiva per informazioni su come implementare la distribuzione geografica.