Microsoft Graph-Aktivitätslogs erfassen
Dieser Parser extrahiert Felder aus Microsoft Graph-Aktivitätslogs und wandelt sie in das einheitliche Datenmodell (Unified Data Model, UDM) um. Er initialisiert UDM-Felder, parst die Nutzlast, extrahiert Zeitstempel, ordnet verschiedene Eigenschaften UDM-Feldern zu, verarbeitet IP-Adressen und Ports und kategorisiert den Ereignistyp anhand des Vorhandenseins von Prinzipal- 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-Kontoübersicht im Untermenü Sicherheit + Netzwerk die Option Zugriffsschlüssel aus.
- Klicken Sie neben Schlüssel 1 oder Schlüssel 2 auf Anzeigen.
- Klicken Sie auf In die 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 Storage-Kontoübersicht im Untermenü Einstellungen die Option Endpunkte aus.
Klicken Sie auf In die 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 sie später wiederfinden.
Export von Microsoft Graph-Aktivitätslogs 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 in 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ätslogs einrichten
- Rufen Sie die SIEM-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ätslogs.
- Wählen Sie als Quelltyp die Option Microsoft Azure Blob Storage V2 aus.
- Wählen Sie als Logtyp die Option Microsoft Graph-Aktivitätslogs 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 für das Löschen der Quelle: Wählen Sie die gewünschte Löschoption aus.
Maximales Alter der Datei: Dateien, die in den letzten Tagen geändert wurden. Die Standardeinstellung ist 180 Tage.
Freigegebener Schlüssel: Der Zugriffsschlüssel für Azure Blob Storage.
Klicken Sie auf Weiter.
Prüfen Sie die Konfiguration des neuen Feeds auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
Beispiel-Logs für unterstützte Microsoft Graph-Aktivitätslogs
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 umgewandelt 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 |
Abhängig vom Wert von properties.clientAuthMethod wird das UDM-Feld auf „Public Client“ (0), „Client ID/Client Secret“ (1) oder „Client Certificate“ (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 vorzeichenlose Ganzzahl umgewandelt und in das UDM-Feld kopiert. |
properties.responseStatusCode |
network.http.response_code |
Das Rohlogfeld properties.responseStatusCode wird in eine Ganzzahl umgewandelt 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 Rohlogfeld time wird geparst und in einen Zeitstempel umgewandelt 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, und andernfalls auf „GENERIC_EVENT“. Das UDM-Feld wird auf „Microsoft Graph“ gesetzt. Das UDM-Feld wird auf „Microsoft“ gesetzt. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten