Eseguire notebook nel data lake Microsoft Sentinel

I notebook di Jupyter offrono un ambiente interattivo per l'esplorazione, l'analisi e la visualizzazione dei dati nel data lake Microsoft Sentinel e nelle tabelle federate. Con i notebook è possibile scrivere ed eseguire codice, documentare il flusso di lavoro e visualizzare i risultati, il tutto in un'unica posizione. In questo modo è facile eseguire l'esplorazione dei dati, creare soluzioni di analisi avanzate e condividere informazioni dettagliate con altri utenti. Sfruttando Python e Apache Spark in Visual Studio Code, i notebook consentono di trasformare i dati di sicurezza non elaborati in intelligence pratica.

Questo articolo illustra come esplorare e interagire con i dati data lake usando i notebook di Jupyter in Visual Studio Code.

Prerequisiti

Eseguire l'onboarding nel data lake Microsoft Sentinel

Per usare i notebook nel data lake Microsoft Sentinel, è prima necessario eseguire l'onboarding nel data lake. Se non è stato ancora fatto l'onboarding nel data lake Sentinel, vedere Onboarding to Microsoft Sentinel data lake (Onboarding in Microsoft Sentinel data lake). Se di recente è stato eseguito l'onboarding nel data lake, potrebbe essere necessario del tempo prima che venga inserito un volume sufficiente di dati prima di poter creare analisi significative usando notebook.

Autorizzazioni

Microsoft Entra ID ruoli offrono un ampio accesso a tutte le aree di lavoro nel data lake. In alternativa, è possibile concedere l'accesso a singole aree di lavoro usando Azure ruoli controllo degli accessi in base al ruolo. Gli utenti con autorizzazioni Azure controllo degli accessi in base al ruolo per Microsoft Sentinel aree di lavoro possono eseguire notebook in tali aree di lavoro nel livello data lake. Per altre informazioni, vedere Ruoli e autorizzazioni in Microsoft Sentinel.

Facoltativamente, Microsoft Sentinel ambito o controllo degli accessi in base al ruolo a livello di riga può essere configurato per limitare ulteriormente l'accesso ai dati all'interno di un'area di lavoro. Se abilitata, l'ambito a livello di riga limita i dati restituiti dalle query in base all'ambito assegnato dall'utente. Se l'ambito a livello di riga non è configurato, il modello di autorizzazione a livello di area di lavoro esistente viene applicato invariato. Per altre informazioni, vedere Configurare Microsoft Sentinel ambito (controllo degli accessi in base al ruolo a livello di riga) (anteprima).

Per creare nuove tabelle personalizzate nel livello di analisi, all'identità gestita del data lake deve essere assegnato il ruolo Collaboratore Log Analytics nell'area di lavoro Log Analytics.

Per assegnare il ruolo, seguire questa procedura:

  1. Nella portale di Azure passare all'area di lavoro Log Analytics a cui si vuole assegnare il ruolo.
  2. Selezionare Controllo di accesso (IAM) nel riquadro di spostamento sinistro.
  3. Selezionare Aggiungi assegnazione di ruolo.
  4. Nella tabella Ruolo selezionare Log Analytics Contributor (Collaboratore Log Analytics) e quindi Avanti
  5. Selezionare Identità gestita e quindi Selezionare i membri.
  6. L'identità gestita del data lake è un'identità gestita assegnata dal sistema denominata msg-resources-<guid>. Selezionare l'identità gestita e quindi selezionare Seleziona.
  7. Selezionare Rivedi e assegna.

Per altre informazioni sull'assegnazione di ruoli alle identità gestite, vedere Assegnare ruoli Azure usando il portale di Azure.

Installare Visual Studio Code e l'estensione Microsoft Sentinel

Se Visual Studio Code non è già disponibile, scaricare e installare Visual Studio Code per Mac, Linux o Windows.

L'estensione Microsoft Sentinel per Visual Studio Code (VS Code) viene installata dal marketplace delle estensioni. Per installare l'estensione, seguire questa procedura:

  1. Selezionare Extensions Marketplace nella barra degli strumenti a sinistra.
  2. Cercare Sentinel.
  3. Selezionare l'estensione Microsoft Sentinel e selezionare Installa.
  4. Dopo l'installazione dell'estensione, nella barra degli strumenti a sinistra viene visualizzata la Microsoft Sentinel icona dell'icona sentinella.

Screenshot che mostra il mercato delle estensioni.

Installare l'estensione GitHub Copilot per Visual Studio Code per abilitare il completamento del codice e i suggerimenti nei notebook.

  1. Cercare GitHub Copilot in Extensions Marketplace e installarlo.
  2. Dopo l'installazione, accedere a GitHub Copilot usando l'account GitHub.

Esplorare le tabelle di livello Data Lake

Dopo aver installato l'estensione Microsoft Sentinel, è possibile iniziare a esplorare le tabelle di livello Data Lake e creare notebook di Jupyter per analizzare i dati.

Accedere all'estensione Microsoft Sentinel

  1. Selezionare il Microsoft Sentinel l'icona sentinella nella barra degli strumenti sinistra.

  2. Viene visualizzata una finestra di dialogo con il testo seguente L'estensione "Microsoft Sentinel" vuole accedere usando Microsoft. Selezionare Consenti.

    Screenshot che mostra la finestra di dialogo di accesso.

  3. Selezionare il nome dell'account per completare l'accesso.

    Screenshot che mostra l'elenco di selezione dell'account nella parte superiore della pagina.

    Se si dispone di più account guest associati all'accesso, è possibile passare facilmente da un account all'altro. Per passare da un account all'altro, selezionare il nome dell'account nella parte inferiore sinistra della finestra di Visual Studio Code. È possibile selezionare un solo account alla volta.

    Screenshot che mostra come cambiare account in Visual Studio Code.

    Importante

    Se si passa da un account all'altro, tutte le sessioni pyspark attive vengono disconnesse.

Visualizzare tabelle e processi data lake

Dopo l'accesso, l'estensione Sentinel visualizza un elenco di tabelle Lake e processi nel riquadro sinistro. Le tabelle vengono raggruppate in base al database e alla categoria. Le tabelle federate vengono visualizzate nella categoria Tabelle federate in Tabelle di sistema. Selezionare una tabella per visualizzare le definizioni di colonna.

Per informazioni sui processi, vedere Processi e pianificazione. Per altre informazioni sulle tabelle federate, vedere Uso di tabelle federate nel data lake Microsoft Sentinel.

Screenshot che mostra l'elenco di tabelle, processi e metadati della tabella selezionata.

Creare un nuovo notebook

  1. Per creare un nuovo notebook, usare uno dei metodi seguenti.

  2. Immettere > nella casella di ricerca o premere CTRL+MAIUSC+P e quindi immettere Crea nuovo Jupyter Notebook. Screenshot che mostra come creare un nuovo notebook dalla barra di ricerca.

  3. Selezionare File > nuovo file e quindi selezionare Jupyter Notebook dall'elenco a discesa.
    Screenshot che mostra come creare un nuovo notebook dal menu file.

  4. Nel nuovo notebook incollare il codice seguente nella prima cella.

    from sentinel_lake.providers import MicrosoftSentinelProvider
    data_provider = MicrosoftSentinelProvider(spark)
    
    table_name = "EntraGroups"  
    df = data_provider.read_table(table_name)  
    df_filtered = df.select("displayName", "groupTypes", "mail", "mailNickname", "description", "tenantId").show(100,   truncate=False)  
    
    # Transform the dataframe
    df_transformed = df.filter(df.mail.isNotNull()).select("displayName", "groupTypes", "mail", "mailNickname", "description", "tenantId")
    
    write_options = {
         'mode': 'overwrite'
     }
    # Save to a new table
    data_provider.save_as_table(df_transformed, "EntraGroups_Processed_SPRK", write_options=write_options)
    

L'editor fornisce il completamento del codice intellisense sia per la MicrosoftSentinelProvider classe che per i nomi di tabella nel data lake.

  1. Selezionare il triangolo Esegui per eseguire il codice nel notebook. I risultati vengono visualizzati nel riquadro di output sotto la cella di codice.
    Screenshot che mostra come eseguire una cella del notebook.

  2. Selezionare Microsoft Sentinel nell'elenco per un elenco di pool di runtime. Screenshot che mostra la selezione runtime.

  3. Selezionare Medio per eseguire il notebook nel pool di runtime di medie dimensioni. Per altre informazioni sui diversi runtime, vedere Selezione del runtime di Microsoft Sentinel appropriato. Screenshot che mostra la selezione delle dimensioni del pool di esecuzione.

Nota

Se si seleziona il kernel, viene avviata la sessione Spark ed viene eseguito il codice nel notebook. Dopo aver selezionato il pool, l'avvio della sessione può richiedere 3-5 minuti. Successivamente viene eseguito più velocemente perché la sessione è già attiva.

All'avvio della sessione, il codice nel notebook viene eseguito e i risultati vengono visualizzati nel riquadro di output sotto la cella di codice, ad esempio: Screenshot che mostra i risultati dell'esecuzione di una cella del notebook.

Per notebook di esempio che illustrano come interagire con il data lake Microsoft Sentinel, vedere Notebook di esempio per Microsoft Sentinel data lake.

Barra di stato

La barra di stato nella parte inferiore del notebook fornisce informazioni sullo stato corrente del notebook e sulla sessione Spark. La barra di stato include le informazioni seguenti:

  • Percentuale di utilizzo vCore per il pool Spark selezionato. Passare il puntatore del mouse sulla percentuale per visualizzare il numero di vCore usati e il numero totale di vCore disponibili nel pool. Le percentuali rappresentano l'utilizzo corrente nei carichi di lavoro interattivi e del processo per l'account connesso.

  • Stato della connessione della sessione Spark, ad esempio Connecting, Connectedo Not Connected.

Screenshot che mostra la barra di stato nella parte inferiore del notebook.

Impostare i timeout della sessione

È possibile impostare gli avvisi di timeout e timeout della sessione per i notebook interattivi. Queste impostazioni vengono mantenute nelle impostazioni dell'estensione in modo che vengano mantenute tra le sessioni.

Per modificare il timeout, selezionare lo stato della connessione nella barra di stato nella parte inferiore del notebook. Scegliere una delle seguenti opzioni:

  • Imposta periodo di timeout sessione: imposta il tempo in minuti prima del timeout della sessione. Il valore predefinito è 30 minuti.

  • Reimposta il periodo di timeout della sessione: reimposta il timeout della sessione sul valore predefinito di 30 minuti.

  • Imposta il periodo di avviso di timeout della sessione: imposta il tempo in minuti prima del timeout in cui viene visualizzato un avviso che indica che la sessione sta per scadere. Il valore predefinito è 5 minuti.

  • Reimpostare il periodo di avviso di timeout della sessione: reimposta l'avviso di timeout della sessione sul valore predefinito di 5 minuti.

    Screenshot che mostra l'impostazione di timeout della sessione.

Usare GitHub Copilot nei notebook

Usare GitHub Copilot per scrivere codice nei notebook. GitHub Copilot fornisce suggerimenti di codice e completamento automatico in base al contesto del codice. Per usare GitHub Copilot, assicurarsi di avere l'estensione GitHub Copilot installata in Visual Studio Code.

Copiare il codice dai notebook di esempio per Microsoft Sentinel data lake e salvarlo nella cartella notebook per fornire contesto per GitHub Copilot. GitHub Copilot sarà quindi in grado di suggerire i completamenti del codice in base al contesto del notebook.

L'esempio seguente illustra GitHub Copilot generazione di una revisione del codice.

Screenshot che mostra GitHub Copilot la generazione di una revisione del codice.

Classe Provider Microsoft Sentinel

Per connettersi al data lake Microsoft Sentinel, usare la SentinelLakeProvider classe . Questa classe fa parte del access_module.data_loader modulo e fornisce metodi per interagire con il data lake. Per usare questa classe, importarla e creare un'istanza della classe usando una spark sessione.

from sentinel_lake.providers import MicrosoftSentinelProvider
data_provider = MicrosoftSentinelProvider(spark)

Per altre informazioni sui metodi disponibili, vedere Microsoft Sentinel Riferimento alla classe Provider.

Selezionare il pool di runtime appropriato

Sono disponibili tre pool di runtime per eseguire i notebook di Jupyter nell'estensione Microsoft Sentinel. Ogni pool è progettato per carichi di lavoro e requisiti di prestazioni diversi. La scelta del pool di runtime influisce sulle prestazioni, sui costi e sul tempo di esecuzione dei processi Spark.

Runtime Pool Casi d'uso consigliati Caratteristiche
Piccole dimensioni Sviluppo, test e analisi esplorativa leggera.
Carichi di lavoro di piccole dimensioni con trasformazioni semplici.
L'efficienza dei costi è stata assegnata in ordine di priorità.
Adatto per carichi di lavoro di piccole dimensioni
Trasformazioni semplici.
Costo inferiore, tempo di esecuzione più lungo.
Medium Processi ETL con join, aggregazioni e training del modello di Machine Learning.
Moderare i carichi di lavoro con trasformazioni complesse.
Miglioramento delle prestazioni rispetto a Small.
Gestisce il parallelismo e le operazioni con utilizzo moderato della memoria.
Grandi dimensioni Carichi di lavoro di Apprendimento avanzato e Machine Learning.
Rimescolamento completo dei dati, join di grandi dimensioni o elaborazione in tempo reale.
Tempo di esecuzione critico.
Memoria e potenza di calcolo elevate.
Ritardi minimi.
Ideale per carichi di lavoro di grandi dimensioni, complessi o sensibili al tempo.

Nota

Al primo accesso, il caricamento delle opzioni del kernel potrebbe richiedere circa 30 secondi.
Dopo aver selezionato un pool di runtime, l'avvio della sessione può richiedere da 3 a 5 minuti.

Visualizzare messaggi, log ed errori

I log dei messaggi e i messaggi di errore vengono visualizzati in tre aree in Visual Studio Code.

  1. Riquadro Output .

    1. Nel riquadro Output selezionare Microsoft Sentinel dall'elenco a discesa.
    2. Selezionare Debug per includere voci di log dettagliate.

    Screenshot che mostra il riquadro di output.

  2. I messaggi in linea nel notebook forniscono commenti e informazioni sull'esecuzione delle celle di codice. Questi messaggi includono gli aggiornamenti dello stato di esecuzione, gli indicatori di stato e le notifiche di errore correlate al codice nella cella precedente

  3. Un popup di notifica nell'angolo inferiore destro di Visual Studio Code, noto anche come messaggio di tipo avviso popup, fornisce avvisi e aggiornamenti in tempo reale sullo stato delle operazioni all'interno del notebook e della sessione spark. Queste notifiche includono messaggi, avvisi e avvisi di errore, ad esempio connessione riuscita a una sessione Spark e avvisi di timeout.

    Screenshot che mostra un messaggio di avviso popup e un messaggio di errore in linea.

Processi e pianificazione

È possibile pianificare l'esecuzione di processi in orari o intervalli specifici usando l'estensione Microsoft Sentinel per Visual Studio Code. I processi consentono di automatizzare le attività di elaborazione dati per riepilogare, trasformare o analizzare i dati nel data lake Microsoft Sentinel. I processi vengono usati anche per elaborare i dati e scrivere risultati in tabelle personalizzate nel livello data lake o nel livello di analisi. Per altre informazioni sulla creazione e la gestione dei processi, vedere Creare e gestire processi notebook di Jupyter.

Parametri e limiti del servizio per i notebook di VS Code

La sezione seguente elenca i parametri e i limiti del servizio per Microsoft Sentinel data lake quando si usano notebook di VS Code.

Categoria Parametro/limite
Tabella personalizzata nel livello di analisi Le tabelle personalizzate nel livello di analisi non possono essere eliminate da un notebook. Usare Log Analytics per eliminare queste tabelle. Per altre informazioni, vedere Aggiungere o eliminare tabelle e colonne nei log di monitoraggio Azure
Timeout del web socket del gateway 2 ore
Timeout delle query interattive 2 ore
Timeout interattivo dell'inattività della sessione 20 minuti
Lingua Python
Timeout query graph 7,5 minuti
Timeout processo notebook 8 ore
Numero massimo di processi di notebook simultanei 3, i processi successivi vengono accodati
Numero massimo di utenti simultanei nell'esecuzione di query interattive 8-10 in pool grande
Ora di avvio della sessione L'avvio della sessione di calcolo Spark richiede circa 5-6 minuti. È possibile visualizzare lo stato della sessione nella parte inferiore del blocco appunti di VS Code.
Librerie supportate Solo Azure Synapse librerie 3.4 e la libreria provider di Microsoft Sentinel per le funzioni astratte sono supportate per l'esecuzione di query sul data lake. Le installazioni pip o le librerie personalizzate non sono supportate.
Limite dell'esperienza utente di VS Code per visualizzare i record 100.000 righe

Risoluzione dei problemi

Per gli errori e le soluzioni comuni quando si usano i notebook, vedere Risolvere i problemi relativi ai notebook nel data lake Microsoft Sentinel.