Esercizio - Classificazione dei dati, maschera dati dinamica e controllo SQL

Completato

In questo esercizio: verranno combinate le informazioni del modulo per esaminare uno scenario. Si apprenderà come aggiungere nuove classificazioni di dati e maschere dati dinamiche e verranno esaminati diversi metodi per il controllo degli utenti che tentano di visualizzare le colonne contrassegnate per la classificazione dei dati. Questo esercizio combina diversi concetti già appresi nel modulo sulla gestione della sicurezza.

Configurare la classificazione e la maschera dei dati

  1. Nel portale di Azure passare all'istanza del database SQL di Azure (non al server logico).

  2. Nel menu a sinistra, in Sicurezza selezionare Individuazione dati e classificazione.

  3. Selezionare la scheda Classificazione , quindi selezionare Aggiungi classificazione.

    Screenshot of how to add a new classification.

    In un esercizio precedente sono state aggiunte tutte le classificazioni di colonna consigliate. In questo passaggio viene aggiunta manualmente una colonna potenzialmente sensibile all'elenco di colonne classificate.

  4. Nella tabella SalesLT Customer, Individuazione dati e classificazione identificate FirstName e LastName da classificare, ma non MiddleName. Usare gli elenchi a discesa per aggiungerlo ora e quindi selezionare Aggiungi classificazione.

    Screenshot of how to add a name-related classification for MiddleName.

  5. Seleziona Salva.

  6. Confermare che la classificazione è stata aggiunta correttamente visualizzando la scheda Panoramica e confermando che MiddleNamesia ora presente nell'elenco di colonne classificate nello schema SalesLT.

  7. Nel riquadro sinistro, selezionare Panoramica per tornare alla panoramica del database.

    Dynamic Data Masking (DDM) è disponibile sia in SQL di Azure che in SQL Server. DDM limita l'esposizione dei dati mascherando i dati sensibili agli utenti senza privilegi a livello di SQL Server e non a livello di applicazione, in cui è necessario codificare questi tipi di regole. Azure SQL consiglia gli elementi da mascherare oppure è possibile aggiungere le maschere manualmente.

    Nei passaggi successivi verranno mascherate le colonne FirstName, MiddleName e LastName, esaminate nel passaggio precedente.

  8. Nel portale di Azure passare al database SQL di Azure. Nel riquadro sinistro, in Sicurezza selezionare Dynamic Data Masking e quindi Aggiungi maschera.

  9. Negli elenchi a discesa selezionare lo schema SalesLT, la tabella Customer e la colonna FirstName. È possibile esaminare le opzioni per la maschera, ma il valore predefinito è adatto per questo scenario. Fare clic su Aggiungi per aggiungere la regola per la maschera.

    Screenshot of how to add First Name mask.

  10. Ripetere i passaggi precedenti sia per SecondoNome che per Cognome nella tabella.

    Sono ora disponibili tre regole per la maschera, simili a quelle illustrate di seguito:

    Screenshot of how to review all masking rules.

  11. Seleziona Salva.

  12. Nel riquadro sinistro, selezionare Panoramica per tornare alla panoramica del database.

Recuperare i dati classificati e mascherati

Successivamente, simulerà un utente che esegue una query sulle colonne classificate ed esplorerà Dynamic Data Masking in azione.

  1. Passare a SQL Server Management Studio (SSMS)

  2. Per creare una nuova query nel database AdventureWorks, fare clic con il pulsante destro del mouse sul database e quindi scegliere Nuova query.

  3. Eseguire la query seguente per restituire i dati classificati e, in alcuni casi, le colonne contrassegnate per la maschera. Selezionare Esegui per eseguire la query.

    SELECT TOP 10 FirstName, MiddleName, LastName
    FROM SalesLT.Customer;
    

    Nella pagina dei risultativi dovrebbero essere visualizzati i primi 10 nomi, senza maschera applicata. Perché? Perché si è l'amministratore di questo server logico del database SQL di Azure.

    Screenshot of SQL query results with no mask.

  4. Nella query seguente si creerà un nuovo utente ed si eseguirà la query precedente come tale utente. Si userà anche EXECUTE AS per rappresentare Bob. Quando viene eseguita un'istruzione EXECUTE AS , il contesto di esecuzione della sessione viene passato all'account di accesso o all'utente. Questo significa che le autorizzazioni vengono verificate in base all'account di accesso o utente, invece che alla persona che esegue il comando EXECUTE AS (in questo caso, l'utente). REVERT viene quindi usato per terminare la rappresentazione dell'account di accesso o utente.

    È possibile riconoscere le prime parti dei comandi seguenti, poiché si tratta di una ripetizione da un esercizio precedente. Creare una nuova query con i comandi seguenti, quindi selezionare Esegui per eseguire la query e osservare i risultati.

    -- Create a new SQL user and give them a password
    CREATE USER Bob WITH PASSWORD = 'c0mpl3xPassword!';
    
    -- Until you run the following two lines, Bob has no access to read or write data
    ALTER ROLE db_datareader ADD MEMBER Bob;
    ALTER ROLE db_datawriter ADD MEMBER Bob;
    
    -- Execute as our new, low-privilege user, Bob
    EXECUTE AS USER = 'Bob';
    SELECT TOP 10 FirstName, MiddleName, LastName
    FROM SalesLT.Customer;
    REVERT;
    

    Nella pagina dei risultativi dovrebbero essere ora visualizzati i primi 10 nomi, ma con la maschera applicata. A Bob non è stato concesso l'accesso al modulo senza maschera di questi dati.

    Screenshot of SQL query results with mask.

    Cosa accade se, per qualche motivo, a Bob serve l'accesso ai nomi e ottiene l'autorizzazione per ottenerlo?

    È possibile aggiornare gli utenti esclusi dalla maschera nel portale di Azure (nell'area Sicurezza del riquadro Dynamic Data Masking), ma è anche possibile eseguire questa operazione tramite T-SQL.

  5. Fare clic con il pulsante destro del mouse sul database AdventureWorks e selezionare Nuova query, quindi immettere la query seguente per consentire a Bob di eseguire query sui risultati dei nomi senza mascherare. Selezionare Esegui per eseguire la query.

    GRANT UNMASK TO Bob;  
    EXECUTE AS USER = 'Bob';
    SELECT TOP 10 FirstName, MiddleName, LastName
    FROM SalesLT.Customer;
    REVERT;  
    

    I risultati devono includere i nomi completi.

    Screenshot of SQL query results with no mask.

  6. È anche possibile rimuovere i privilegi di annullamento del mascheramento di un utente e confermare l'azione eseguendo i comandi T-SQL seguenti in una nuova query:

    -- Remove unmasking privilege
    REVOKE UNMASK TO Bob;  
    
    -- Execute as Bob
    EXECUTE AS USER = 'Bob';
    SELECT TOP 10 FirstName, MiddleName, LastName
    FROM SalesLT.Customer;
    REVERT;  
    

    I risultati devono includere i nomi con maschera.

    Screenshot of SQL query results with mask.

Esaminare i log di controllo in SSMS

In qualità di amministratore, può essere utile esaminare e controllare chi accede ai database e in particolare ai dati classificati. Verranno esaminati quindi i file di controllo inviati all'archivio BLOB di Azure. La prima operazione da eseguire è unire i file di controllo, nel caso in cui i log si estendano su più file. Questa operazione può essere eseguita da SSMS seguendo questa procedura:

  1. Selezionare File>Apri>Unisci file di controllo.

    Screenshot of how to open audit files.

  2. Seleziona Aggiungi.

    Screenshot of how to add a new file.

  3. Selezionare Aggiungi da Archiviazione BLOB di Azure e quindi selezionare Connessione.

    Screenshot of how to add from Azure Blob storage.

  4. Accedere ad Azure con l'account usato per questo modulo.

    Screenshot of how to sign in to Azure.

  5. Selezionare la sottoscrizione, l'account di archiviazione e il contenitore BLOB configurati per il trasferimento dei log di controllo. L'account di archiviazione deve iniziare con sql. Il contenitore verrà chiamato sqldbauditlogs. Se non è presente alcun contenitore con tale nome, è stato creato un account di archiviazione diverso per il controllo; usarlo invece.

  6. Selezionare il server logico del database SQL di Azure e il database AdventureWorks. Assicurarsi che l'ora di inizio sia precedente a quando sono stati iniziati gli esercizi. Seleziona OK.

  7. Nella finestra di conferma è possibile verificare il numero di file da scaricare e unire. Seleziona OK.

  8. Esaminare i file, quindi selezionare OK un'ultima volta.

    Verranno ora visualizzati tutti i log di controllo. Individuare il punto in cui si stava eseguendo il test della maschera con Bob (dovrebbe essere vicino alla parte inferiore).

  9. Selezionare l'istruzione e quindi esaminare le informazioni nel riquadro dei dettagli. Ad esempio, per una delle query in cui Bob tenta di visualizzare i dati classificati, nel campo data_sensitivity_information è possibile visualizzare i dati classificati.

  10. Fare doppio clic sul valore del parametro data_sensitivity_information nel riquadro Dettagli. Verrà visualizzata una finestra popup in cui è possibile leggere più facilmente i dati.

    Di seguito è riportato un esempio di ciò che potrebbe essere visualizzato in data_sensitivity_information:

    <sensitivity_attributes max_rank="20" max_rank_desc="Medium"><sensitivity_attribute label="Confidential - GDPR" label_id="bf91e08c-f4f0-478a-b016-23422b2a65ff" information_type="Name" information_type_id="57845286-7598-22f5-3422-15b24aeb125e" rank="20" rank_desc="Medium"/></sensitivity_attributes>
    

    Questo file unito può quindi essere esportato in un file XEL o CSV (o in una tabella) per un'analisi aggiuntiva. È anche possibile eseguire una query sui file di Eventi estesi usando Azure PowerShell.

Esaminare i log di controllo nel portale di Azure

L'analisi dei log di controllo dipende dalle preferenze dell'utente. In questa sezione si verrà esposti a una query sui log di sicurezza nel portale di Azure con Log Analytics.

  1. Nel portale di Azure passare al database AdventureWorks. Nel riquadro sinistro, in Sicurezza, selezionare Controllo, quindi selezionare il pulsante Visualizza log di controllo nella barra delle applicazioni.

    A questo punto dovrebbe essere possibile visualizzare una query dei record eventi, le opzioni da eseguire nell'editor di query (eseguire query T-SQL tramite il portale), le opzioni per Log Analytics, Visualizza dashboard e altro ancora.

    Screenshot of how to view audit records.

    Soffermarsi a piacere per conoscere alcune delle opzioni disponibili.

  2. Selezionare Log Analytics. Potrebbe essere necessario selezionare Aggiorna per accedere al pulsante Log Analytics . Se viene visualizzata una schermata Guida introduttiva, selezionare OK. In questo modo si passa a un editor di query, ma non a un editor T-SQL. Questa visualizzazione consente di eseguire query sui log usando il linguaggio di query Kusto o KQL, che è concepito per essere facile da usare e comprendere dai professionisti di SQL.

    La query predefinita sta eseguendo una query sulla categoria SQLSecurityAuditEvents. Sebbene sia possibile usare questa categoria per visualizzare gli eventi imprevisti correlati alla sicurezza, questo strumento può essere usato anche per eseguire query su altri log e categorie di Azure in Log Analytics. Per questo passaggio, è possibile esaminare le istruzioni in cui Bob ha provato ad accedere a informazioni riservate. Per ottenere le stesse informazioni mostrate in SSMS, espandere la riga selezionando il pulsante >.

    La visualizzazione dei risultati può richiedere alcuni minuti. È possibile aggiornare la query selezionando nuovamente Esegui.

    In questa attività non viene approfondita l'esecuzione di query KQL sui log, ma nei riferimenti precedenti sono disponibili molte risorse per fare ancora pratica.

    Nel passaggio successivo verrà illustrato in che modo Sicurezza SQL ha creato un dashboard basato su Log Analytics per monitorare e controllare i log e altre attività SQL. Per tornare al riquadro Record di controllo, chiudere la finestra di query di Log Analytics selezionando la X nell'angolo in alto a destra.

  3. Selezionare Visualizza dashboard.

    Screenshot of the log analytics dashboard.

    Viene visualizzato un dashboard di panoramica.

  4. Selezionare Azure SQL - Accesso a dati sensibili per visualizzare dettagli aggiuntivi.

    Potrebbe essere necessario attendere 3-5 minuti e selezionare Aggiorna per visualizzare gli elementi.

    Queste informazioni dettagliate possono essere usate per scoprire:

    • Quante query accedono a dati sensibili.
    • A quali tipi e riservatezza di dati si accede.
    • Quali entità di sicurezza accedono ai dati sensibili.
    • Quali IP accedono ai dati sensibili.

    Esaminare gli elementi disponibili qui e il modo in cui è possibile controllare l'utilizzo con questo strumento. È anche possibile selezionare ognuno di questi log e visualizzare i log correlati in Log Analytics.

  5. Al termine, chiudere il riquadro Azure SQL - Accesso a dati sensibili selezionando la X in alto a destra.

  6. Tornare al riquadro di panoramica del dashboard di controllo e selezionare Azure SQL - Informazioni dettagliate sulla sicurezza.

    Questo dashboard offre più informazioni di controllo che consentono di comprendere le attività del database e di ottenere informazioni sulle anomalie. Dedicare alcuni minuti alla revisione e all'analisi delle opzioni disponibili qui.

Oltre a visualizzare queste informazioni dettagliate per i servizi SQL di Azure, in Azure è possibile usare Microsoft Defender for Cloud per monitorare, gestire e rispondere ai problemi che si verificano nell'intera area di Azure. Per informazioni sulle funzionalità disponibili all'esterno di Azure SQL Defender per il cloud, è possibile cercare e selezionare Microsoft Defender per il cloud nel portale di Azure. L'accesso potrebbe essere limitato, a seconda del livello di sottoscrizione.