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 stringa di connessione sicure
  • Abilitare funzionalità di sicurezza, ad esempio Microsoft Defender per SQL, controllo, maschera dati e crittografia

Nota

Microsoft Entra ID era precedentemente noto 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 in 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 of the Azure portal page for a logical SQL database, highlighting the server name.

    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 selezionatein Accesso alla rete pubblica per visualizzare la sezione Regole del firewall.

    Screenshot of the Azure portal Networking page for a logical SQL Server, showing the server-level IP firewall rule.

  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. Selezionare OK per salvare le impostazioni del firewall.

È 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 appropriato di Microsoft Entra ID (in precedenza Azure Active Directory). Per selezionare il dominio, usare l'angolo superiore destro del portale di Azure. Questo processo conferma che la stessa sottoscrizione viene usata sia per Microsoft Entra ID che per il server logico che ospita il database o il data warehouse.

Screenshot of the Azure portal showing the Directory + subscription filter page, where you would choose the directory.

Per impostare l'amministratore di Microsoft Entra:

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

    Screenshot of the Azure portal Microsoft Entra ID page for a logical server.

    Importante

    Per eseguire questa attività, è necessario essere "Global Amministrazione istrator".

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

    Screenshot of the Azure portal page to add a Microsoft Entra admin.

    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 potrebbe richiedere alcuni minuti. Il nuovo amministratore verrà visualizzato nel campo Amministratore di Microsoft Entra.

Nota

Quando si imposta un amministratore di Microsoft Entra, il nuovo nome amministratore (utente o gruppo) non può esistere come account di accesso o utente nel database master . 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 dell'ID Microsoft Entra, qualsiasi tentativo di connettere l'utente tramite l'autenticazione di Microsoft Entra ha esito negativo.

Per informazioni sulla configurazione dell'ID Microsoft Entra, 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 account di accesso e 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, uso delle 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é 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 master database, anche se esiste un account di accesso con lo stesso nome. L'identità di Microsoft Entra può essere per un singolo utente o un gruppo. Per altre informazioni, vedere Utenti di database indipendenti, rendere portabile il database ed esaminare l'esercitazione su come eseguire l'autenticazione con 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 a server, database o data warehouse SQL. 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 con l'autenticazione di Microsoft Entra:

  1. Connessione al server in Azure usando un account Microsoft Entra con almeno il Autorizzazione ALTER ANY U edizione Standard R.

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

  3. Nella finestra di query immettere il comando seguente e modificare <Azure_AD_principal_name> il nome principale dell'utente Microsoft Entra o il nome visualizzato del gruppo Microsoft Entra:

    CREATE USER [<Azure_AD_principal_name>] FROM EXTERNAL PROVIDER;
    

Nota

Gli utenti di Microsoft Entra sono contrassegnati nei metadati del database con tipo E (EXTERNAL_USER) e 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 of the Azure portal showing the connection strings page. The ADO.NET tab is selected and the ADO.NET (SQL authentication) connection string is displayed.

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 Microsoft Defender per SQL, Controllo, Maschera dati dinamica e Transparent Data Encryption.

Microsoft Defender per SQL

La funzionalità Microsoft Defender per SQL rileva potenziali minacce man mano che si verificano e fornisce avvisi di sicurezza sulle 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 per 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 individuare 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 of the Azure portal Navigation pane for threat detection settings.

      È 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 of the Azure portal Threat status page showing pie charts for Data Discovery & Classification, Vulnerability Assessment, and Threat Detection.

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 of a sample email from Azure, indicating a Potential Sql Injection Threat detection. A link in the body of the email to Azure SQL DB Audit Logs is highlighted.

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 of the Azure portal Audit settings page. The Save button is highlighted. Audit log destination fields are highlighted.

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

    Screenshot of the Azure portal page showing Audit records for a SQL database.

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 of the Azure portal page to Save or Add Dynamic Data Mask fields. Recommended fields to mask display schema, table, and columns of tables.

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

    Screenshot of SQL Server Management Studio (SSMS) showing a simple INSERT and SELECT statement. The SELECT statement displays masked data in the LastName column.

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 of the Azure portal page to enable 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 del cliente, ad esempio nomi di tabella, nomi di oggetti e nomi di indice, potrebbero essere trasmessi nei file di log per il supporto e la risoluzione dei problemi da parte di Microsoft.

Suggerimento

Pronto per iniziare a sviluppare un'applicazione .NET? Questo modulo Learn gratuito illustra come 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.