Überwachen und Nachverfolgen von Änderungen an Incidentaufgaben in Microsoft Sentinel im Azure-Portal

Aufgaben bei Sicherheitsvorfällen gewährleisten eine umfassende und einheitliche Bearbeitung von Vorfällen im gesamten SOC-Team. Aufgabenlisten werden in der Regel gemäß den Von Senior Analysts oder SOC-Managern getroffenen Festlegungen definiert und mithilfe von Automatisierungsregeln oder Playbooks in die Praxis umgesetzt.

Ihre Analysten können die Liste der Aufgaben, die sie für einen bestimmten Vorfall ausführen müssen, auf der Seite mit den Incidentdetails anzeigen und diese als abgeschlossen markieren. Analysten können auch ihre eigenen Aufgaben vor Ort manuell und direkt innerhalb des Incidents erstellen.

In diesem Artikel wird erläutert, wie Sie als SOC-Manager den Verlauf von Incidentaufgaben in Microsoft Sentinel überprüfen und die Änderungen nachverfolgen können, die im Laufe ihres gesamten Lebenszyklus an ihnen vorgenommen wurden, um die Wirksamkeit Ihrer Aufgabenzuweisungen und deren Beitrag zur Effizienz und ordnungsgemäßen Funktionsweise Ihres SOC zu bewerten.

Struktur des Tasks-Arrays in der Tabelle "SecurityIncident"

Die SecurityIncident-Tabelle ist eine Überwachungstabelle– sie speichert nicht die Vorfälle selbst, sondern Datensätze über die Lebensdauer eines Incidents: seine Erstellung und alle daran vorgenommenen Änderungen. Jedes Mal, wenn ein Incident erstellt oder eine Änderung an einem Incident vorgenommen wird, wird in dieser Tabelle ein Datensatz generiert, der den aktuellen Status des Incidents anzeigt.

Das Hinzufügen von Aufgabendetailfeldern zum Schema der SecurityIncident-Tabelle ermöglicht es Ihnen, Aufgaben ausführlicher zu prüfen.

Die detaillierten Informationen, die dem Feld Aufgaben hinzugefügt werden, bestehen aus Schlüssel-Wert-Paaren, die die folgende Struktur aufweisen:

Schlüssel Wertbeschreibung
createdBy Die Identität, welche die Aufgabe erstellt hat:
- email: E-Mail-Adresse der Identität
- name: Name der Identität
- objectId: GUID der Identität
– userPrincipalName: UPN der Identität
createdTimeUtc Zeitpunkt, zu dem die Aufgabe erstellt wurde, in UTC.
lastCompletedTimeUtc Zeitpunkt, zu dem die Aufgabe als abgeschlossen markiert wurde, in UTC.
lastModifiedBy Die Identität, die die Aufgabe zuletzt geändert hat:
- email: E-Mail-Adresse der Identität
- name: Name der Identität
- objectId: GUID der Identität
– userPrincipalName: UPN der Identität
lastModifiedTimeUtc Zeitpunkt der letzten Änderung der Aufgabe in UTC.
status Aktuelle status der Aufgabe: Neu, Abgeschlossen, Gelöscht.
Taskid Ressourcen-ID des Vorgangs.
title Benutzerfreundlicher Name, der der Aufgabe von ihrem Ersteller gegeben wurde.

Zeigen Sie Aufgaben zu Sicherheitsvorfällen in der Tabelle „SecurityIncident“ an

Abgesehen von der Arbeitsmappe für Vorfallaufgaben können Sie Aufgabenaktivitäten auch überprüfen, indem Sie die SecurityIncident-Tabelle in Logs abfragen. Dieser Abschnitt zeigt Ihnen, wie Sie die Tabelle abfragen und die Ergebnisse lesen und verstehen können, um Informationen zur Aufgabenaktivität zu erhalten.

  1. Geben Sie auf der Seite Protokolle die folgende Abfrage in das Abfragefenster ein, und führen Sie sie aus. Diese Abfrage gibt alle Incidents zurück, denen Aufgaben zugewiesen sind.

    SecurityIncident
    | where array_length( Tasks) > 0
    

    Sie können der Abfrage eine beliebige Anzahl von Anweisungen hinzufügen, um die Ergebnisse zu filtern und einzugrenzen. Um zu veranschaulichen, wie die Ergebnisse angezeigt und verstanden werden, fügen wir Anweisungen hinzu, um die Ergebnisse so zu filtern, dass nur die Aufgaben für einen einzelnen Incident angezeigt werden. Außerdem fügen wir eine project -Anweisung hinzu, damit nur die Felder angezeigt werden, die für unsere Zwecke nützlich sind, ohne viel Unübersichtlichkeit.

    Weitere Informationen finden Sie unter Kusto-Abfragesprache Übersicht.

    SecurityIncident
    | where array_length( Tasks) > 0
    | where IncidentNumber == "405211"
    | sort by LastModifiedTime desc 
    | project IncidentName, Title, LastModifiedTime, Tasks
    
  2. Sehen wir uns den neuesten Datensatz für diesen Vorfall an und suchen die Liste der Aufgaben, die diesem zugeordnet sind.

    1. Wählen Sie die Erweiterung neben der obersten Zeile in den Abfrageergebnissen aus (die in absteigender Reihenfolge der Aktualität sortiert wurden).

      Screenshot von Abfrageergebnissen, die einen Vorfall mit seinen Aufgaben zeigen.

    2. Das Feld Aufgaben ist ein Array des aktuellen Zustands aller Vorgänge in diesem Incident. Wählen Sie die Erweiterung aus, um jedes Element im Array in einer eigenen Zeile anzuzeigen.

      Screenshot der Abfrageergebnisse zeigt einen Vorfall mit seinen Aufgaben erweitert.

    3. Nun sehen Sie, dass dieser Vorfall zwei Aufgaben umfasst. Jede wird wiederum durch ein erweiterbares Array dargestellt. Wählen Sie die Erweiterung eines einzelnen Vorgangs aus, um die zugehörigen Informationen anzuzeigen.

      Screenshot von Abfrageergebnissen mit einem Vorfall, bei dem eine einzelne Aufgabe erweitert ist.

    4. Hier sehen Sie die Details für die erste Aufgabe im Array ("0" ist die Indexposition der Aufgabe im Array). Das Titelfeld zeigt den Namen des Vorgangs an, wie er im Incident angezeigt wird.

Anzeigen von Aufgaben, die der Liste hinzugefügt wurden

Führen Sie die folgenden Schritte durch, um eine Aufgabe zu einem Vorfall hinzuzufügen und beobachten, wie sich der SecurityIncident-Datensatz ändert.

  1. Fügen wir dem Incident eine Aufgabe hinzu. Anschließend kehren wir hierher zurück, führen die Abfrage erneut aus und sehen die Änderungen in den Ergebnissen.

    1. Geben Sie auf der Seite Incidents die Incident-ID in die Suchleiste ein.

    2. Öffnen Sie die Seite mit den Incidentdetails, und wählen Sie auf der Symbolleiste Aufgaben aus.

    3. Fügen Sie eine neue Aufgabe hinzu, geben Sie ihr den Namen "This task is a test task!", und wählen Sie dann Speichern aus. Die letzte unten gezeigte Aufgabe ist das, was Sie am Ende haben sollten:

      Der Screenshot zeigt den Bereich „Incident-Aufgaben“.

  2. Kommen wir nun zur Logs-Seite zurück und führen die SecurityIncident-Abfrage erneut aus.

    In den Ergebnissen sehen Sie, dass in der Tabelle ein neuer Datensatz für diesen Vorfall vorhanden ist (beachten Sie die Zeitstempel). Erweitern Sie den Datensatz, und Sie werden sehen, dass der Datensatz, den wir zuvor gesehen haben, zwei Aufgaben im Tasks-Array hatte, während der neue drei hat. Die neueste Aufgabe ist die, die wir gerade hinzugefügt haben, wie Sie am Titel sehen können.

    Screenshot von Abfrageergebnissen, der einen Vorfall mit der zugehörigen neu erstellten Aufgabe zeigt.

Statusänderungen bei Aufgaben anzeigen

Wenn wir nun zurück zur Aufgabe mit dem Titel "Diese Aufgabe ist eine Testaufgabe!" auf der Seite "Vorfalldetails" zurückkehren und sie als abgeschlossen markieren und dann wieder zu "Protokolle " zurückkehren und die Abfrage erneut ausführen, wird ein weiterer neuer Datensatz für denselben Vorfall angezeigt, diesmal wird der neue Status unserer Aufgabe als abgeschlossen angezeigt.

Screenshot der Abfrageergebnisse, der eine Incident-Aufgabe mit ihrem neuen Status zeigt.

Ansicht zum Löschen von Aufgaben

Kehren wir zur Aufgabenliste auf der Seite "Vorfalldetails" zurück, und löschen Sie die Aufgabe mit dem Titel "Diese Aufgabe ist eine Testaufgabe!".

Wenn wir zu Logs zurückkehren und die Incident-Task-Abfrage erneut ausführen, sehen wir einen weiteren neuen Datensatz, diesmal nur den Status unserer Aufgabe – den mit dem Titel "Diese Aufgabe ist eine Testaufgabe!" —wird gelöscht.

Sobald die Aufgabe jedoch einmal im Array (mit einem gelöschten status) angezeigt wurde, wird sie nicht mehr im Array Tasks in neuen Datensätzen für diesen Incident in der Tabelle SecurityIncident angezeigt. Bestehende frühere Aufzeichnungen des Vorfalls werden weiterhin die Beweise bewahren, dass diese Aufgabe einst existierte.

Anzeigen aktiver Aufgaben, die zu einem geschlossenen Incident gehören

Mit der folgenden Abfrage können Sie sehen, ob ein Incident geschlossen wurde, aber nicht alle ihm zugewiesenen Aufgaben abgeschlossen wurden. Dieses Wissen kann Ihnen helfen, zu überprüfen, ob alle verbleibenden losen Enden Ihrer Untersuchung zu einem Abschluss gebracht wurden – alle relevanten Parteien wurden benachrichtigt, alle Kommentare wurden eingegeben, alle Antworten wurden überprüft usw. Die Abfrage verwendet die arg_max Aggregationsfunktion, um nur den aktuellsten Datensatz für jeden Vorfall und für jede Aufgabe zurückzugeben, sodass die Ergebnisse den neuesten Zustand widerspiegeln.

Führen Sie folgende Abfrage aus, um den aktuellsten Datensatz für jeden Vorfall abzurufen, filtern Sie auf geschlossene Vorfälle und geben Sie alle Aufgaben zurück, die noch nicht abgeschlossen oder gelöscht sind:

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

Für weitere Informationen zu den Kusto-Operatoren und -Funktionen, die in den Beispielanfragen dieses Artikels verwendet werden, siehe:

Weitere Informationen zu KQL finden Sie unter übersicht über Kusto-Abfragesprache (KQL).

Weitere Ressourcen:

Nächste Schritte