Inspekcja i śledzenie zmian zadań zdarzeń w usłudze Microsoft Sentinel
Zadania incydentów zapewniają kompleksowe i jednolite traktowanie zdarzeń we wszystkich personelach SOC. Listy zadań są zwykle definiowane zgodnie z ustaleniami wykonanymi przez starszych analityków lub menedżerów SOC i wdrażane w praktyce przy użyciu reguł automatyzacji lub podręczników.
Analitycy mogą zobaczyć listę zadań, które muszą wykonać dla określonego zdarzenia na stronie szczegółów zdarzenia, i oznaczyć je jako ukończone w miarę ich działania. Analitycy mogą również tworzyć własne zadania na miejscu, ręcznie, bezpośrednio z poziomu incydentu.
W tym artykule wyjaśniono, jak menedżer SOC może przeprowadzać inspekcję historii zadań zdarzeń usługi Microsoft Sentinel i śledzić zmiany wprowadzone w całym cyklu życia, aby ocenić skuteczność zadań i ich wkład w wydajność soc i prawidłowe działanie.
Struktura tablicy Tasks w tabeli SecurityIncident
Tabela SecurityIncident jest tabelą inspekcji — nie przechowuje samych zdarzeń, ale raczej rejestruje życie zdarzenia: jego utworzenie i wszelkie wprowadzone zmiany. Za każdym razem, gdy zdarzenie zostanie utworzone lub zostanie wprowadzone zmiany w zdarzeniu, w tej tabeli zostanie wygenerowany rekord przedstawiający bieżący stan zdarzenia.
Dodanie szczegółów zadań do schematu tej tabeli umożliwia bardziej szczegółowe przeprowadzanie inspekcji zadań.
Szczegółowe informacje dodane do pola Zadania składają się z par klucz-wartość, które przyjmują następującą strukturę:
Key | Opis wartości |
---|---|
Createdby | Tożsamość, która utworzyła zadanie: - adres e-mail: adres e-mail tożsamości - name: nazwa tożsamości - objectId: identyfikator GUID tożsamości - userPrincipalName: nazwa UPN tożsamości |
createdTimeUtc | Godzina utworzenia zadania w formacie UTC. |
lastCompletedTimeUtc | Czas, w jaki zadanie zostało oznaczone jako ukończone, w formacie UTC. |
lastModifiedBy | Tożsamość, która ostatnio zmodyfikowała zadanie: - adres e-mail: adres e-mail tożsamości - name: nazwa tożsamości - objectId: identyfikator GUID tożsamości - userPrincipalName: nazwa UPN tożsamości |
lastModifiedTimeUtc | Czas ostatniej modyfikacji zadania w formacie UTC. |
status | Bieżący stan zadania: Nowy, Ukończono, Usunięty. |
identyfikator zadania | Identyfikator zasobu zadania. |
title | Przyjazna nazwa nadana zadaniu przez jego twórcę. |
Wyświetlanie zadań zdarzeń w tabeli SecurityIncident
Oprócz skoroszytu Zadania zdarzeń można przeprowadzić inspekcję działania zadania, wykonując zapytanie względem tabeli SecurityIncident w dziennikach. W pozostałej części tego artykułu pokazano, jak to zrobić, a także jak odczytywać i interpretować wyniki zapytania w celu uzyskania informacji o działaniu zadania.
Na stronie Dzienniki wprowadź następujące zapytanie w oknie zapytania i uruchom je. To zapytanie zwróci wszystkie zdarzenia, które mają przypisane zadania.
SecurityIncident | where array_length( Tasks) > 0
Do zapytania można dodać dowolną liczbę instrukcji, aby filtrować i zawęzić wyniki. Aby pokazać, jak wyświetlić i zrozumieć wyniki, dodamy instrukcje w celu filtrowania wyników, aby zobaczyć tylko zadania dla pojedynczego incydentu, a także dodamy instrukcję
project
, aby zobaczyć tylko te pola, które będą przydatne dla naszych celów, bez dużej ilości bałaganu.Dowiedz się więcej o korzystaniu z język zapytań Kusto.
SecurityIncident | where array_length( Tasks) > 0 | where IncidentNumber == "405211" | sort by LastModifiedTime desc | project IncidentName, Title, LastModifiedTime, Tasks
Przyjrzyjmy się najnowszej dokumentacji dla tego zdarzenia i znajdźmy listę skojarzonych z nim zadań.
Wybierz rozszerzenie obok górnego wiersza w wynikach zapytania (które zostały posortowane w kolejności malejącej recency).
Pole Zadania to tablica bieżącego stanu wszystkich zadań w tym zdarzeniu. Wybierz rozszerzenie, aby wyświetlić każdy element w tablicy we własnym wierszu.
Teraz zobaczysz, że w tym zdarzeniu znajdują się dwa zadania. Każda z nich jest reprezentowana z kolei przez rozszerzalną tablicę. Wybierz rozszerzenie pojedynczego zadania, aby wyświetlić jego informacje.
W tym miejscu zobaczysz szczegóły pierwszego zadania w tablicy ("0" jest pozycją indeksu zadania w tablicy). Pole tytułu zawiera nazwę zadania, jak pokazano w zdarzeniu.
Wyświetlanie zadań dodanych do listy
Dodajmy zadanie do zdarzenia, a następnie wrócimy tutaj, ponownie uruchomimy zapytanie i zobaczymy zmiany w wynikach.
Na stronie Incydenty wprowadź numer identyfikatora zdarzenia na pasku wyszukiwania.
Otwórz stronę szczegółów zdarzenia i wybierz pozycję Zadania na pasku narzędzi.
Dodaj nowe zadanie, nadaj mu nazwę "To zadanie jest zadaniem testowym!", a następnie wybierz pozycję Zapisz. Ostatnie zadanie pokazane poniżej to, co należy zrobić:
Teraz wróćmy do strony Dzienniki i ponownie uruchomimy nasze zapytanie.
W wynikach zobaczysz, że w tabeli znajduje się nowy rekord dla tego samego incydentu (zwróć uwagę na znaczniki czasu). Rozwiń rekord i zobaczysz, że podczas gdy rekord, który widzieliśmy wcześniej, miał dwa zadania w tablicy Tasks , nowy ma trzy. Najnowsze zadanie jest właśnie dodane, jak widać według jego tytułu.
Wyświetlanie zmian stanu zadań
Teraz, jeśli wrócimy do tego nowego zadania na stronie szczegółów zdarzenia i oznaczymy je jako ukończone, a następnie wrócimy do pozycji Dzienniki i ponownie uruchomimy zapytanie, zobaczymy kolejny nowy rekord dla tego samego zdarzenia, tym razem pokazując nowy stan zadania jako Ukończono.
Wyświetlanie usuwania zadań
Wróćmy do listy zadań na stronie szczegółów zdarzenia i usuńmy dodane wcześniej zadanie.
Gdy wrócimy do dzienników i ponownie uruchomimy zapytanie, zobaczymy kolejny nowy rekord, tym razem tylko stan zadania — ten o nazwie "To zadanie jest zadaniem testowym!" — zostanie usunięta.
Jednak gdy zadanie pojawi się po raz taki w tablicy (ze stanem Usunięty ), nie będzie już wyświetlane w tablicy Tasks w nowych rekordach dla tego zdarzenia w tabeli SecurityIncident . Istniejące rekordy, takie jak te, które widzieliśmy powyżej, będą nadal zachowywać dowody, że to zadanie kiedyś istniało.
Wyświetlanie aktywnych zadań należących do zamkniętego zdarzenia
Poniższe zapytanie umożliwia sprawdzenie, czy zdarzenie zostało zamknięte, ale nie wszystkie przydzielone zadania zostały ukończone. Ta wiedza może pomóc w sprawdzeniu, czy wszelkie pozostałe luźne końce dochodzenia zostały wniesione do wniosku — wszystkie odpowiednie strony zostały powiadomione, wszystkie komentarze zostały wprowadzone, wszystkie odpowiedzi zostały zweryfikowane itd.
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
Następne kroki
- Dowiedz się więcej o zadaniach zdarzeń.
- Dowiedz się, jak badać zdarzenia.
- Dowiedz się, jak automatycznie dodawać zadania do grup zdarzeń przy użyciu reguł automatyzacji lub podręczników oraz kiedy ich używać.
- Dowiedz się więcej o regułach automatyzacji i sposobie ich tworzenia.
- Dowiedz się więcej o podręcznikach i sposobie ich tworzenia.