Wijzigingen in incidenttaken controleren en bijhouden in Microsoft Sentinel in de Azure Portal

Incidenttaken zorgen voor een uitgebreide en uniforme behandeling van incidenten in alle SOC-medewerkers. Takenlijsten worden doorgaans gedefinieerd op basis van bepalingen van senior analisten of SOC-managers en in de praktijk gebracht met behulp van automatiseringsregels of playbooks.

Uw analisten kunnen de lijst met taken zien die ze moeten uitvoeren voor een bepaald incident op de pagina met incidentdetails en deze markeren als voltooid. Analisten kunnen ook hun eigen taken ter plaatse maken, handmatig, rechtstreeks vanuit het incident.

In dit artikel wordt uitgelegd hoe u als SOC-manager de geschiedenis van Microsoft Sentinel incidenttaken kunt controleren en de wijzigingen kunt bijhouden die tijdens hun levenscyclus zijn aangebracht, om de effectiviteit van uw taaktoewijzingen en hun bijdrage aan de efficiëntie en goede werking van uw SOC te meten.

Structuur van de array Tasks in de SecurityIncident-tabel

De tabel SecurityIncident is een audittabel. Hierin worden niet de incidenten zelf opgeslagen, maar records van de levensduur van een incident: het maken ervan en eventuele wijzigingen in het incident. Telkens wanneer er een incident wordt gemaakt of een wijziging wordt aangebracht in een incident, wordt in deze tabel een record gegenereerd met de huidige status van het incident.

De toevoeging van taakdetailvelden aan het schema van de SecurityIncident-tabel stelt je in staat om taken dieper te auditen.

De gedetailleerde informatie die aan het veld Taken wordt toegevoegd, bestaat uit sleutel-waardeparen met de volgende structuur:

Sleutel Waardebeschrijving
createdBy De identiteit die de taak heeft aangemaakt:
- e-mail: e-mailadres van identiteit
- naam: naam van de identiteit
- objectId: GUID van de identiteit
- userPrincipalName: UPN van de identiteit
createdTimeUtc Het tijdstip waarop de taak is gemaakt, in UTC.
lastCompletedTimeUtc Het tijdstip waarop de taak is gemarkeerd als voltooid, in UTC.
lastModifiedBy De identiteit die de taak voor het laatst heeft gewijzigd:
- e-mail: e-mailadres van identiteit
- naam: naam van de identiteit
- objectId: GUID van de identiteit
- userPrincipalName: UPN van de identiteit
lastModifiedTimeUtc Tijdstip waarop de taak voor het laatst is gewijzigd, in UTC.
Status Huidige status van de taak: Nieuw, Voltooid, Verwijderd.
Taskid Resource-ID van de taak.
Titel Gebruiksvriendelijke naam die door de maker aan de taak is gegeven.

Incidenttaken weergeven in de tabel SecurityIncident

Afgezien van de werkmap Incidenttaken kunt u taakactiviteit controleren door een query uit te voeren op de tabel SecurityIncident in Logboeken. Deze sectie laat zien hoe je de tabel kunt opvragen en de resultaten kunt lezen en begrijpen om informatie over taakactiviteit te verkrijgen.

  1. Voer op de pagina Logboeken de volgende query in het queryvenster in en voer deze uit. Met deze query worden alle incidenten geretourneerd waaraan taken zijn toegewezen.

    SecurityIncident
    | where array_length( Tasks) > 0
    

    U kunt een willekeurig aantal instructies toevoegen aan de query om de resultaten te filteren en te verfijnen. Om te laten zien hoe u de resultaten kunt bekijken en begrijpen, voegen we instructies toe om de resultaten te filteren, zodat we alleen de taken voor één incident zien. We voegen ook een project -instructie toe, zodat we alleen de velden zien die nuttig zijn voor onze doeleinden, zonder veel rommel.

    Zie Kusto-querytaal overzicht voor meer informatie.

    SecurityIncident
    | where array_length( Tasks) > 0
    | where IncidentNumber == "405211"
    | sort by LastModifiedTime desc 
    | project IncidentName, Title, LastModifiedTime, Tasks
    
  2. Laten we eens kijken naar de meest recente record voor dit incident en de lijst met taken die eraan zijn gekoppeld.

    1. Selecteer de uitvouwknop naast de bovenste rij in de queryresultaten (die zijn gesorteerd van meest recent naar minst recent).

      Schermopname van queryresultaten met een incident met de bijbehorende taken.

    2. Het veld Taken is een matrix van de huidige status van alle taken in dit incident. Selecteer het uitvouwprogramma om elk item in de matrix in een eigen rij weer te geven.

      Schermopname van queryresultaten met een incident met de bijbehorende taken uitgevouwen.

    3. U ziet nu dat dit incident twee taken bevat. Elke matrix wordt op zijn beurt vertegenwoordigd door een uitbreidbare matrix. Selecteer de uitklappijl van een taak om de informatie ervan weer te geven.

      Schermopname van queryresultaten met een incident met één taak uitgevouwen.

    4. Hier ziet u de details voor de eerste taak in de matrix (0 is de indexpositie van de taak in de matrix). In het titelveld wordt de naam van de taak weergegeven zoals weergegeven in het incident.

Taken weergeven die zijn toegevoegd aan de lijst

Voer de volgende stappen uit om een taak toe te voegen aan een incident en observeer hoe het SecurityIncident-record verandert.

  1. Laten we een taak toevoegen aan het incident. Vervolgens komen we hier terug, voeren we de query opnieuw uit en zien we de wijzigingen in de resultaten.

    1. Voer op de pagina Incidenten het nummer van de incident-id in de zoekbalk in.

    2. Open de pagina met details van het incident en selecteer Taken op de werkbalk.

    3. Voeg een nieuwe taak toe, geef deze de naam 'Deze taak is een testtaak!' en selecteer vervolgens Opslaan. De laatste taak die hieronder wordt weergegeven, is wat u zou moeten doen:

      De schermafbeelding toont het deelvenster met incidenttaken.

  2. Laten we nu terugkeren naar de Logs-pagina en de SecurityIncident-query opnieuw uitvoeren.

    In de resultaten ziet u dat er een nieuwe record in de tabel is voor hetzelfde incident (let op de tijdstempels). Vouw de record uit en u ziet dat de record die we eerder hebben gezien twee taken had in de matrix Taken , maar dat de nieuwe er drie heeft. De nieuwste taak is de taak die we zojuist hebben toegevoegd, zoals u kunt zien aan de titel.

    Schermopname van queryresultaten met een incident met de nieuw aangemaakte taak.

Statuswijzigingen in taken weergeven

Als we nu teruggaan naar de taak met de naam 'Deze taak is een testtaak!' op de pagina met incidentdetails en deze als voltooid markeren en vervolgens terugkeren naar logboeken en de query opnieuw uitvoeren, zien we nog een nieuwe record voor hetzelfde incident, deze keer met de nieuwe status van onze taak als Voltooid.

Schermopname van queryresultaten met een incidenttaak met de nieuwe status.

Verwijdering van taken weergeven

We gaan terug naar de takenlijst op de pagina met incidentdetails en verwijderen de taak met de titel 'Deze taak is een testtaak!'.

Wanneer we teruggaan naar Logs en de incident-taakquery opnieuw uitvoeren, zien we een nieuw record, maar dit keer de status van onze taak—die met de titel "Deze taak is een testtaak!" —zal worden verwijderd.

Zodra de taak echter eenmaal in de matrix is weergegeven (met de status Verwijderd ), wordt deze niet meer weergegeven in de matrix Taken in nieuwe records voor dat incident in de tabel SecurityIncident . Bestaande eerdere verslagen van het incident zullen het bewijs blijven bewaren dat deze taak ooit bestond.

Actieve taken van een gesloten incident weergeven

Met de volgende query kunt u zien of een incident is gesloten, maar niet alle toegewezen taken zijn voltooid. Deze kennis kan u helpen te controleren of eventuele resterende losse eindjes in uw onderzoek tot een conclusie zijn gebracht: alle relevante partijen zijn op de hoogte gesteld, alle opmerkingen zijn ingevoerd, alle antwoorden zijn geverifieerd, enzovoort. De query gebruikt de arg_max aggregatiefunctie om alleen het meest recente record voor elk incident en voor elke taak terug te geven, zodat de resultaten de laatste status weerspiegelen.

Voer de volgende query uit om het meest recente record voor elk incident op te halen, filter op gesloten incidenten en geef taken terug die nog niet zijn voltooid of verwijderd:

SecurityIncident
| summarize arg_max(TimeGenerated, *) by IncidentNumber
| where Status == 'Closed'
| mv-expand Tasks
| evaluate bag_unpack(Tasks)
| summarize arg_max(lastModifiedTimeUtc, *) by taskId
| where status !in ('Completed', 'Deleted')
| project TaskTitle = ['title'], TaskStatus = ['status'], createdTimeUtc, lastModifiedTimeUtc = column_ifexists("lastModifiedTimeUtc", datetime(null)), TaskCreator = ['createdBy'].name, lastModifiedBy, IncidentNumber, IncidentOwner = Owner.userPrincipalName
| sort by lastModifiedTimeUtc desc

Voor meer informatie over de Kusto-operatoren en functies die in de voorbeeldqueries in dit artikel worden gebruikt, zie:

Zie overzicht van Kusto-querytaal (KQL) voor meer informatie over KQL.

Andere bronnen:

Volgende stappen