Delen via


Notebooks uitvoeren op de Data Lake van Microsoft Sentinel

Jupyter-notebooks bieden een interactieve omgeving voor het verkennen, analyseren en visualiseren van gegevens in de Data Lake van Microsoft Sentinel. Met notebooks kunt u code schrijven en uitvoeren, uw werkstroom documenteren en resultaten weergeven, allemaal op één plaats. Dit maakt het eenvoudig om gegevensverkenning uit te voeren, geavanceerde analyseoplossingen te bouwen en inzichten met anderen te delen. Met behulp van Python en Apache Spark in Visual Studio Code kunt u met notebooks onbewerkte beveiligingsgegevens transformeren in bruikbare intelligentie.

In dit artikel leest u hoe u data lake-gegevens verkent en gebruikt met behulp van Jupyter-notebooks in Visual Studio Code.

Vereiste voorwaarden

Onboarden in Microsoft Sentinel data lake

Als u notebooks wilt gebruiken in de Data Lake van Microsoft Sentinel, moet u eerst onboarden naar de data lake. Zie Onboarding naar Microsoft Sentinel data lake als u nog geen onboarding hebt gemaakt naar de Sentinel-data lake. Als u onlangs bent aangesloten op de data lake, kan het enige tijd duren voordat er een voldoende hoeveelheid gegevens is opgenomen om zinvolle analyses te maken met behulp van notebooks.

Machtigingen

Microsoft Entra ID-rollen bieden brede toegang tot alle werkruimten in de data lake. U kunt ook toegang verlenen tot afzonderlijke werkruimten met behulp van Azure RBAC-rollen. Gebruikers met Azure RBAC-machtigingen voor Microsoft Sentinel-werkruimten kunnen notebooks uitvoeren op die werkruimten in de data lake-laag. Zie voor meer informatie Rollen en machtigingen in Microsoft Sentinel.

Als u nieuwe aangepaste tabellen wilt maken in de analyselaag, moet de door Data Lake beheerde identiteit de rol Log Analytics-inzender in de Log Analytics-werkruimte worden toegewezen.

Volg de onderstaande stappen om de rol toe te wijzen:

  1. Navigeer in Azure Portal naar de Log Analytics-werkruimte waaraan u de rol wilt toewijzen.
  2. Selecteer Toegangsbeheer (IAM) in het linkernavigatiedeelvenster.
  3. Selecteer Roltoewijzing toevoegen.
  4. In de tabel Rol selecteer Log Analytics-inzender, en selecteer vervolgens Volgende
  5. Selecteer Beheerde identiteit en selecteer vervolgens Leden selecteren.
  6. Uw door Data Lake beheerde identiteit is een door het systeem toegewezen beheerde identiteit met de naam msg-resources-<guid>. Selecteer de beheerde identiteit en selecteer Vervolgens Selecteren.
  7. Selecteer Controleren en toewijzen.

Zie Azure-rollen toewijzen met behulp van Azure Portal voor meer informatie over het toewijzen van rollen aan beheerde identiteiten.

Visual Studio Code en de Microsoft Sentinel-extensie installeren

Als u Visual Studio Code nog niet hebt, downloadt en installeert u Visual Studio Code voor Mac, Linux of Windows.

De Microsoft Sentinel-extensie voor Visual Studio Code (VS Code) wordt geïnstalleerd vanuit de marketplace voor extensies. Voer de volgende stappen uit om de extensie te installeren:

  1. Selecteer de Extensies Marketplace in de linker werkbalk.
  2. Zoek naar Sentinel.
  3. Selecteer de Microsoft Sentinel-extensie en selecteer Installeren.
  4. Nadat de extensie is geïnstalleerd, wordt het microsoft Sentinel-schildpictogram weergegeven in de linkerwerkbalk.

Een schermopname van de markt voor extensies.

Installeer de GitHub Copilot-extensie voor Visual Studio Code om codevoltooiing en suggesties in notebooks in te schakelen.

  1. Zoek naar GitHub Copilot in de Extensions Marketplace en installeer deze.
  2. Meld u na de installatie aan bij GitHub Copilot met uw GitHub-account.

Data lake-niveautabellen verkennen

Nadat u de Microsoft Sentinel-extensie hebt geïnstalleerd, kunt u tabellen in data lake-lagen verkennen en Jupyter-notebooks maken om de gegevens te analyseren.

Aanmelden bij de Microsoft Sentinel-extensie

  1. Selecteer het microsoft Sentinel-schildpictogram in de linkerwerkbalk.

  2. Er wordt een dialoogvenster weergegeven met de volgende tekst de extensie 'Microsoft Sentinel' wil zich aanmelden met Microsoft. Klik op Toestaan.

    Een schermopname van het aanmeldingsdialoogvenster.

  3. Selecteer uw accountnaam om de aanmelding te voltooien.

    Een schermopname van de lijst met accountselectie boven aan de pagina.

Data Lake-tabellen en -taken weergeven

Nadat u zich hebt aangemeld, wordt in de Sentinel-extensie een lijst met Lake-tabellen en taken weergegeven in het linkerdeelvenster. De tabellen worden gegroepeerd op de database en categorie. Selecteer een tabel om de kolomdefinities weer te geven.

Zie Taken en planning voor meer informatie over taken.

Een schermopname van de lijst met tabellen, taken en de metagegevens van de geselecteerde tabel.

Een nieuwe notebook maken

  1. Als u een nieuw notitieblok wilt maken, gebruikt u een van de volgende methoden.

  2. Voer > in het zoekvak in of druk op Ctrl+Shift+P en voer vervolgens Nieuw Jupyter-notitieblok maken in. Een schermopname die laat zien hoe u een nieuw notitieblok maakt op basis van de zoekbalk.

  3. Selecteer Bestand > nieuw bestand en selecteer vervolgens Jupyter Notebook in de vervolgkeuzelijst.
    Een schermopname waarin wordt getoond hoe u een nieuw notitieblok maakt in het menu Bestand.

  4. Plak in het nieuwe notitieblok de volgende code in de eerste cel.

    from sentinel_lake.providers import MicrosoftSentinelProvider
    data_provider = MicrosoftSentinelProvider(spark)
    
    table_name = "EntraGroups"  
    df = data_provider.read_table(table_name)  
    df.select("displayName", "groupTypes", "mail", "mailNickname", "description", "tenantId").show(100,   truncate=False)  
    

De editor biedt intellisense-codevoltooiing voor zowel de MicrosoftSentinelProvider klasse- als de tabelnamen in de data lake.

  1. Selecteer het driehoekje Uitvoeren om de code in het notebook uit te voeren. De resultaten worden weergegeven in het uitvoervenster onder de codecel.
    Een schermopname die laat zien hoe u een notebookcel uitvoert.

  2. Selecteer Microsoft Sentinel in de lijst voor een lijst met runtimepools. Een schermopname van de runtime-kiezer.

  3. Selecteer Gemiddeld om het notebook uit te voeren in de middelgrote runtime-pool. Zie De juiste Microsoft Sentinel-runtime selecteren voor meer informatie over de verschillende runtimes. Een schermopname van de kiezer voor de grootte van de run-pool.

Opmerking

Als u de kernel selecteert, wordt de Spark-sessie gestart en wordt de code in het notebook uitgevoerd. Nadat u de pool hebt geselecteerd, kan het 3-5 minuten duren voordat de sessie wordt gestart. Volgende uitvoeringen worden sneller uitgevoerd omdat de sessie al actief is.

Wanneer de sessie wordt gestart, wordt de code in het notebook uitgevoerd en worden de resultaten weergegeven in het uitvoervenster onder de codecel, bijvoorbeeld: Een schermopname met de resultaten van het uitvoeren van een notebookcel.

Zie Voorbeeldnotebooks voor Microsoft Sentinel data lake voor voorbeeldnotebooks die laten zien hoe u kunt communiceren met microsoft Sentinel Data Lake.

Statusbalk

De statusbalk onder aan het notebook bevat informatie over de huidige status van het notebook en de Spark-sessie. De statusbalk bevat de volgende informatie:

  • Het vCore-gebruikspercentage voor de geselecteerde Spark-pool. Beweeg de muisaanwijzer over het percentage om het aantal gebruikte vCores en het totale aantal beschikbare vCores in de pool weer te geven. De percentages vertegenwoordigen het huidige gebruik van interactieve en job workloads voor het aangemelde account.

  • De verbindingsstatus van de Spark-sessie, bijvoorbeeld Connecting, Connectedof Not Connected.

Een schermopname van de statusbalk onder aan het notitieblok.

Sessie-timeouts instellen

U kunt de time-out- en time-outwaarschuwingen voor sessies instellen voor interactieve notitieblokken. Als u de time-out wilt wijzigen, selecteert u de verbindingsstatus op de statusbalk onder aan het notitieblok. Kies uit de volgende opties:

  • Time-outperiode voor sessie instellen: hiermee stelt u de tijd in minuten in voordat er een time-out optreedt voor de sessie. De standaardwaarde is 30 minuten.

  • Time-outperiode van sessie opnieuw instellen: hiermee wordt de time-out van de sessie teruggezet op de standaardwaarde van 30 minuten.

  • Waarschuwingsperiode voor sessietime-out instellen: Hiermee stelt u de tijd in minuten vóór de time-out in dat er een waarschuwing wordt weergegeven dat er een time-out optreedt voor de sessie. De standaardwaarde is vijf minuten.

  • Time-outperiode van sessie opnieuw instellen: hiermee wordt de time-outwaarschuwing voor de sessie opnieuw ingesteld op de standaardwaarde van 5 minuten.

    Een schermopname van de time-outinstelling van de sessie.

GitHub Copilot gebruiken in notebooks

Gebruik GitHub Copilot om u te helpen code te schrijven in notebooks. GitHub Copilot biedt codesuggesties en automatisch aanvullen op basis van de context van uw code. Als u GitHub Copilot wilt gebruiken, moet u ervoor zorgen dat de GitHub Copilot-extensie is geïnstalleerd in Visual Studio Code.

Kopieer code uit de voorbeeldnotebooks voor Microsoft Sentinel data lake en sla deze op in de map notebooks om context te bieden voor GitHub Copilot. GitHub Copilot kan vervolgens codevoltooiingen voorstellen op basis van de context van uw notebook.

In het volgende voorbeeld genereert GitHub Copilot een codebeoordeling.

Een schermopname van GitHub Copilot die een codebeoordeling genereert.

Microsoft Sentinel Provider-klasse

Gebruik de SentinelLakeProvider klasse om verbinding te maken met de Data Lake van Microsoft Sentinel. Deze klasse maakt deel uit van de access_module.data_loader module en biedt methoden voor interactie met de data lake. Als u deze klasse wilt gebruiken, importeert u deze en maakt u een exemplaar van de klasse met behulp van een spark sessie.

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

Zie de klasseverwijzing microsoft Sentinel Provider voor meer informatie over de beschikbare methoden.

Selecteer de juiste runtimepool

Er zijn drie runtimepools beschikbaar om uw Jupyter-notebooks uit te voeren in de Microsoft Sentinel-extensie. Elke pool is ontworpen voor verschillende workloads en prestatievereisten. De keuze van runtimepool is van invloed op de prestaties, kosten en uitvoeringstijd van uw Spark-taken.

Runtimepool Aanbevolen gebruiksvoorbeelden Kenmerken
Small Ontwikkelings-, test- en eenvoudige verkennende analyse.
Kleine workloads met eenvoudige transformaties.
Kostenefficiëntie prioriteit gegeven.
Geschikt voor kleine workloads
Eenvoudige transformaties.
Lagere kosten, langere uitvoeringstijd.
Gemiddeld ETL-taken met gegevenskoppelingen, aggregaties en ML-modeltraining.
Werkbelastingen matigen met complexe transformaties.
Verbeterde prestaties ten opzichte van Small.
Verwerkt parallelle uitvoering en gemiddelde geheugenintensieve bewerkingen.
Grote Deep Learning- en ML-workloads.
Uitgebreide gegevensverplaatsing, grote koppelingen of realtime verwerking.
Kritieke uitvoeringstijd.
Hoge geheugen- en rekenkracht.
Minimale vertragingen.
Geschikt voor grote, complexe of tijdgevoelige workloads.

Opmerking

Wanneer de kernelopties voor het eerst worden geopend, kan het ongeveer 30 seconden duren om te laden.
Nadat u een runtime-pool hebt geselecteerd, kan het 3 tot 5 minuten duren voordat de sessie is gestart.

Berichten, logboeken en fouten weergeven

Berichtenlogboeken en foutberichten worden weergegeven in drie gebieden in Visual Studio Code.

  1. Het deelvenster Uitvoer.

    1. Selecteer Microsoft Sentinel in de vervolgkeuzelijst in het deelvenster Uitvoer.
    2. Selecteer Fouten opsporen om gedetailleerde logboekvermeldingen op te nemen.

    Een schermopname van het uitvoervenster.

  2. Inline berichten in het notebook geven feedback en informatie over de uitvoering van codecellen. Deze berichten omvatten uitvoeringsstatusupdates, voortgangsindicatoren en foutmeldingen met betrekking tot de code in de voorgaande cel

  3. Een notificatie-pop-up in de rechterbenedenhoek van Visual Studio Code, ook wel een toast-bericht genoemd, biedt realtime waarschuwingen en updates over de status van bewerkingen in het notebook en de Spark-sessie. Deze meldingen omvatten berichten, waarschuwingen en foutwaarschuwingen, zoals een geslaagde verbinding met een Spark-sessie en time-outwaarschuwingen.

    Een schermopname met een toastbericht en een inline foutbericht.

Taken en planning

U kunt taken plannen om op specifieke tijdstippen of intervallen uit te voeren met behulp van de Microsoft Sentinel-extensie voor Visual Studio Code. Met taken kunt u gegevensverwerkingstaken automatiseren om gegevens samen te vatten, te transformeren of te analyseren in de Data Lake van Microsoft Sentinel. Taken worden ook gebruikt voor het verwerken van gegevens en het schrijven van resultaten naar aangepaste tabellen in de data lake-laag of analyselaag. Zie Jupyter-notebooktaken maken en beheren voor meer informatie over het maken en beheren van taken.

Serviceparameters en -limieten voor VS Code Notebooks

In de volgende sectie vindt u de serviceparameters en -limieten voor Microsoft Sentinel Data Lake wanneer u VS Code Notebooks gebruikt.

Categorie Parameter/limiet
Aangepaste tabel in de analyselaag Aangepaste tabellen in de analyselaag kunnen niet worden verwijderd uit een notebook; Gebruik Log Analytics om deze tabellen te verwijderen. Zie Tabellen en kolommen toevoegen of verwijderen in Azure Monitor-logboeken voor meer informatie
Time-out van gatewaywebsocket 2 uur
Time-out voor interactieve queries 2 uur
Time-out voor inactiviteit van interactieve sessie 20 minuten
Taal Python
Time-out voor notebooktaak 8 uur
Maximale gelijktijdige notebookopdrachten 3, volgende taken worden in de wachtrij geplaatst
Maximum aantal gelijktijdige gebruikers bij interactieve queries 8-10 op groot zwembad
Opstarttijd van sessie Het duurt ongeveer 5-6 minuten om de Spark-rekensessie te starten. U kunt de status van de sessie onder aan uw VS Code Notebook bekijken.
Ondersteunde bibliotheken Alleen Azure Synapse-bibliotheken 3.4 en de Microsoft Sentinel Provider-bibliotheek voor abstracte functies worden ondersteund voor het uitvoeren van query's op de data lake. Pip-installaties of aangepaste bibliotheken worden niet ondersteund.
VS Code UX-limiet voor het weergeven van records 100.000 rijen

Probleemoplossingsproces

De volgende tabel bevat veelvoorkomende fouten die kunnen optreden bij het werken met notebooks, de hoofdoorzaken en voorgestelde acties om ze op te lossen.

Foutcategorie Foutnaam Foutcode Foutmelding Voorgestelde actie
DatabaseError DatabaseNotFound 2001 Database {DatabaseName} is niet gevonden. Controleer of de database bestaat. Als de database nieuw is, wacht u totdat de metagegevens worden vernieuwd.
DatabaseError AmbiguousDatabaseName 2002 Verschillende databases (id's: {DatabaseID1}, {DatabaseID2}, ...) delen de naam {DatabaseName}. Geef een specifieke database-id op. Geef een database-id op wanneer meerdere databases dezelfde naam hebben.
DatabaseError DatabaseIdMismatch 2003 De database ({DatabaseName}, id {DatabaseID}) is niet gevonden. Controleer zowel de databasenaam als de id. Als u database-id's wilt ophalen, vermeldt u alle databases.
DatabaseError ListDatabasesFailure 2004 Databases kunnen niet worden opgehaald. Start de sessie opnieuw en probeer het opnieuw. Start de sessie opnieuw en voer de bewerking na een paar minuten opnieuw uit.
TabelFout TabelBestaatNiet 2100 Tabel {TableName} is niet gevonden in de database {DatabaseName}. Controleer of de tabel in de database bestaat. Als de tabel of database nieuw is, wacht u enkele minuten en probeert u het opnieuw.
TabelFout InrichtingOnvolledig 2101 Tabel {TableName} is niet gereed. Wacht enkele minuten voordat u het opnieuw probeert. De tabel wordt geprovisioneerd. Wacht enkele minuten voordat u het opnieuw probeert.
TabelFout DeltaTableMissing 2102 Tabel {TableName} is leeg. Het kan enkele uren duren voordat nieuwe tabellen gereed zijn. Het kan enkele uren duren voordat een analysetabel volledig is gesynchroniseerd in de Data Lake. Voor tabellen die zich alleen in de data lake bevinden, controleert u of de gegevens moeten worden geladen of hersteld.
TabelFout TabelBestaatNietVoorVerwijderen 2103 Kan tabel niet verwijderen. Tabel {TableName} is niet gevonden. Controleer of de tabel in de database bestaat. Als de tabel of database nieuw is, wacht u enkele minuten en probeert u het opnieuw.
Autorisatiefout MissingSASToken 2201 Kan geen toegang krijgen tot de tabel. Start de sessie opnieuw en probeer het opnieuw. Autorisatie is mislukt tijdens het ophalen van het toegangstoken voor de tabel. Start de sessie opnieuw en probeer het opnieuw.
Autorisatiefout InvalidSASToken 2202 Kan geen toegang krijgen tot de tabel. Start de sessie opnieuw en probeer het opnieuw. Autorisatie is mislukt tijdens het ophalen van het toegangstoken voor de tabel. Start de sessie opnieuw en probeer het opnieuw.
Autorisatiefout TokenVerlopen 2203 Kan geen toegang krijgen tot de tabel. Start de sessie opnieuw en probeer het opnieuw. Autorisatie is mislukt tijdens het ophalen van het toegangstoken voor de tabel. Start de sessie opnieuw en probeer het opnieuw.
Autorisatiefout TabelOnvoldoendeRechten 2204 Toegang nodig voor de tabel {TableName} in de database {DatabaseName}. Neem contact op met een beheerder om toegang tot de tabel of de database (werkruimte) aan te vragen.
Autorisatiefout InternalTableAccessDenied 2205 Toegang tot de tabel {TableName} is beperkt. Alleen door het systeem of door de gebruiker gedefinieerde tabellen kunnen worden geopend vanuit een notebook.
Autorisatiefout TabelAuthenticatieFout 2206 Kan geen gegevens opslaan in de tabel. Start de sessie opnieuw en probeer het opnieuw. Autorisatie is mislukt tijdens het opslaan van gegevens in de tabel. Start de sessie opnieuw en probeer het opnieuw.
ConfigurationError HadoopConfiguratieFout (HadoopConfigFailure) 2301 Kan sessieconfiguratie niet bijwerken. Start de sessie opnieuw en probeer het opnieuw. Dit probleem is tijdelijk en kan worden opgelost door de sessie opnieuw te starten en het opnieuw te proberen. Als dit probleem zich blijft voordoen, neemt u contact op met de ondersteuning.
DataError JsonParsingFout 2302 Tabelmetagegevens zijn beschadigd. Neem contact op met de ondersteuning voor hulp. Neem contact op met de ondersteuning voor hulp. Geef uw tenant-id, de tabelnaam en de databasenaam op.
TableSchemaError TabelSchemaOnwaarschijnlijkheid 2401 De kolom is niet gevonden in de doeltabel. Lijn het DataFrame-schema en de doeltabel uit of gebruik de overschrijfmodus. Werk het DataFrame-schema bij zodat het overeenkomt met de tabel in uw doeldatabase. U kunt de tabel ook volledig vervangen in de overschrijfmodus.
TableSchemaError OntbrekendeVereisteKolommen 2402 Kolom {ColumnName} ontbreekt in het DataFrame. Controleer het DataFrame-schema en lijn het uit met de doeltabel. Werk het DataFrame-schema bij zodat het overeenkomt met de tabel in uw doeldatabase. U kunt de tabel ook volledig vervangen in de overschrijfmodus.
TableSchemaError KolomTypeWijzigingNietToegestaan 2403 Het gegevenstype van de kolom {ColumnName} kan niet worden gewijzigd. Een wijziging van het gegevenstype is niet toegestaan voor de kolom. Controleer bestaande kolommen in de doeltabel en lijn alle gegevenstypen in het DataFrame uit.
TableSchemaError Wijziging van null-okbaarheid voor kolommen niet toegestaan 2404 Kan de null-waarde van de kolom {ColumnName} niet wijzigen. Kan de null-instellingen van de kolom niet bijwerken. Controleer de doeltabel en lijn de instellingen uit met het DataFrame.
Invoerfout FolderCreationFailure 2501 Kan geen opslag maken voor de tabel {TableName}. Dit probleem is tijdelijk en kan worden opgelost door de sessie opnieuw te starten en het opnieuw te proberen. Als dit probleem zich blijft voordoen, neemt u contact op met de ondersteuning.
Invoerfout SubJobAanvraagFout 2502 Kan geen invoertaak maken voor de tabel {TableName}. Dit probleem is tijdelijk en kan worden opgelost door de sessie opnieuw te starten en het opnieuw te proberen. Als dit probleem zich blijft voordoen, neemt u contact op met de ondersteuning.
Invoerfout SubTaakCreatieMislukking 2503 Kan geen invoertaak maken voor de tabel {TableName}. Dit probleem is tijdelijk en kan worden opgelost door de sessie opnieuw te starten en het opnieuw te proberen. Als dit probleem zich blijft voordoen, neemt u contact op met de ondersteuning.
InputError OngeldigeSchrijfmodus 2601 Ongeldige schrijfmodus. Gebruik 'append' of 'overschrijven'. Geef een geldige schrijfmodus op (toevoegen of overschrijven) voordat u het DataFrame opslaat.
InputError PartitioneringNietToegestaan 2602 Kan geen analysetabellen partitioneren. Verwijder partitionering voor alle kolommen in analysetabellen.
InputError MissingTableSuffixLake 2603 Ongeldige aangepaste tabelnaam. Alle namen van aangepaste tabellen in de data lake moeten eindigen op _SPRK. Voeg _SPRK toe als achtervoegsel aan de tabelnaam voordat u deze naar de data lake schrijft.
InputError MissingTableSuffixLA 2604 Ongeldige aangepaste tabelnaam. Alle namen van aangepaste analysetabellen moeten eindigen op _SPRK_CL. Voeg _SPRK_CL toe als achtervoegsel aan de tabelnaam voordat u deze naar de analyseopslag schrijft.
OnbekendeFout Interne ServerFout 2901 Er is iets verkeerd gegaan. Start de sessie opnieuw en probeer het opnieuw. Dit probleem is tijdelijk en kan worden opgelost door de sessie opnieuw te starten en het opnieuw te proberen. Als dit probleem zich blijft voordoen, neemt u contact op met de ondersteuning.