Microsoft Graph-Aktivitätsprotokolle erfassen
Dieser Parser extrahiert Felder aus Microsoft Graph-Aktivitätsprotokollen und wandelt sie in das Unified Data Model (UDM) um. Es initialisiert UDM-Felder, parst die Nutzlast, extrahiert Zeitstempel, ordnet verschiedene Attribute UDM-Feldern zu, verarbeitet IP-Adressen und Ports und kategorisiert den Ereignistyp basierend auf dem Vorhandensein von Principal- und Netzwerkinformationen.
Hinweis
Folgende Voraussetzungen müssen erfüllt sein:
- Google SecOps-Instanz
- Privilegierter Zugriff auf Microsoft Entra ID und Azure-Speicherkonten.
Azure-Speicherkonto konfigurieren
- Suchen Sie in der Azure-Konsole nach Speicherkonten.
- Klicken Sie auf Erstellen.
- Geben Sie Werte für die folgenden Eingabeparameter an:
- Abo: Wählen Sie das Abo aus.
- Ressourcengruppe: Wählen Sie die Ressourcengruppe aus.
- Region: Wählen Sie die Region aus.
- Leistung: Wählen Sie die gewünschte Leistungsstufe aus (Standard wird empfohlen).
- Redundanz: Wählen Sie die gewünschte Redundanzstufe aus (GRS oder LRS wird empfohlen).
- Storage-Kontoname: Geben Sie einen Namen für das neue Speicherkonto ein.
- Klicken Sie auf Überprüfen + Erstellen.
- Prüfen Sie die Übersicht des Kontos und klicken Sie auf Erstellen.
- Wählen Sie auf der Seite Storage Account Overview (Speicherkonto – Übersicht) unter Security + networking (Sicherheit und Netzwerk) das Untermenü Access keys (Zugriffsschlüssel) aus.
- Klicken Sie neben key1 oder key2 auf Anzeigen.
- Klicken Sie auf In Zwischenablage kopieren, um den Schlüssel zu kopieren.
Speichern Sie den Schlüssel an einem sicheren Ort, damit Sie ihn später wiederfinden.
Wählen Sie auf der Seite Speicherkontoübersicht unter Einstellungen das Untermenü Endpunkte aus.
Klicken Sie auf In Zwischenablage kopieren, um die Endpunkt-URL des Blob-Dienstes zu kopieren (z. B. https://
.blob.core.windows.net ).Speichern Sie die Endpunkt-URL an einem sicheren Ort, damit Sie später darauf zugreifen können.
Export von Microsoft Graph-Aktivitätsprotokollen in ein Speicherkonto konfigurieren
- Suchen Sie in der Azure-Konsole nach Entra ID.
- Wählen Sie Monitoring > Diagnoseeinstellungen aus.
- Klicken Sie auf + Diagnoseeinstellung hinzufügen.
- Geben Sie der Einstellung einen eindeutigen Namen (z. B. ms-graph-activity).
- Wählen Sie die Kategorie MicrosoftGraphActivityLog aus, die Sie nach Google SecOps exportieren möchten.
- Wählen Sie unter Zieldetails die Option In einem Speicherkonto archivieren aus.
- Wählen Sie Ihr Abo und das Speicherkonto aus, das Sie im vorherigen Schritt erstellt haben.
Klicken Sie auf Speichern.
Microsoft Graph-Aktivitätsprotokolle einrichten
- Rufen Sie die Einstellungen > Datenverwaltung > Feeds auf. Wenn Sie eine reine SIEM-Plattform verwenden, rufen Sie die Einstellungen > Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf der nächsten Seite auf Einzelnen Feed konfigurieren.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Microsoft Graph-Aktivitätsprotokolle.
- Wählen Sie Microsoft Azure Blob Storage V2 als Quelltyp aus.
- Wählen Sie als Protokolltyp die Option Microsoft Graph-Aktivitätsprotokolle aus.
- Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
Azure-URI: die Blob-Endpunkt-URL.
ENDPOINT_URL/BLOB_NAMEErsetzen Sie Folgendes:
ENDPOINT_URL: die Blob-Endpunkt-URL (https://<storageaccountname>.blob.core.windows.net)BLOB_NAME: der Name des Blobs (z. B. insights-logs-)
Optionen zum Löschen der Quelle: Wählen Sie die gewünschte Löschoption aus.
Maximales Dateialter: Dateien, die in den letzten Tagen geändert wurden. Der Standardwert ist 180 Tage.
Freigegebener Schlüssel: Der Zugriffsschlüssel für Azure Blob Storage.
Klicken Sie auf Weiter.
Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
Unterstützte Beispielprotokolle für Microsoft Graph-Aktivitätsprotokolle
Standard-JSON
{ "time": "2024-02-24T02:36:04.9540786Z", "resourceId": "/TENANTS/00000000-0000-0000-0000-000000000000/PROVIDERS/MICROSOFT.AADIAM", "operationName": "Microsoft Graph Activity", "operationVersion": "v1.0", "category": "MicrosoftGraphActivityLogs", "tenantId": "00000000-0000-0000-0000-000000000000", "resultSignature": "200", "durationMs": 856631, "callerIpAddress": "192.0.2.1", "correlationId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "Level": 4, "location": "South Central US", "properties": { "timeGenerated": "2024-02-24T02:36:04.9540786Z", "location": "South Central US", "requestId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "operationId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "clientRequestId": "ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj", "apiVersion": "v1.0", "requestMethod": "GET", "responseStatusCode": 200, "tenantId": "00000000-0000-0000-0000-000000000000", "ipAddress": "192.0.2.1", "userAgent": "Internal-Service-Scanner", "requestUri": "https://graph.microsoft.com/v1.0/subscribedSkus", "durationMs": 856631, "responseSizeBytes": 11808, "signInActivityId": "REDACTED_ACTIVITY_ID", "roles": "Organization.Read.All Policy.Read.All User.Read.All", "tokenIssuedAt": "2024-02-23T23:48:42Z", "appId": "00000000-0000-0000-0000-000000000000", "userId": null, "servicePrincipalId": "11111111-2222-3333-4444-555555555555", "identityProvider": "https://sts.windows.net/00000000-0000-0000-0000-000000000000/", "clientAuthMethod": "2" } }Azure Monitor PascalCase-Format
{ "TimeGenerated": "2024-06-07T11:52:40.4216173Z", "Location": "East US", "RequestId": "bbbbbbbb-1111-2222-3333-cccccccccccc", "OperationId": "bbbbbbbb-1111-2222-3333-cccccccccccc", "ClientRequestId": "dddddddd-4444-5555-6666-eeeeeeeeeeee", "ApiVersion": "v1.0", "RequestMethod": "GET", "ResponseStatusCode": 200, "AadTenantId": "00000000-0000-0000-0000-000000000000", "IPAddress": "198.51.100.50", "UserAgent": "LokiServer/1.2024", "RequestUri": "https://graph.microsoft.com/v1.0/users/user@example.com", "DurationMs": 1309774, "ResponseSizeBytes": 192, "SignInActivityId": "REDACTED_ACTIVITY_ID", "TokenIssuedAt": "2024-0G-07T11:47:39.0000000Z", "AppId": "00000000-0000-0000-0000-000000000000", "UserId": "user_id_9999", "Scopes": "User.Read User.Read.All", "ClientAuthMethod": 2, "_ItemId": "unique_item_id_001", "Type": "MicrosoftGraphActivityLogs", "TenantId": "00000000-0000-0000-0000-000000000000" }UDI-Pflichtfelder
{ "time": "2024-08-14T19:37:39.2484449Z", "resourceId": "/TENANTS/00000000-0000-0000-0000-000000000000/PROVIDERS/MICROSOFT.AADIAM", "operationName": "Microsoft Graph Activity", "resultSignature": "200", "callerIpAddress": "203.0.113.10", "properties": { "__UDI_RequiredFields_TenantId": "00000000-0000-0000-0000-000000000000", "__UDI_RequiredFields_UniqueId": "uuid-123456-7890", "timeGenerated": "2024-08-14T19:37:39.2484449Z", "requestId": "uuid-123456-7890", "requestMethod": "GET", "responseStatusCode": 200, "ipAddress": "203.0.113.10", "userAgent": "Security-Audit-Tool", "requestUri": "https://graph.microsoft.com/v1.0/auditLogs/directoryAudits", "UserPrincipalObjectID": "user_obj_8888", "appId": "00000000-0000-0000-0000-000000000000" }, "tenantId": "00000000-0000-0000-0000-000000000000" }UDI-Betaformat
{ "time": "2024-08-14T18:37:12.8698765Z", "operationVersion": "beta", "callerIpAddress": "2001:db8::ff00:42:8329", "level": "Informational", "properties": { "__UDI_RequiredFields_TenantId": "00000000-0000-0000-0000-000000000000", "apiVersion": "beta", "requestMethod": "GET", "responseStatusCode": 404, "ipAddress": "2001:db8::ff00:42:8329", "requestUri": "https://graph.microsoft.com/beta/users/user_id_masked/photos", "userId": "user_id_7777", "appId": "00000000-0000-0000-0000-000000000000" } }
UDM-Zuordnungstabelle
| Logfeld | UDM-Zuordnung | Logik |
|---|---|---|
callerIpAddress |
principal.asset.ip |
Das Rohlogfeld callerIpAddress wird in das UDM-Feld kopiert. |
callerIpAddress |
principal.ip |
Das Rohlogfeld callerIpAddress wird in das UDM-Feld kopiert. |
category |
security_result.category_details |
Das Rohlogfeld category wird in das UDM-Feld kopiert. |
correlationId |
security_result.detection_fields.value |
Das Rohlogfeld correlationId wird in das UDM-Feld kopiert, wobei der Schlüssel correlationId ist. |
Level |
security_result.detection_fields.value |
Das Rohlogfeld Level wird in einen String konvertiert und in das UDM-Feld kopiert, wobei der Schlüssel Level ist. |
operationName |
metadata.product_event_type |
Das Rohlogfeld operationName wird in das UDM-Feld kopiert. |
operationVersion |
additional.fields.value.string_value |
Das Rohlogfeld operationVersion wird in das UDM-Feld kopiert, wobei der Schlüssel operationVersion ist. |
properties.apiVersion |
metadata.product_version |
Das Rohlogfeld properties.apiVersion wird in das UDM-Feld kopiert. |
properties.appId |
target.resource.product_object_id |
Das Rohlogfeld properties.appId wird in das UDM-Feld kopiert. |
properties.atContent |
additional.fields.value.string_value |
Das Rohlogfeld properties.atContent wird in das UDM-Feld kopiert, wobei der Schlüssel atContent ist. |
properties.clientAuthMethod |
extensions.auth.auth_details |
Basierend auf dem Wert von properties.clientAuthMethod wird das UDM-Feld auf „Öffentlicher Client“ (0), „Client-ID/Clientschlüssel“ (1) oder „Clientzertifikat“ (2) gesetzt. |
properties.clientRequestId |
additional.fields.value.string_value |
Das Rohlogfeld properties.clientRequestId wird in das UDM-Feld kopiert, wobei der Schlüssel clientRequestId ist. |
properties.durationMs |
network.session_duration.seconds |
Das Rohlogfeld properties.durationMs wird von Millisekunden in Sekunden umgewandelt und in das UDM-Feld kopiert. |
properties.identityProvider |
security_result.detection_fields.value |
Das Rohlogfeld properties.identityProvider wird in das UDM-Feld kopiert, wobei der Schlüssel identityProvider ist. |
properties.ipAddress |
principal.asset.ip |
Die IP-Adresse aus dem Rohlogfeld properties.ipAddress wird extrahiert und in das UDM-Feld kopiert. |
properties.ipAddress |
principal.ip |
Die IP-Adresse aus dem Rohlogfeld properties.ipAddress wird extrahiert und in das UDM-Feld kopiert. |
properties.location |
principal.location.name |
Das Rohlogfeld properties.location wird in das UDM-Feld kopiert. |
properties.operationId |
security_result.detection_fields.value |
Das Rohlogfeld properties.operationId wird in das UDM-Feld kopiert, wobei der Schlüssel operationId ist. |
properties.requestMethod |
network.http.method |
Das Rohlogfeld properties.requestMethod wird in das UDM-Feld kopiert. |
properties.requestId |
metadata.product_log_id |
Das Rohlogfeld properties.requestId wird in das UDM-Feld kopiert. |
properties.responseSizeBytes |
network.received_bytes |
Das Rohlogfeld properties.responseSizeBytes wird in eine Ganzzahl ohne Vorzeichen konvertiert und in das UDM-Feld kopiert. |
properties.responseStatusCode |
network.http.response_code |
Das Rohlogfeld properties.responseStatusCode wird in eine Ganzzahl konvertiert und in das UDM-Feld kopiert. |
properties.roles |
additional.fields.value.string_value |
Das Rohlogfeld properties.roles wird in das UDM-Feld kopiert, wobei der Schlüssel roles ist. |
properties.scopes |
additional.fields.value.string_value |
Das Rohlogfeld properties.scopes wird in das UDM-Feld kopiert, wobei der Schlüssel Scopes ist. |
properties.servicePrincipalId |
principal.user.userid |
Das Rohlogfeld properties.servicePrincipalId wird in das UDM-Feld kopiert, wenn properties.userId leer ist. |
properties.signInActivityId |
network.session_id |
Das Rohlogfeld properties.signInActivityId wird in das UDM-Feld kopiert. |
properties.tenantId |
metadata.product_deployment_id |
Das Rohlogfeld properties.tenantId wird in das UDM-Feld kopiert. |
properties.tokenIssuedAt |
additional.fields.value.string_value |
Das Rohlogfeld properties.tokenIssuedAt wird in das UDM-Feld kopiert, wobei der Schlüssel tokenIssuedAt ist. |
properties.userAgent |
network.http.user_agent |
Das Rohlogfeld properties.userAgent wird in das UDM-Feld kopiert. |
properties.userId |
principal.user.userid |
Das Rohlogfeld properties.userId wird in das UDM-Feld kopiert. |
properties.wids |
security_result.detection_fields.value |
Das Rohlogfeld properties.wids wird in das UDM-Feld kopiert, wobei der Schlüssel wids ist. |
resourceId |
target.resource.attribute.labels.value |
Das Rohlogfeld resourceId wird in das UDM-Feld kopiert, wobei der Schlüssel Resource ID ist. |
resultSignature |
additional.fields.value.string_value |
Das Rohlogfeld resultSignature wird in das UDM-Feld kopiert, wobei der Schlüssel resultSignature ist. |
time |
metadata.event_timestamp |
Das Rohprotokollfeld time wird geparst, in einen Zeitstempel konvertiert und in das UDM-Feld kopiert. Das UDM-Feld event.idm.read_only_udm.metadata.event_type wird auf „NETWORK_HTTP“ gesetzt, wenn has_principal „true“ ist und network.http nicht leer ist, auf „STATUS_UPDATE“, wenn has_principal „true“ ist und network.http leer ist, oder andernfalls auf „GENERIC_EVENT“. Das UDM-Feld ist auf „Microsoft Graph“ festgelegt. Das UDM-Feld ist auf „Microsoft“ gesetzt. |
Änderungsprotokoll
Änderungsprotokoll für diesen Parser ansehen
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten