Microsoft Graph-Aktivitätslogs erfassen
Dieser Parser extrahiert Felder aus Microsoft Graph-Aktivitätslogs und wandelt sie in das Unified Data Model (UDM) um. Es initialisiert UDM-Felder, parst die Nutzlast, extrahiert Zeitstempel, ordnet verschiedene Eigenschaften UDM-Feldern zu, verarbeitet IP-Adressen und Ports und kategorisiert den Ereignistyp basierend auf dem Vorhandensein von Haupt- 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 das gewünschte Leistungsniveau aus. Das Standardniveau wird empfohlen.
- Redundanz: Wählen Sie die gewünschte Redundanzebene aus (GRS oder LRS wird empfohlen).
- Storage-Kontoname: Geben Sie einen Namen für das neue Speicherkonto ein.
- Klicken Sie auf Überprüfen + Erstellen.
- Sehen Sie sich die Übersicht des Kontos an und klicken Sie auf Erstellen.
- Wählen Sie auf der Seite Storage Account Overview (Speicherkonto – Übersicht) im Untermenü Security + networking (Sicherheit + Netzwerk) die Option Access keys (Zugriffsschlüssel) aus.
- Klicken Sie neben key1 oder key2 auf Anzeigen.
- Klicken Sie auf In die Zwischenablage kopieren, um den Schlüssel zu kopieren.
Bewahren Sie den Schlüssel an einem sicheren Ort auf, damit Sie ihn später wiederfinden.
Wählen Sie auf der Seite Storage Account Overview (Speicherkontoübersicht) im Untermenü Settings (Einstellungen) die Option Endpoints (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.
Microsoft Graph-Aktivitätslogexport in 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 Einen 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 Microsoft Graph Activity Logs (Microsoft Graph-Aktivitätsprotokolle) als Log type (Protokolltyp) 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 von Quellen: Wählen Sie die gewünschte Option zum Löschen aus.
Maximales Dateialter: Dateien, die in den letzten Tagen geändert wurden. Der Standardwert ist 180 Tage.
Geteilter 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.
Beispielprotokolle für unterstützte 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, in dem 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, dessen 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, in dem 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 |
Je nach 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 umgerechnet 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, in dem 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 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