Bewährte Methoden mit dem Search-UnifiedAuditLog-Cmdlet-Tool
Das Überwachungsprotokoll ist ein Tool, das Ereignisse aus einer Reihe von Workloads aufzeichnet. Das Cmdlet Search-UnifiedAuditLog kann zum Suchen und Abrufen von Daten aus dem Überwachungsprotokoll verwendet werden. Es ist wichtig zu verstehen, wie dieses Cmdlet effektiv verwendet werden kann, insbesondere wenn es um die Interpretation der Informationen in der AuditData-Eigenschaft geht, da verschiedene Workloads unterschiedliche Arten von Informationen in diese Eigenschaft einfügen.
Standardmäßig gibt das Cmdlet Search-UnifiedAuditLog 100 Überwachungsdatensätze für jede Suchanforderung zurück, es sei denn, Sie geben eine andere Anzahl von Datensätzen an, die mit dem ResultSize-Parameter abgerufen werden sollen (maximal 5.000 Datensätze).
Eine einzelne Suche kann mithilfe des Seitenabrufs maximal 50.000 Überwachungsdatensätze verarbeiten. Da das Überwachungsprotokoll eine große Menge an Daten enthalten kann, ist es wichtig, bei der Verwendung von Suchparametern so spezifisch wie möglich zu sein, um zu vermeiden, dass zu viele Datensätze zurückgegeben werden.
Um das Cmdlet Search-UnifiedAuditLog verwenden zu können, muss Ihr Konto über die Rolle Exchange View-Only Überwachungsprotokolle oder Überwachungsprotokolle verfügen. Diese Rollen sind Teil der Rollengruppen Complianceverwaltung und Organisationsverwaltung und können bei Bedarf anderen Rollengruppen zugewiesen werden.
RecordTypes
Ein RecordType ist die Workload, die den Datensatz generiert hat. Beispiele für verschiedene Arten von Ereignissen, die mit dem Cmdlet Search-UnifiedAuditLog gefunden wurden, sind:
- Hinzufügen eines Mitglieds zu einer Gruppe in Microsoft Entra ID (AzureActiveDIrectory)
- Aktualisieren von Postfacheigenschaften in Exchange (ExchangeAdmin)
- Löschen einer Datei in SharePoint (SharePointFileOperation)
- Anmelden eines Benutzers bei Microsoft Teams (MicrosoftTeams)
- AIP-Heartbeat (AipHeartbeat)
Diese Ereignisse können mithilfe des Cmdlets Search-UnifiedAuditLog gesucht und nachverfolgt werden, mit dem Sie die Details der Ereignisse filtern und anzeigen können, die im einheitlichen Überwachungsprotokoll aufgezeichnet werden.
Struktur der Überwachungsdaten
Search-UnifiedAuditLog -RecordType AipDiscover -StartDate (Get-Date).AddDays(-100) -EndDate (Get-Date)
Überwachungsdatensätze bestehen aus zwei Teilen: Allgemeine Eigenschaften AuditData-Eigenschaft
Allgemeine Eigenschaften
Allgemeine Eigenschaften, die von allen Workloads auf die gleiche Weise aufgefüllt werden, und die AuditData-Eigenschaft, die workloadspezifische Informationen enthält. Die allgemeinen Eigenschaften umfassen den Datensatztyp, das Erstellungsdatum, den Vorgang und die Benutzer-ID.
RunspaceId : 136b901e-a6bc-4f24-bb58-5c435090df91
RecordType : AipDiscover
CreationDate : 2022-09-15 5:49:22 PM
UserIds : AdeleV@M365x23987777.OnMicrosoft.com
Operations : Access
ResultIndex : 8
ResultCount : 8
Identity : 20728aaf-1964-1a4a-bd72-784fa3c12132
IsValid : True
ObjectState : Unchanged
AuditData-Eigenschaft
Suchen Sie die wichtigsten Informationen zu einem Ereignis mithilfe der AuditData-Eigenschaft. Workloads verwenden Schemas, um die Eigenschaften zu beschreiben, die sie in Überwachungsdatensätze einfügen, und diese Schemas werden verwendet, um die Nutzlast in Überwachungsereignissen zu interpretieren. Es kann einige Testversionen erfordern, um die Informationen in einem Überwachungsdatensatz vollständig zu verstehen. Eine Anleitung zu den detaillierten Eigenschaften in Überwachungsprotokolldatensätzen kann in diesem Prozess hilfreich sein. Die Details zur Aktion eines Benutzers werden im JSON-Format (JavaScript Object Notation) gespeichert, sodass eine weitere Verarbeitung erforderlich ist, um die Daten zum Extrahieren der Informationen zu formatieren.
AuditData:
{
"SensitivityLabelEventData":{
"SensitivityLabelId":"8581574a-c314-42e3-bfdc-a63cf96ed86e"
},
"SensitiveInfoTypeData":[
],
"ProtectionEventData":{
"IsProtected":false
},
"Common":{
"ApplicationId":"c00e9d32-3c8d-4a7d-832b-029040e7db99",
"ApplicationName":"Microsoft Azure Information Protection Word Add-In",
"ProcessName":"WINWORD",
"Platform":1,
"DeviceName":"AdeleVanceWindo",
"Location":"On-premises file shares",
"ProductVersion":"2.13.49.0"
},
"DataState":"Use",
"ObjectId":"C:\\452Documentcreated.docx",
"UserId":"AdeleV@M365x23987777.OnMicrosoft.com",
"ClientIP":"20.237.230.167",
"Id":"20728aaf-1964-1a4a-bd72-784fa3c12132",
"RecordType":93,
"CreationTime":"2022-09-15T17:49:22",
"Operation":"Access",
"OrganizationId":"4b080626-0acc-4940-8af8-bfc836ff1a59",
"UserType":0,
"UserKey":"AdeleV@M365x23987777.OnMicrosoft.com",
"Workload":"Aip",
"Version":1,
"Scope":1
}
In der folgenden Tabelle sind die Details der AuditData-Eigenschaft aufgeführt.
Parameter | Beschreibung |
---|---|
RecordType | Der Typ der Workload, die den Datensatz generiert hat, z. B. Microsoft Entra ID, Microsoft Teams, Exchange Admin oder SharePoint-Dateivorgang. |
CreationTime | Das Datum und die Uhrzeit im UTC-Format, als die Aktivität ausgeführt wurde. |
Vorgang | Der Vorgang, der protokolliert wird, wenn jemand auf ein Element zugreift, z. B. FileViewed im Fall von SharePoint Online. |
OrganizationId | Der eindeutige Mandantenbezeichner in Form einer GUID. |
UserKey | Die Identität, die verwendet wird, um Zugriff auf das Element zu erhalten, was in der Regel durch die Mitgliedschaft in einer Gruppe erreicht wird. |
Arbeitslast | Der Name der Anwendung, die das Ereignis protokolliert hat, z. B. SharePoint Online, Exchange Online, OneDrive for Business oder Microsoft Entra ID. |
ClientIP | Die IP-Adresse der Clientarbeitsstation, aus der die Aktion stammt. |
ObjectID | Der vollständige Pfad zum Objekt, auf das zugegriffen wurde. |
UserID | Der Microsoft Entra Kontobezeichner für das Konto, das die Aktion verursacht hat. |
UserAgent | Der Client, der zum Aufrufen der Aktion verwendet wird. |
SourceFileName | Der Name der Datei, die an der Aktion beteiligt ist. |
UserType | Der Typ des Benutzers, der die Aktion ausgeführt hat, mit den Werten "0" (regulärer Benutzer), "1" (Administrator) oder "2" (Microsoft-Rechenzentrumsadministrator oder Systemkonto). |
EventSource | Wird nur von SharePoint Online verwendet, um anzugeben, ob die Quelle SharePoint oder ObjectMode war. |
ResultIndex und ResultCount | Die Eigenschaften ResultIndex und ResultCount können bei der Arbeit mit großen Ressourceneintragssätzen nützlich sein. ResultIndex gibt die Datensatznummer innerhalb des zurückgegebenen Satzes an, während ResultCount die Gesamtzahl der zurückgegebenen Datensätze anzeigt. Wenn ResultIndex beispielsweise 1 und ResultCount 125 ist, bedeutet dies, dass der angezeigte Datensatz der erste von 125 ist, der in der Menge zurückgegeben wird. Wenn bei der Suche ein internes Timeout auftritt, wird ResultIndex auf -1 festgelegt. Wenn Administratoren Erfahrung mit dem Überwachungsprotokoll und den PowerShell-Cmdlets sammeln, werden sie feststellen, dass das Überwachungsprotokoll eine wertvolle Informationsquelle ist, um zu verstehen, wer während eines bestimmten Zeitraums mit einem Dokument interagiert oder neue Dokumente erstellt hat. Es kann einige Testversionen dauern, um die in den Überwachungsdatensätzen bereitgestellten Informationen vollständig zu nutzen. |
Suchen der richtigen Set-Ereignisse
Um beim Durchsuchen des Überwachungsprotokolls die richtigen Ereignisse zu finden, ist es wichtig zu wissen, wonach Sie suchen und die entsprechenden Filter und Parameter verwenden. Dies kann schwierig sein, da das Überwachungsprotokoll eine große Anzahl von Ereignissen enthalten kann und die Suche nach bestimmten Aktionen wie die Suche nach einem kleinen Objekt in einer großen und ungeordneten Liste von Daten sein kann.
Eine Möglichkeit, dieses Problem anzugehen, besteht darin, Schritte zum Generieren eines Überwachungsereignisses für die gewünschte Aktion zu ergreifen, mindestens 60 Minuten zu warten, um die Erfassung des Ereignisses im Überwachungsprotokoll zuzulassen, und dann nach Ereignissen innerhalb dieses Zeitraums zu suchen.
Dadurch erhalten Sie einen kleineren Satz von Ereignissen, mit denen Sie arbeiten können, die Sie dann analysieren und verwenden können, um weitere Suchvorgänge durchzuführen. Es ist auch eine gute Idee, die für die Ereignisse protokollierten Operations / RecordTypes-Werte zu verwenden, um Ihre Suchvorgänge zu verfeinern und die spezifischen Ereignisse zu finden, nach denen Sie suchen.
Es folgt ein Beispiel für das Filtern von Daten, indem nach sehr spezifischen Vorgängen und in einem bestimmten Datumsbereich gesucht wird. Zeigen Sie Datensatztypen an, um die Datensatztypen anzuzeigen, nach denen gesucht werden kann.
Das folgende Skript sucht nach einem bestimmten Vorgang.
$Operations = ("SensitivityLabelUpdated", "SensitivityLabelApplied", "FileSensitivityLabelApplied")
$StartDate = (Get-Date).AddDays(-90)
$EndDate = (Get-Date).AddDays(1)
[Array]$Records = Search-UnifiedAuditLog -StartDate $StartDate -EndDate $EndDate -Formatted -ResultSize 5000 -Operations $Operations
Das folgende Skript sucht nach einem bestimmten Datensatztyp. In diesem Beispiel wird für AipDiscover verwendet.
Search-UnifiedAuditLog -StartDate (Get-Date).AddDays(-100) -EndDate (Get-Date) -RecordType AipDiscover -Operations Access -ResultSize 5 -Formatted | Format-Table UserIds, CreationDate, Operations
Das folgende Skript speichert das Ergebnis in einem Array und sucht nach einem bestimmten Wert. In diesem Beispiel wird CreationDate verwendet.
[array]$Records = Search-UnifiedAuditLog -RecordType AipDiscover -StartDate (Get-Date).AddDays(-100) -EndDate (Get-Date)
$Records | Where-Object {$_.CreationDate -eq "2022-09-15 5:49:22 PM"}
Verwalten großer Mengen von Überwachungsdaten
Wenn Sie eine große Anzahl von Überwachungsdatensätzen von einem großen Mandanten abrufen müssen oder wenn Sie über einen längeren Zeitraum nach mehreren Vorgängen suchen müssen, gibt eine einzelne Suche wahrscheinlich mehr als 5.000 Datensätze zurück.
Um große Datenmengen über das cmdlet Search-UnifiedAuditLog zu verwalten, können Sie die Parameter ReturnLargeSet und ReturnNextPreviewPage verwenden. Mit diesen Parametern können Sie Suchvorgänge ausführen, die große Mengen von Ergebnissen zurückgeben, und dann die nächste Ergebnisseite in nachfolgenden Suchvorgängen abrufen.
- Verwenden Sie den Parameter SessionId, um eine Suchsitzung zu identifizieren und die Anzahl der Seiten anzugeben, die Sie abrufen möchten. Dadurch kann das Cmdlet mehrere Seiten mit Daten abrufen und an Sie zurückgeben.
- Der Parameter SessionId wird auch verwendet, wenn Sie mit dem Cmdlet Search-UnifiedAuditLog nach einer großen Menge von Überwachungsdaten suchen möchten. Das Cmdlet gibt maximal 5.000 Datensätze pro Seite zurück. Wenn Sie also nach mehr suchen möchten, müssen Sie den Parameter SessionId verwenden, um eine Suchsitzung zu identifizieren und die Anzahl der Seiten anzugeben, die Sie abrufen möchten. Das Cmdlet verwendet dann den Sitzungsbezeichner, um die zusätzlichen Seiten mit Daten abzurufen und an Sie zurückzugeben.
- Wenn Sie nach mehr als 50.000 Datensätzen suchen müssen, teilen Sie die Arbeit auf mehrere Suchvorgänge auf, und verwenden Sie für jede Suche unterschiedliche Kriterien.
- Speichern Sie die Ergebnisse der Suchvorgänge in einem externen Repository, z. B. Azure Log Analytics, Azure Data Explorer, um den Zugriff und die Analyse zu vereinfachen.
- Überprüfen und aktualisieren Sie regelmäßig Ihre Suchkriterien und überwachen Sie die Datenverwaltungsprozesse, um sicherzustellen, dass Sie die richtigen Daten erfassen und effizient verwalten. Dies hilft Ihnen, bei potenziellen Sicherheitsproblemen auf dem Neuesten zu bleiben und die Allgemeine Sicherheit Ihrer organization zu verbessern.
Schritte zum Abrufen großer Datenmengen
Führen Sie die folgenden Schritte aus, um eine große Menge von Überwachungsdaten abzurufen:
- Generieren Sie einen Sitzungsbezeichner.
- Verwenden Sie eine -Schleife, um Daten auf mehreren Seiten abzurufen.
- Führen Sie den Befehl Search-UnifiedAuditLog wiederholt aus, um alle verfügbaren Daten abzurufen.
- Speichern Sie die Daten aus jeder Ausführung von Search-UnifiedAuditLog.
- Nachdem alle Seiten abgerufen wurden, sortieren Sie die Daten nach Datum, und exportieren Sie sie in eine CSV-Datei.
Beispiele
Search-UnifiedAuditLog verfügt über zwei Parameter, um den Abruf großer Datasets zu unterstützen: SessionID und SessionCommand. Sowohl SessionID als auch SessionCommand können kombiniert werden, um große Datasets zu verarbeiten. Der Parameter SessionId enthält einen Zeichenfolgenwert, um eine Suchsitzung zu identifizieren. Sie können einen beliebigen Wert verwenden, von einer einfachen Zahl bis hin zu einer GUID, die mit dem Cmdlet New-Guid generiert wurde. Das Vorhandensein eines Sitzungsbezeichners weist Search-UnifiedAuditLog darauf hin, dass möglicherweise mehrere Seiten mit Daten abgerufen werden müssen.
eg.
$SessionId = "5b5a5a5a-5b5b-5c5c-5d5d-5e5e5e5e5e5e"
$SessionId = "UnifiedAuditLogSearch 01/02/17"
Der Sitzungsbefehl informiert Search-UnifiedAuditLog, wie große Mengen von Überwachungsdaten behandelt werden. Die zurückgegebenen Daten können doppelte Datensätze enthalten. Dieser Parameter kann auf Folgendes festgelegt werden:
- ReturnLargeSet: Die zurückgegebenen Überwachungsdatensätze sind unsortiert. Sie können mit dieser Methode bis zu 50.000 Überwachungsdatensätze abrufen, müssen jedoch daran denken, die Daten nach dem Abrufen zu sortieren.
- ReturnNextPreviewPage: Search-UnifiedAuditLog gibt Überwachungsdatensätze nach Datum sortiert zurück. Mit dieser Methode können Sie jedoch nur maximal 5.000 Datensätze abrufen. Die maximale Anzahl von durch Paging oder den ResultSize-Parameter zurückgegebenen Datensätzen ist 5.000.
Hinweis
Verwenden Sie immer denselben SessionCommand-Wert für einen bestimmten SessionId-Wert. Wechseln Sie nicht zwischen ReturnLargeSet und ReturnNextPreviewPage für die gleiche Sitzungs-ID. Andernfalls ist die Ausgabe auf 10.000 Ergebnisse beschränkt.
SessionId-Beispielskript
Im folgenden Beispiel importiert das Skript zuerst das Modul Exchange Online Verwaltung und erstellt eine Remoteverbindung mit Exchange Online. Anschließend werden das Start- und Enddatum für die Suche festgelegt und das Cmdlet Search-UnifiedAuditLog verwendet, um das einheitliche Überwachungsprotokoll nach Einträgen innerhalb des angegebenen Datumsbereichs zu durchsuchen.
Das Skript verwendet dann eine foreach-Schleife, um das Array von Datensätzen zu durchsuchen, das vom Cmdlet zurückgegeben wird, und verarbeitet jeden Datensatz nach Bedarf. In diesem Fall werden der Vorgangsname und die Benutzeridentität für jeden Datensatz ausgegeben.
# Import the Exchange Online Management module
Import-Module ExchangeOnlineManagement
# Create a remote connection to Exchange Online
$UserCredential = Get-Credential
Connect-IPPSSession
# Search the Unified Audit Log for entries with the specified SessionID
$SessionId = "5b5a5a5a-5b5b-5c5c-5d5d-5e5e5e5e5e5e"
$StartDate = (Get-Date).AddDays(-90)
$EndDate = (Get-Date).AddDays(1)
[Array]$Records = Search-UnifiedAuditLog -StartDate $StartDate -EndDate $EndDate -SessionId $SessionId
# Scan through the array of records
foreach ($Record in $Records)
{
# Process each record as needed
# For example, you could print the operation name and user identity
Write-Host "Operation: $($Record.RecordType)"
Write-Host "User Identity: $($Record.Operations)"
Write-Host "User Identity: $($Record.AuditData)"
}
ReturnLargeSet-Beispielskript
Im folgenden Beispiel wird das Cmdlet Search-UnifiedAuditLog verwendet, um das Überwachungsprotokoll nach Einträgen zwischen den angegebenen Start- und Endzeiten zu durchsuchen. Der Parameter ReturnLargeSet wird festgelegt, indem die Parameter SessionId und SessionCommand im $parameters-Objekt angegeben werden. Die Ergebnisse der Suche werden dann in einer Schleife durchlaufen, und jeder Eintrag wird an die Konsole ausgegeben.
ReturnLargeSet: Gibt unsortierte Daten zurück. Durch Paging können Sie auf bis zu 50.000 Ergebnisse zugreifen. Dies ist der empfohlene Wert, wenn kein geordnetes Ergebnis erforderlich ist und für die Suchlatenz optimiert wurde.
# Set the start and end time for the audit log search
$startTime = "01/01/2022 00:00:00"
$endTime = "12/31/2022 23:59:59"
# Set the parameters for the search
$parameters = @{
StartDate = $startTime
EndDate = $endTime
SessionId = "UnifiedAuditLogSearch 01/02/17"
SessionCommand = "ReturnLargeSet"
}
# Perform the search and store the results in a variable
$results = Search-UnifiedAuditLog @parameters
# Loop through the results and output each entry
for ($i = 0; $i -lt $results.Count; $i++) {
$entry = $results[$i]
Write-Output $entry
}
ReturnNextPreviewPage-Beispielskript
Das folgende Skript führt eine Suche mithilfe des Cmdlets Search-UnifiedAuditLog und des Parameters ReturnNextPreviewPage durch. Die Suche erfolgt mit den angegebenen Start- und Endzeiten. Die Ergebnisse der Suche werden dann an die Konsole ausgegeben.
# Set the start and end time for the audit log search
$startTime = "01/01/2022 00:00:00"
$endTime = "12/31/2022 23:59:59"
# Set the parameters for search
$parameters = @{
SessionId = "UnifiedAuditLogSearch 01/02/17"
SessionCommand = "ReturnNextPreviewPage"
StartDate = $startTime
EndDate = $endTime
}
# Retrieve results
$resultpage = Search-UnifiedAuditLog @parameters