איסוף יומני פעילות של Microsoft Graph
כלי ניתוח זה מחלץ שדות מיומני פעילות של Microsoft Graph, ומבצע בהם טרנספורמציה למודל נתונים מאוחד (UDM). הוא מאתחל שדות UDM, מנתח את המטען הייעודי (payload), מחלץ חותמות זמן, ממפה מאפיינים שונים לשדות UDM, מטפל בכתובות IP ובפורטים ומסווג את סוג האירוע על סמך נוכחות של מידע על העיקרון ועל הרשת.
לפני שמתחילים
חשוב לוודא שמתקיימות דרישות הסף הבאות:
- מופע של Google SecOps.
- גישה עם הרשאות לחשבונות אחסון ב-Microsoft Entra ID וב-Azure.
הגדרת חשבון אחסון ב-Azure
- במסוף Azure, מחפשים חשבונות אחסון.
- לוחצים על יצירה.
- מציינים ערכים לפרמטרים הבאים של הקלט:
- מינוי: בוחרים את המינוי.
- קבוצת משאבים: בוחרים את קבוצת המשאבים.
- אזור: בוחרים את האזור.
- ביצועים: בוחרים את רמת הביצועים הרצויה (מומלץ לבחור באפשרות 'רגיל').
- יתירות: בוחרים את רמת היתירות הרצויה (מומלץ לבחור GRS או LRS).
- שם חשבון אחסון: מזינים שם לחשבון האחסון החדש.
- לוחצים על בדיקה + יצירה.
- בודקים את הסקירה הכללית של החשבון ולוחצים על יצירה.
- בדף Storage Account Overview (סקירה כללית של חשבון אחסון), בוחרים בתפריט המשנה Access keys (מפתחות גישה) בקטע Security + networking (אבטחה + רשת).
- לוחצים על הצגה לצד key1 או key2.
- לוחצים על העתקה ללוח כדי להעתיק את המפתח.
שומרים את המפתח במקום בטוח לעיון עתידי.
בדף Storage Account Overview (סקירה כללית של חשבון אחסון), בוחרים באפשרות Endpoints (נקודות קצה) בתפריט המשנה Settings (הגדרות).
לוחצים על העתקה ללוח כדי להעתיק את כתובת ה-URL של נקודת הקצה של שירות ה-Blob (לדוגמה, https://
.blob.core.windows.net ).שומרים את כתובת ה-URL של נקודת הקצה במיקום מאובטח לעיון עתידי.
הגדרת ייצוא של יומני פעילות מ-Microsoft Graph לחשבון אחסון
- במסוף Azure, מחפשים את Entra ID.
- בוחרים באפשרות Monitoring (מעקב) > Diagnostic settings (הגדרות אבחון).
- לוחצים על + הוספת הגדרת אבחון.
- נותנים להגדרה שם ייחודי (לדוגמה, ms-graph-activity).
- בוחרים את הקטגוריה MicrosoftGraphActivityLog שרוצים לייצא ל-Google SecOps.
- בקטע פרטי יעד, בוחרים באפשרות העברה לארכיון בחשבון אחסון.
- בוחרים את המינוי ואת חשבון האחסון שיצרתם בשלב הקודם.
לוחצים על Save.
איך מגדירים את יומני הפעילות של Microsoft Graph
- עוברים אל SIEM Settings (הגדרות SIEM) > Feeds (פידים).
- לוחצים על הוספת פיד חדש.
- בדף הבא, לוחצים על הגדרת פיד יחיד.
- בשדה Feed name (שם הפיד), מזינים שם לפיד, למשל Microsoft Graph Activity Logs (יומני פעילות של Microsoft Graph).
- בוחרים באפשרות Microsoft Azure Blob Storage V2 בתור סוג המקור.
- בוחרים באפשרות Microsoft Graph Activity Logs (יומני פעילות של Microsoft Graph) בתור Log type (סוג היומן).
- לוחצים על הבא.
מציינים ערכים לפרמטרים הבאים של הקלט:
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.
לוחצים על הבא.
בודקים את ההגדרות של הפיד החדש במסך סיום ולוחצים על שליחה.
דוגמאות ליומני פעילות נתמכים של 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.