Microsoft Graph-Aktivitätsprotokolle erfassen

Unterstützt in:

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

  1. Suchen Sie in der Azure-Konsole nach Speicherkonten.
  2. Klicken Sie auf Erstellen.
  3. 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.
  4. Klicken Sie auf Überprüfen + Erstellen.
  5. Prüfen Sie die Übersicht des Kontos und klicken Sie auf Erstellen.
  6. Wählen Sie auf der Seite Storage Account Overview (Speicherkonto – Übersicht) unter Security + networking (Sicherheit und Netzwerk) das Untermenü Access keys (Zugriffsschlüssel) aus.
  7. Klicken Sie neben key1 oder key2 auf Anzeigen.
  8. Klicken Sie auf In Zwischenablage kopieren, um den Schlüssel zu kopieren.
  9. Speichern Sie den Schlüssel an einem sicheren Ort, damit Sie ihn später wiederfinden.

  10. Wählen Sie auf der Seite Speicherkontoübersicht unter Einstellungen das Untermenü Endpunkte aus.

  11. Klicken Sie auf In Zwischenablage kopieren, um die Endpunkt-URL des Blob-Dienstes zu kopieren (z. B. https://.blob.core.windows.net).

  12. 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

  1. Suchen Sie in der Azure-Konsole nach Entra ID.
  2. Wählen Sie Monitoring > Diagnoseeinstellungen aus.
  3. Klicken Sie auf + Diagnoseeinstellung hinzufügen.
  4. Geben Sie der Einstellung einen eindeutigen Namen (z. B. ms-graph-activity).
  5. Wählen Sie die Kategorie MicrosoftGraphActivityLog aus, die Sie nach Google SecOps exportieren möchten.
  6. Wählen Sie unter Zieldetails die Option In einem Speicherkonto archivieren aus.
  7. Wählen Sie Ihr Abo und das Speicherkonto aus, das Sie im vorherigen Schritt erstellt haben.
  8. Klicken Sie auf Speichern.

Microsoft Graph-Aktivitätsprotokolle einrichten

  1. Rufen Sie die Einstellungen > Datenverwaltung > Feeds auf. Wenn Sie eine reine SIEM-Plattform verwenden, rufen Sie die Einstellungen > Feeds auf.
  2. Klicken Sie auf Neuen Feed hinzufügen.
  3. Klicken Sie auf der nächsten Seite auf Einzelnen Feed konfigurieren.
  4. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. Microsoft Graph-Aktivitätsprotokolle.
  5. Wählen Sie Microsoft Azure Blob Storage V2 als Quelltyp aus.
  6. Wählen Sie als Protokolltyp die Option Microsoft Graph-Aktivitätsprotokolle aus.
  7. Klicken Sie auf Weiter.
  8. Geben Sie Werte für die folgenden Eingabeparameter an:

    • Azure-URI: die Blob-Endpunkt-URL.

      ENDPOINT_URL/BLOB_NAME

      Ersetzen 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.

  9. Klicken Sie auf Weiter.

  10. 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