איסוף יומני Gmail
גרסת המנתח: 7.0
במסמך הזה מוסבר איך להטמיע יומני Gmail ב-Google Security Operations באמצעות Google Cloud Storage V2.
Gmail הוא שירות האימייל של Google Workspace, שמספק אימייל מאובטח וחכם עם הגנה מובנית מפני ספאם והגנה מפישינג. ביומני Gmail מתועד מידע מפורט על מסירת אימיילים, אירועי אבטחה וזרימת הודעות בתשתית של Gmail.
לפני שמתחילים
ודאו שאתם עומדים בדרישות המוקדמות הבאות:
- מכונה של Google SecOps
- פרויקט GCP עם Cloud Storage API ו-BigQuery API מופעלים
- חשבון Google Workspace עם מהדורה מתאימה (Enterprise Standard, Enterprise Plus, Education Standard או Education Plus)
- גישה של סופר-אדמין למסוף Admin ב-Google Workspace
- הרשאות ליצירה ולניהול של קטגוריות ב-GCS
- הרשאות לניהול מדיניות IAM בקטגוריות של GCS
- הרשאות ליצירת שאילתות מתוזמנות ב-BigQuery
- לחשבון השירות gapps-reports@system.gserviceaccount.com צריך להיות תפקיד עריכה בפרויקט BigQuery
יצירת קטגוריה של Google Cloud Storage
באמצעות מסוף Google Cloud
- נכנסים למסוף Google Cloud.
- בוחרים את הפרויקט או יוצרים פרויקט חדש.
- בתפריט הניווט, נכנסים ל-Cloud Storage > Buckets.
- לוחצים על Create bucket.
ממלאים את פרטי ההגדרה הבאים:
הגדרה ערך Name your bucket מזינים שם ייחודי ברמה גלובלית (לדוגמה, gmail-logs-export)סוג המיקום בוחרים לפי הצרכים (אזור, שני אזורים, מספר אזורים) Location בוחרים את המיקום (לדוגמה, us-central1)סוג אחסון (storage class) רגיל (מומלץ ליומנים שהגישה אליהם תכופה) בקרת גישה אחידה (מומלץ) כלי הגנה אופציונלי: הפעלת ניהול גרסאות של אובייקטים או מדיניות שמירת נתונים לוחצים על יצירה.
שימוש בכלי שורת הפקודה של Google Cloud
לחלופין, אפשר ליצור קטגוריה באמצעות הפקודה
gcloud:gcloud storage buckets create gs://gmail-logs-export \ --location=us-central1 \ --default-storage-class=STANDARD- מחליפים את:
-
gmail-logs-export: שם הקטגוריה הרצוי (ייחודי באופן גלובלי). -
us-central1: האזור המועדף (לדוגמה,us-central1,europe-west1).
-
- מחליפים את:
הגדרת Google Workspace לייצוא יומנים ל-BigQuery
יומני Google Workspace, כולל יומני Gmail, מיוצאים ל-BigQuery דרך התכונה המאוחדת של יומנים ודוחות ב-Workspace.
הפעלת BigQuery Export ליומני Workspace
- נכנסים עם חשבון סופר-אדמין למסוף Google Admin.
- עוברים אל תפריט > דיווח > שילובי נתונים.
- מציבים את הסמן מעל הכרטיס BigQuery Export ולוחצים על עריכה.
- מסמנים את התיבה הפעלת ייצוא נתונים של Google Workspace ל-Google BigQuery.
- בקטע מזהה פרויקט ב-BigQuery, בוחרים את הפרויקט שבו רוצים לאחסן את היומנים.
- בקטע New dataset within project, מזינים את השם של מערך הנתונים שבו רוצים לאחסן את היומנים (לדוגמה,
workspace_logs). - אופציונלי: מסמנים את התיבה הגבלת מערך הנתונים למיקום גיאוגרפי ספציפי ובוחרים את המיקום מהתפריט.
לוחצים על Save.
אחרי שמפעילים את הייצוא, האירועים ביומן הפעילות בדרך כלל זמינים תוך 10 דקות. הנתונים מיוצאים לטבלאות בשם activity_YYYYMMDD במערך הנתונים שצוין.
יצירת שאילתה מתוזמנת לייצוא מ-BigQuery ל-GCS
כדי לייצא באופן אוטומטי יומני Gmail מ-BigQuery ל-Cloud Storage לפי לוח זמנים קבוע, צריך ליצור שאילתה מתוזמנת באמצעות ההצהרה EXPORT DATA.
שימוש במסוף BigQuery
- במסוף Google Cloud, נכנסים ל-BigQuery.
- בחלונית הניווט שמימין, לוחצים על Scheduled queries.
- לוחצים על Create scheduled query.
בעורך השאילתות, מזינים את ה-SQL הבא:
EXPORT DATA OPTIONS( uri='gs://gmail-logs-export/gmail-logs/*.json', format='JSON', overwrite=false ) AS SELECT * FROM `PROJECT_ID.workspace_logs.activity_*` WHERE record_type = 'gmail' AND _TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))- מחליפים את:
-
gmail-logs-export: השם של קטגוריית GCS -
PROJECT_ID: מזהה הפרויקט ב-GCP -
workspace_logs: השם של מערך הנתונים ב-BigQuery
-
- מחליפים את:
בקטע אפשרויות תזמון:
- חזרה: בוחרים באפשרות שעות.
- כל: מזינים
1. - התאריך והשעה של התחלת ההרצה: בוחרים את התאריך והשעה הנוכחיים.
בקטע Destination for query results:
- קבוצת נתונים: בוחרים קבוצת נתונים למטא-נתונים של השאילתה (לא הנתונים שיוצאו).
לוחצים על Save.
שימוש בכלי שורת הפקודה של BigQuery
לחלופין, אפשר ליצור שאילתה מתוזמנת באמצעות הפקודה
bq:bq mk \ --transfer_config \ --project_id=PROJECT_ID \ --data_source=scheduled_query \ --display_name='Gmail Logs Export to GCS' \ --schedule='every 1 hours' \ --params='{ "query":"EXPORT DATA OPTIONS(uri=\"gs://gmail-logs-export/gmail-logs/*.json\", format=\"JSON\", overwrite=false) AS SELECT * FROM `PROJECT_ID.workspace_logs.activity_*` WHERE record_type = \"gmail\" AND _TABLE_SUFFIX = FORMAT_DATE(\"%Y%m%d\", DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))", "destination_table_name_template":"gmail_export_metadata", "write_disposition":"WRITE_TRUNCATE" }'- מחליפים את:
-
PROJECT_ID: מזהה הפרויקט ב-GCP -
gmail-logs-export: השם של קטגוריית GCS -
workspace_logs: השם של מערך הנתונים ב-BigQuery
-
- מחליפים את:
אחזור של חשבון השירות של Google SecOps
מערכת Google SecOps משתמשת בחשבון שירות ייחודי כדי לקרוא נתונים מהקטגוריה שלכם ב-GCS. אתם צריכים לתת לחשבון השירות הזה גישה לקטגוריה שלכם.
הגדרת פיד ב-Google SecOps כדי להטמיע יומני Gmail
- עוברים אל הגדרות > ניהול נתונים > פידים. אם אתם משתמשים בפלטפורמה של SIEM בלבד, עוברים אל הגדרות > פידים.
- לוחצים על הוספת פיד חדש.
- לוחצים על הגדרת פיד יחיד.
- בשדה שם הפיד, מזינים שם לפיד (לדוגמה,
Gmail Logs). - בוחרים באפשרות Google Cloud Storage V2 בתור סוג המקור.
בוחרים באפשרות יומני Gmail בתור סוג היומן.
לוחצים על Get Service Account (קבלת חשבון שירות). מוצגת כתובת אימייל ייחודית של חשבון שירות, לדוגמה:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comמעתיקים את כתובת האימייל הזו כדי להשתמש בה בשלב הבא.
לוחצים על הבא.
מציינים ערכים לפרמטרים הבאים של הקלט:
כתובת ה-URL של קטגוריית האחסון: מזינים את ה-URI של קטגוריית GCS עם נתיב הקידומת:
gs://gmail-logs-export/gmail-logs/- מחליפים את:
-
gmail-logs-export: השם של קטגוריית GCS -
gmail-logs: הקידומת או הנתיב לתיקייה שבה נשמרים היומנים
-
- מחליפים את:
אפשרות מחיקת המקור: בוחרים את אפשרות המחיקה המועדפת:
- Never: אף פעם לא למחוק קבצים אחרי העברות (מומלץ לבדיקה).
- מחיקת קבצים שהועברו: מחיקת קבצים אחרי שהם הועברו בהצלחה.
מחיקת קבצים שהועברו וספריות ריקות: מחיקת קבצים וספריות ריקות אחרי שההעברה מסתיימת.
גיל הקובץ המקסימלי: כולל קבצים ששונו במספר הימים האחרונים. ברירת המחדל היא 180 ימים.
מרחב השמות של הנכס: מרחב השמות של הנכס.
תוויות הטמעה: התווית שתתווסף לאירועים מהפיד הזה.
לוחצים על הבא.
בודקים את הגדרות הפיד החדש במסך סיום ולוחצים על שליחה.
מתן הרשאות IAM לחשבון השירות של Google SecOps
לחשבון השירות של Google SecOps צריך להיות התפקיד צפייה באובייקט אחסון בקטגוריה של GCS.
באמצעות מסוף Google Cloud
- נכנסים לדף Cloud Storage > Buckets.
- לוחצים על שם הקטגוריה.
- עוברים לכרטיסייה Permissions.
- לוחצים על הענקת גישה.
- מזינים את פרטי ההגדרה הבאים:
- הוספת חשבונות משתמשים: מדביקים את כתובת האימייל של חשבון השירות של Google SecOps.
- הקצאת תפקידים: בוחרים באפשרות צפייה באובייקטים באחסון.
- לוחצים על Save.
שימוש בכלי שורת הפקודה של Google Cloud
לחלופין, אפשר לתת הרשאות באמצעות הפקודה
gcloud:gcloud storage buckets add-iam-policy-binding gs://gmail-logs-export \ --member="serviceAccount:SECOPS_SERVICE_ACCOUNT_EMAIL" \ --role="roles/storage.objectViewer"- מחליפים את:
-
gmail-logs-export: שם הקטגוריה. -
SECOPS_SERVICE_ACCOUNT_EMAIL: כתובת האימייל של חשבון השירות ב-Google SecOps.
-
- מחליפים את:
שימוש בכלי שורת הפקודה gsutil (דור קודם)
נותנים לחשבון השירות של SecOps גישה מסוג "צפייה באובייקטים" לקטגוריית הייצוא של יומני Gmail.
gsutil iam ch serviceAccount:SECOPS_SERVICE_ACCOUNT_EMAIL:objectViewer \ gs://gmail-logs-export
אימות ההרשאות
כדי לוודא שההרשאות הוענקו בצורה נכונה:
gcloud storage buckets get-iam-policy gs://gmail-logs-export \ --flatten="bindings[].members" \ --filter="bindings.role:roles/storage.objectViewer"
כתובת האימייל של חשבון השירות של Google SecOps אמורה להופיע בפלט.
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | Logic (פונקציה לוגית) |
|---|---|---|
| attachment.file_extension_type, attachment.sha256, attachment.file_name, domains | מידע כללי | מוזגו עם פרטי הקבצים המצורפים והדומיינים של הקישורים |
| message_info.post_delivery_info.action_type, gmail.message_info.post_delivery_info.action_type, event_info.mail_event_type, gmail.event_info.mail_event_type, tok.product_bucket, tok.scope_name, record_type, token.client_type, message_info.num_message_attachments, gmail.message_info.num_message_attachments | additional.fields | מוזגו עם שדות שונים של מטא-נתונים נוספים |
| action_type, description, rule_id | metadata.description | Set to specific descriptions based on action_type values, or from description, or "Objectionable content" if rule_id == 7 |
| metadata.event_type | צריך להגדיר את הערך "EMAIL_TRANSACTION" | |
| event_name | metadata.product_event_type | הערך הועתק ישירות |
| metadata.product_name | צריך להגדיר את הערך "GMAIL" | |
| metadata.vendor_name | הגדרה ל-Google | |
| __incoming_message, __outcoming_message | network.direction | צריך להגדיר את הערך INBOUND אם זוהתה הודעה נכנסת, ואת הערך OUTBOUND אם זוהתה הודעה יוצאת |
| destination.address | network.email.cc | מוזגו מכתובות יעד שבהן האינדקס > 0 |
| message_info.source.from_header_address, message_info.source.address | network.email.from | ערך מ-from_header_address אם הוא לא ריק, אחרת מ-source.address |
| message_info.rfc2822_message_id, gmail.message_info.rfc2822_message_id | network.email.mail_id | חולץ מ-rfc2822_message_id, הסרת < >, באמצעות grok |
| message_info.subject, gmail.message_info.subject | network.email.subject | הערך מ-message_info.subject אם הוא לא ריק, אחרת gmail.message_info.subject |
| destination.address | network.email.to | מוזג מכתובת היעד הראשונה |
| network.ip_protocol | מגדירים את האפשרות "TCP" | |
| _payload_size | network.received_bytes | אם ההודעה נכנסת, צריך להגדיר את הערך _payload_size |
| _payload_size | network.sent_bytes | אם זו הודעה יוצאת, צריך להגדיר את הערך _payload_size |
| token.app_name, message_info.source.service, message_info.source.selector, gmail.message_info.source.service, gmail.message_info.source.selector | principal.application | ערך מ-token.app_name אם הוא לא ריק, אחרת משורשר מ-source.service ומ-source.selector |
| message_info.connection_info.client_host_zone, gmail.message_info.connection_info.client_host_zone | principal.asset.hostname | ערך מ-client_host_zone |
| client_ip | principal.asset.ip | הערך הועתק ישירות |
| message_info.connection_info.client_host_zone, gmail.message_info.connection_info.client_host_zone | principal.hostname | ערך מ-client_host_zone |
| client_ip | principal.ip | הערך הועתק ישירות |
| message_info.connection_info.ip_geo_country, gmail.message_info.connection_info.ip_geo_country | principal.location.country_or_region | ערך מ-ip_geo_country |
| email, source_address | principal.user.email_addresses | מוזג מ-email_address ומ-source_address |
| token.client_id | principal.user.group_identifiers | הערך הועתק ישירות |
| message_info.source.from_header_displayname, gmail.message_info.source.from_header_displayname | principal.user.user_display_name | ערך מ-from_header_displayname |
| source_address | principal.user.userid | הערך הועתק ישירות |
| פעולה | security_result.action | הערך הועתק ישירות |
| קטגוריה | security_result.category | הערך הועתק ישירות |
| category_details | security_result.category_details | הערך הועתק ישירות |
| message_info.connection_info.smtp_response_reason, gmail.message_info.connection_info.smtp_response_reason, rule_description, reason | security_result.description | הגדרה של הסיבה לתגובה של ה-SMTP, או תיאור הכלל, או סיבת הסיווג |
| stringMatch.predefined_detector_name, stringMatch.matched_string, stringMatch.match_expression, stringMatch.source, stringMatch.type | security_result.detection_fields | מוזג עם אובייקטים של שדות זיהוי |
| rule_id | security_result.rule_id | הערך הועתק ישירות |
| rule_name | security_result.rule_name | הערך הועתק ישירות |
| _err_summary, rule_id, description | security_result.summary | הגדרה של סיכום שגיאות, סיכום ספציפי לכלל או תיאור |
| _target_host | target.administrative_domain | הערך הועתק ישירות |
| message_info.destination.0.service, message_info.destination.0.selector, gmail.message_info.destination.0.service, gmail.message_info.destination.0.selector | target.application | משורשר מהשירות ומהסלקטור |
gmail.message_info.link_domain |
about.labels |
מופה מיומן השינויים |
gmail.message_info.description |
metadata.description |
מופה מיומן השינויים |
gmail.message_info.attachment.sha256 |
about.file.sha256 |
מופה מיומן השינויים |
gmail.message_info.destination.address |
network.email.to |
מופה מיומן השינויים |
gmail.message_info.attachment.file_name |
about.file.full_path |
מופה מיומן השינויים |
gmail.message_info.source.from_header_address |
network.email.from |
מופה מיומן השינויים |
gmail.message_info.attachment.file_extension_type |
about.file.mime_type |
מופה מיומן השינויים |
gmail.message_info.triggered_rule_info.rule_type |
security_result.rule_id |
מופה מיומן השינויים |
gmail.message_info.triggered_rule_info.rule_name |
security_result.rule_name |
מופה מיומן השינויים |
gmail.message_info.source.service", "gmail.message_info.source.selector |
principal.application |
מופה מיומן השינויים |
gmail.message_info.payload_size |
network.sent_bytes |
מופה מיומן השינויים |
gmail.message_info.payload_size |
network.received_bytes |
מופה מיומן השינויים |
gmail.message_info.destination.0.service", "gmail.message_info.destination.0.selector |
target.application |
מופה מיומן השינויים |
gmail.message_info.post_delivery_info.action_type", "gmail.message_info.num_message_attachments", and "gmail.event_info.mail_event_type |
additional.fields |
מופה מיומן השינויים |
event_info.success |
security_result.action |
מופה מיומן השינויים |
attachment.file_name |
about.file.full_path |
מופה מיומן השינויים |
message_info.post_delivery_info.action_type", "message_info.post_delivery_info.interaction.link_url", "event_info.mail_event_type |
additional.fields |
מופה מיומן השינויים |
יומן שינויים
הצגת יומן השינויים של המנתח הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.