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

נתמך ב:

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

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

חשוב לוודא שמתקיימות דרישות הסף הבאות:

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

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

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

  10. בדף Storage Account Overview (סקירה כללית של חשבון אחסון), בוחרים באפשרות Endpoints (נקודות קצה) בתפריט המשנה Settings (הגדרות).

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

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

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

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

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

  1. עוברים אל SIEM Settings (הגדרות SIEM) > Feeds (פידים).
  2. לוחצים על הוספת פיד חדש.
  3. בדף הבא, לוחצים על הגדרת פיד יחיד.
  4. בשדה Feed name (שם הפיד), מזינים שם לפיד, למשל Microsoft Graph Activity Logs (יומני פעילות של Microsoft Graph).
  5. בוחרים באפשרות Microsoft Azure Blob Storage V2 בתור סוג המקור.
  6. בוחרים באפשרות Microsoft Graph Activity Logs (יומני פעילות של Microsoft Graph) בתור 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 היגיון
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),‏ Client ID/Client Secret (מזהה לקוח/סוד לקוח) (1) או Client Certificate (אישור לקוח) (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.