Sdílet prostřednictvím


Auditování a sledování změn úkolů incidentů v Microsoft Sentinelu

Úkoly incidentů zajišťují komplexní a jednotné zacházení s incidenty napříč všemi pracovníky SOC. Seznamy úkolů se obvykle definují podle rozhodnutí vedoucích analytiků nebo manažerů SOC a používají pravidla automatizace nebo playbooky.

Vaši analytici můžou zobrazit seznam úkolů, které potřebují k provedení konkrétního incidentu, na stránce s podrobnostmi incidentu a označit je jako dokončené. Analytici také můžou vytvářet vlastní úkoly na místě ručně přímo z incidentu.

Tento článek vysvětluje, jak můžete jako manažer SOC auditovat historii úkolů incidentů Microsoft Sentinelu a sledovat změny provedené v průběhu jejich životního cyklu, abyste mohli posoudit účinnost přiřazení úkolů a jejich příspěvek k efektivitě a správnému fungování SOC.

Struktura pole Tasks v tabulce SecurityIncident

Tabulka SecurityIncident je tabulka auditu – neukládají se samotné incidenty, ale spíše záznamy o životě incidentu: jeho vytvoření a všechny změny provedené v incidentu. Kdykoli se incident vytvoří nebo dojde ke změně incidentu, vygeneruje se v této tabulce záznam zobrazující aktuální stav incidentu.

Přidání podrobností o úkolech do schématu této tabulky umožňuje provádět auditování úkolů podrobněji.

Podrobné informace přidané do pole Úkoly se skládají z párů klíč-hodnota s následující strukturou:

Key Popis hodnoty
createdBy Identita, která vytvořila úlohu:
- e-mail: e-mailová adresa identity
- name: název identity
- objectId: GUID identity
- userPrincipalName: hlavní název uživatele (UPN) identity
createdTimeUtc Čas vytvoření úkolu v UTC
lastCompletedTimeUtc Čas, kdy byl úkol označen jako dokončený, v UTC.
lastModifiedBy Identita, která naposledy změnila úlohu:
- e-mail: e-mailová adresa identity
- name: název identity
- objectId: GUID identity
- userPrincipalName: hlavní název uživatele (UPN) identity
lastModifiedTimeUtc Čas poslední změny úkolu v UTC
status Aktuální stav úkolu: Nový, Dokončeno, Odstraněno.
Taskid ID zdroje úkolu.
title Popisný název přidělený úkolu jeho tvůrcem

Zobrazení úkolů incidentů v tabulce SecurityIncident

Kromě sešitu úkolů incidentů můžete auditovat aktivitu úkolů dotazováním tabulky SecurityIncident v protokolech. Ve zbývající části tohoto článku se dozvíte, jak to udělat, a také jak číst a porozumět výsledkům dotazu, abyste získali informace o aktivitě úkolů.

  1. Na stránce Protokoly zadejte do okna dotazu následující dotaz a spusťte ho. Tento dotaz vrátí všechny incidenty, které mají přiřazené všechny úkoly.

    SecurityIncident
    | where array_length( Tasks) > 0
    

    Do dotazu můžete přidat libovolný počet příkazů pro filtrování a zúžení výsledků. Abychom ukázali, jak zobrazit a pochopit výsledky, přidáme příkazy pro filtrování výsledků tak, abychom viděli jenom úkoly pro jeden incident, a také přidáme project příkaz, abychom viděli jenom ta pole, která budou užitečná pro naše účely, bez velkého množství nepotřebných informací.

    Přečtěte si další informace o používání dotazovací jazyk Kusto.

    SecurityIncident
    | where array_length( Tasks) > 0
    | where IncidentNumber == "405211"
    | sort by LastModifiedTime desc 
    | project IncidentName, Title, LastModifiedTime, Tasks
    
  2. Pojďme se podívat na nejnovější záznam tohoto incidentu a najít seznam úkolů přidružených k tomuto incidentu.

    1. Ve výsledcích dotazu vyberte rozbalovací modul vedle horního řádku (které byly seřazeny sestupně podle pořadí recence).

      Screenshot of query results showing an incident with its tasks.

    2. Pole Úkoly je pole aktuálního stavu všech úkolů v tomto incidentu. Výběrem rozbalovače zobrazíte každou položku v poli ve vlastním řádku.

      Screenshot of query results showing an incident with its tasks expanded.

    3. Teď vidíte, že v tomto incidentu jsou dva úkoly. Každý z nich je zase reprezentován rozbalitelným polem. Výběrem rozbalovače jednoho úkolu zobrazíte jeho informace.

      Screenshot of query results showing an incident with a single task expanded.

    4. Tady vidíte podrobnosti pro první úkol v poli (0 je pozice indexu úkolu v poli). Pole nadpisu zobrazuje název úkolu zobrazený v incidentu.

Zobrazení úkolů přidaných do seznamu

  1. Pojďme k incidentu přidat úkol a pak se sem vrátíme, znovu spustíme dotaz a uvidíme změny ve výsledcích.

    1. Na stránce Incidenty zadejte na panelu hledání číslo ID incidentu.

    2. Otevřete stránku s podrobnostmi incidentu a na panelu nástrojů vyberte Úkoly .

    3. Přidejte nový úkol, pojmenujte ho "Tento úkol je testovací úkol!", a pak vyberte Uložit. Poslední úkol, který je zobrazený níže, je to, co byste měli mít na konci:

      Screenshot shows incident tasks panel.

  2. Teď se vraťme na stránku Protokoly a spusťte náš dotaz znovu.

    Ve výsledcích uvidíte, že v tabulce pro tento stejný incident existuje nový záznam (všimněte si časových razítek). Rozbalte záznam a uvidíte, že zatímco záznam, který jsme viděli dříve, měl v poli Úkoly dva úkoly, nový záznam má tři. Nejnovější úkol je ten, který jsme právě přidali, jak vidíte podle názvu.

    Screenshot of query results showing an incident with its newly created task.

Zobrazení změn stavu úkolů

Když se teď vrátíme k tomuto novému úkolu na stránce s podrobnostmi incidentu a označíme ho jako dokončené, vrátíme se k protokolům a znovu spustíme dotaz, uvidíme další nový záznam pro stejný incident, tentokrát se zobrazí nový stav úkolu jako Dokončeno.

Screenshot of query results showing an incident task with its new status.

Zobrazení odstranění úkolů

Vraťme se na seznam úkolů na stránce s podrobnostmi incidentu a odstraňme úkol, který jsme přidali dříve.

Když se vrátíme k protokolům a znovu spustíme dotaz, uvidíme další nový záznam, jenom tentokrát stav úkolu – ten s názvem "Tento úkol je testovací úkol!". – bude odstraněna.

Jakmile se však úkol zobrazí v poli (se stavem Odstraněno), nebude se už v poli Úkoly zobrazovat v nových záznamech pro daný incident v tabulce SecurityIncident. Existující záznamy, podobně jako ty, které jsme viděli výše, budou i nadále uchovávat důkazy o tom, že tento úkol existoval dříve.

Zobrazení aktivních úkolů patřících k uzavřenému incidentu

Následující dotaz umožňuje zjistit, jestli byl incident zavřený, ale ne všechny jeho přiřazené úkoly byly dokončeny. Tato znalost vám může pomoct ověřit, že všechny zbývající volné konce vašeho šetření byly předloženy závěru – všechny relevantní strany byly oznámeny, všechny komentáře byly zadány, všechny odpovědi byly ověřeny atd.

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
| order by lastModifiedTimeUtc desc

Další kroky