איסוף יומני פעילות של Microsoft Graph

נתמך ב:

המנתח הזה מחלץ שדות מיומני הפעילות של Microsoft Graph וממיר אותם למודל הנתונים המאוחד (UDM). הוא מאתחל שדות UDM, מנתח את המטען הייעודי (payload), מחלץ חותמות זמן, ממפה מאפיינים שונים לשדות UDM, מטפל בכתובות IP וביציאות, ומסווג את סוג האירוע על סמך הנוכחות של מידע על המשתמש ועל הרשת.

לפני שמתחילים

ודאו שאתם עומדים בדרישות המוקדמות הבאות:

  • מופע של Google SecOps.
  • גישה עם הרשאות ל-Microsoft Entra ID ולחשבונות אחסון ב-Azure.

הגדרת חשבון אחסון ב-Azure

  1. במסוף Azure, מחפשים חשבונות אחסון.
  2. לוחצים על יצירה.
  3. מציינים ערכים לפרמטרים הבאים של הקלט:
    • מינוי: בוחרים את המינוי.
    • Resource Group: בוחרים את קבוצת המשאבים.
    • אזור: בוחרים את האזור.
    • ביצועים: בוחרים את רמת הביצועים הרצויה (מומלץ לבחור באפשרות "רגיל").
    • Redundancy (יתירות): בוחרים את רמת היתירות הרצויה (מומלץ לבחור ב-GRS או ב-LRS).
    • Storage account name: נותנים שם לחשבון האחסון החדש.
  4. לוחצים על Review + create.
  5. בודקים את הסקירה הכללית של החשבון ולוחצים על יצירה.
  6. בדף Storage Account Overview, בוחרים בתפריט המשנה Access keys בקטע Security + networking.
  7. לוחצים על הצגה לצד key1 או key2.
  8. לוחצים על העתקה ללוח כדי להעתיק את המפתח.
  9. שומרים את המפתח במקום מאובטח כדי שתוכלו להשתמש בו בעתיד.

  10. בדף Storage Account Overview, בוחרים בתפריט המשנה Endpoints בקטע Settings.

  11. לוחצים על Copy to clipboard כדי להעתיק את כתובת ה-URL של נקודת הקצה של Blob service (לדוגמה, https://.blob.core.windows.net).

  12. שומרים את כתובת ה-URL של נקודת הקצה במיקום מאובטח לשימוש עתידי.

הגדרת ייצוא של יומני הפעילות של Microsoft Graph לחשבון אחסון

  1. במסוף Azure, מחפשים את Entra ID.
  2. בוחרים באפשרות Monitoring (מעקב) > Diagnostic settings (הגדרות אבחון).
  3. לוחצים על ‎+ Add diagnostic setting.
  4. נותנים להגדרה שם ייחודי (לדוגמה, ms-graph-activity).
  5. בוחרים את הקטגוריה MicrosoftGraphActivityLog שרוצים לייצא ל-Google SecOps.
  6. בקטע Destination details, בוחרים באפשרות Archive to a storage account.
  7. בוחרים את המינוי ואת חשבון האחסון שיצרתם בשלב הקודם.
  8. לוחצים על Save.

איך מגדירים את יומני הפעילות של Microsoft Graph

  1. עוברים אל הגדרות > ניהול נתונים > פידים. אם אתם משתמשים בפלטפורמה של SIEM בלבד, עוברים אל הגדרות > פידים.
  2. לוחצים על הוספת פיד חדש.
  3. בדף הבא, לוחצים על הגדרת פיד יחיד.
  4. בשדה Feed name, נותנים שם לפיד, לדוגמה Microsoft Graph Activity Logs.
  5. בוחרים באפשרות Microsoft Azure Blob Storage V2 בתור Source type.
  6. בוחרים באפשרות Microsoft Graph Activity Logs בתור Log type.
  7. לוחצים על הבא.
  8. מציינים ערכים לפרמטרים הבאים של הקלט:

    • ‫Azure uri: כתובת ה-URL של נקודת הקצה של ה-blob.

      ENDPOINT_URL/BLOB_NAME

      מחליפים את מה שכתוב בשדות הבאים:

      • ENDPOINT_URL: כתובת ה-URL של נקודת הקצה של ה-blob‏ (https://<storageaccountname>.blob.core.windows.net)
      • ‫BLOB_NAME: השם של ה-blob (לדוגמה, insights-logs-)
    • אפשרויות למחיקת מקור: בוחרים את אפשרות המחיקה הרצויה.

    • גיל הקובץ המקסימלי: קבצים ששונו במספר הימים האחרונים. ברירת המחדל היא 180 ימים.

    • מפתח משותף: מפתח הגישה ל-Azure Blob Storage.

  9. לוחצים על הבא.

  10. בודקים את הגדרות הפיד החדש במסך סיום ולוחצים על שליחה.

יומנים לדוגמה של יומני פעילות נתמכים ב-Microsoft Graph

  • פורמט 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"
      }
    }
    
  • פורמט PascalCase של Azure Monitor

    {
      "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

    {
      "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 בגרסת בטא

    {
      "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

שדה ביומן מיפוי UDM Logic (פונקציה לוגית)
callerIpAddress principal.asset.ip השדה callerIpAddress ביומן הגולמי מועתק לשדה ב-UDM.
callerIpAddress principal.ip השדה callerIpAddress ביומן הגולמי מועתק לשדה ב-UDM.
category security_result.category_details השדה category ביומן הגולמי מועתק לשדה ב-UDM.
correlationId security_result.detection_fields.value השדה correlationId ביומן הגולמי מועתק לשדה ב-UDM, שבו המפתח הוא correlationId.
Level security_result.detection_fields.value השדה Level ביומן הגולמי מומר למחרוזת ומועתק לשדה UDM, שבו המפתח הוא Level.
operationName metadata.product_event_type השדה operationName ביומן הגולמי מועתק לשדה ב-UDM.
operationVersion additional.fields.value.string_value השדה operationVersion ביומן הגולמי מועתק לשדה UDM, שבו המפתח הוא operationVersion.
properties.apiVersion metadata.product_version השדה properties.apiVersion ביומן הגולמי מועתק לשדה ב-UDM.
properties.appId target.resource.product_object_id השדה properties.appId ביומן הגולמי מועתק לשדה ב-UDM.
properties.atContent additional.fields.value.string_value השדה properties.atContent ביומן הגולמי מועתק לשדה ב-UDM, שבו המפתח הוא atContent.
properties.clientAuthMethod extensions.auth.auth_details בהתאם לערך של properties.clientAuthMethod, השדה של ה-UDM מוגדר כ-"Public Client"‏ (0),‏ "מזהה לקוח/סוד לקוח"‏ (1) או "אישור לקוח"‏ (2).
properties.clientRequestId additional.fields.value.string_value השדה properties.clientRequestId ביומן הגולמי מועתק לשדה ב-UDM, שבו המפתח הוא clientRequestId.
properties.durationMs network.session_duration.seconds השדה properties.durationMs ביומן הגולמי מומר מאלפיות השנייה לשניות ומועתק לשדה ה-UDM.
properties.identityProvider security_result.detection_fields.value השדה properties.identityProvider ביומן הגולמי מועתק לשדה ב-UDM, שבו המפתח הוא identityProvider.
properties.ipAddress principal.asset.ip כתובת ה-IP מהשדה properties.ipAddress ביומן הגולמי נשלפת ומועתקת לשדה ב-UDM.
properties.ipAddress principal.ip כתובת ה-IP מהשדה properties.ipAddress ביומן הגולמי נשלפת ומועתקת לשדה ב-UDM.
properties.location principal.location.name השדה properties.location ביומן הגולמי מועתק לשדה ב-UDM.
properties.operationId security_result.detection_fields.value השדה properties.operationId ביומן הגולמי מועתק לשדה ב-UDM, שבו המפתח הוא operationId.
properties.requestMethod network.http.method השדה properties.requestMethod ביומן הגולמי מועתק לשדה ב-UDM.
properties.requestId metadata.product_log_id השדה properties.requestId ביומן הגולמי מועתק לשדה ב-UDM.
properties.responseSizeBytes network.received_bytes השדה properties.responseSizeBytes ביומן הגולמי מומר למספר שלם ללא סימן ומועתק לשדה ה-UDM.
properties.responseStatusCode network.http.response_code השדה properties.responseStatusCode ביומן הגולמי מומר למספר שלם ומועתק לשדה ה-UDM.
properties.roles additional.fields.value.string_value השדה properties.roles ביומן הגולמי מועתק לשדה ב-UDM, שבו המפתח הוא roles.
properties.scopes additional.fields.value.string_value השדה properties.scopes ביומן הגולמי מועתק לשדה ב-UDM, שבו המפתח הוא Scopes.
properties.servicePrincipalId principal.user.userid השדה properties.servicePrincipalId ביומן הגולמי מועתק לשדה ב-UDM אם השדה properties.userId ריק.
properties.signInActivityId network.session_id השדה properties.signInActivityId ביומן הגולמי מועתק לשדה ב-UDM.
properties.tenantId metadata.product_deployment_id השדה properties.tenantId ביומן הגולמי מועתק לשדה ב-UDM.
properties.tokenIssuedAt additional.fields.value.string_value השדה properties.tokenIssuedAt ביומן הגולמי מועתק לשדה ב-UDM, שבו המפתח הוא tokenIssuedAt.
properties.userAgent network.http.user_agent השדה properties.userAgent ביומן הגולמי מועתק לשדה ב-UDM.
properties.userId principal.user.userid השדה properties.userId ביומן הגולמי מועתק לשדה ב-UDM.
properties.wids security_result.detection_fields.value השדה properties.wids ביומן הגולמי מועתק לשדה ב-UDM, שבו המפתח הוא wids.
resourceId target.resource.attribute.labels.value השדה resourceId ביומן הגולמי מועתק לשדה ב-UDM, שבו המפתח הוא Resource ID.
resultSignature additional.fields.value.string_value השדה resultSignature ביומן הגולמי מועתק לשדה ב-UDM, שבו המפתח הוא resultSignature.
time metadata.event_timestamp השדה time ביומן הגולמי מנותח, מומר לחותמת זמן ומועתק לשדה ב-UDM. השדה event.idm.read_only_udm.metadata.event_type ב-UDM מוגדר כ-"NETWORK_HTTP" אם has_principal הוא True ו-network.http לא ריק, כ-"STATUS_UPDATE" אם has_principal הוא True ו-network.http ריק, או כ-"GENERIC_EVENT" במקרים אחרים. השדה UDM מוגדר ל-"Microsoft Graph". השדה UDM מוגדר ל-"Microsoft".

יומן שינויים

הצגת יומן השינויים של המנתח הזה

הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.