איסוף יומני 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

  1. נכנסים אל מסוף Google Cloud.
  2. בוחרים את הפרויקט או יוצרים פרויקט חדש.
  3. בתפריט הניווט, נכנסים ל-Cloud Storage > Buckets.
  4. לוחצים על Create bucket.
  5. מספקים את פרטי ההגדרה הבאים:

    הגדרה ערך
    Name your bucket (שם הקטגוריה) מזינים שם ייחודי גלובלית (לדוגמה, gmail-logs-export)
    סוג המיקום בוחרים לפי הצרכים (אזור, שני אזורים, מספר אזורים)
    Location בוחרים את המיקום (לדוגמה, us-central1)
    סוג האחסון (storage class) רגיל (מומלץ ליומנים שצריך לגשת אליהם לעיתים קרובות)
    בקרת גישה אחיד (מומלץ)
    כלים להגנה אופציונלי: הפעלת ניהול גרסאות של אובייקטים או מדיניות שמירת נתונים
  6. לוחצים על יצירה.

שימוש בכלי שורת הפקודה של 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 של יומנים ב-Workspace

  1. נכנסים עם חשבון סופר-אדמין למסוף Google Admin.
  2. נכנסים אל התפריט > דיווח > שילובים של נתונים.
  3. מעבירים את העכבר מעל הכרטיס BigQuery Export ולוחצים על עריכה.
  4. מסמנים את התיבה הפעלת ייצוא נתונים של Google Workspace ל-Google BigQuery.
  5. בקטע מזהה פרויקט ב-BigQuery, בוחרים את הפרויקט שבו רוצים לאחסן את היומנים.
  6. בקטע New dataset within project, מזינים את השם של מערך הנתונים שבו רוצים לאחסן את היומנים (לדוגמה, workspace_logs).
  7. אופציונלי: מסמנים את התיבה הגבלת מערך הנתונים למיקום גיאוגרפי ספציפי ובוחרים את המיקום מהתפריט.
  8. לוחצים על Save.

אחרי שמפעילים את הייצוא, אירועים ביומן הפעילות זמינים בדרך כלל תוך 10 דקות. הנתונים מיוצאים לטבלאות בשם activity_YYYYMMDD במערך הנתונים שצוין.

יצירת שאילתה מתוזמנת לייצוא מ-BigQuery ל-GCS

כדי לייצא אוטומטית יומני Gmail מ-BigQuery ל-Cloud Storage לפי לוח זמנים חוזר, יוצרים שאילתה מתוזמנת באמצעות ההצהרה EXPORT DATA.

שימוש במסוף BigQuery

  1. במסוף Google Cloud, עוברים אל BigQuery.
  2. בחלונית הניווט הימנית, לוחצים על Scheduled queries (שאילתות מתוזמנות).
  3. לוחצים על יצירת שאילתה מתוזמנת.
  4. בעורך השאילתות, מזינים את ה-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
  5. בקטע אפשרויות תזמון:

    • חזרה: בוחרים באפשרות שעות.
    • כל: מזינים 1.
    • התאריך והשעה של התחלת ההרצה: בוחרים את התאריך והשעה הנוכחיים.
  6. בקטע Destination for query results (יעד לתוצאות השאילתה):

    • מערך נתונים: בוחרים מערך נתונים למטא-נתונים של השאילתה (לא הנתונים המיוצאים).
  7. לוחצים על 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

  1. עוברים אל SIEM Settings > Feeds (הגדרות SIEM > פידים).
  2. לוחצים על הוספת פיד חדש.
  3. לוחצים על Configure a single feed (הגדרת פיד יחיד).
  4. בשדה שם הפיד, מזינים שם לפיד (לדוגמה, Gmail Logs).
  5. בוחרים באפשרות Google Cloud Storage V2 בתור סוג המקור.
  6. בוחרים באפשרות GMAIL Logs (יומנים של Gmail) בתור Log type (סוג היומן).

  7. לוחצים על Get Service Account (קבלת חשבון שירות). מוצגת כתובת אימייל ייחודית של חשבון השירות, לדוגמה:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. מעתיקים את כתובת האימייל הזו לשימוש בשלב הבא.

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

  10. מציינים ערכים לפרמטרים הבאים של הקלט:

    • כתובת ה-URL של קטגוריית האחסון: מזינים את ה-URI של קטגוריית GCS עם נתיב הקידומת:

       gs://gmail-logs-export/gmail-logs/
      
      • מחליפים את:
        • ‫gmail-logs-export: השם של קטגוריית GCS
        • ‫gmail-logs: הקידומת או הנתיב לתיקייה שבה מאוחסנים היומנים
    • אפשרות למחיקת המקור: בוחרים את אפשרות המחיקה המועדפת:

      • אף פעם: לא נמחקים קבצים אחרי ההעברה (מומלץ לבדיקות).
      • מחיקת קבצים שהועברו: הקבצים נמחקים אחרי שההעברה מסתיימת.
      • מחיקת קבצים שהועברו וספריות ריקות: מחיקת קבצים וספריות ריקות אחרי שההעברה מסתיימת.

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

    • מרחב השמות של הנכס: מרחב השמות של הנכס.

    • תוויות להוספה: התווית שתתווסף לאירועים מהפיד הזה.

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

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

הקצאת הרשאות IAM לחשבון השירות של Google SecOps

לחשבון השירות של Google SecOps צריך להיות התפקיד צפייה באובייקט אחסון בקטגוריה של GCS.

שימוש במסוף Google Cloud

  1. עוברים אל Cloud Storage > Buckets (קטגוריות).
  2. לוחצים על שם הקטגוריה.
  3. עוברים לכרטיסייה Permissions.
  4. לוחצים על הענקת גישה.
  5. מספקים את פרטי ההגדרה הבאים:
    • Add principals (הוספת ישויות מורשות): מדביקים את כתובת האימייל בחשבון של חשבון השירות של Google SecOps.
    • הקצאת תפקידים: בוחרים באפשרות צפייה באובייקט אחסון.
  6. לוחצים על 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 היגיון
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 מוגדר לתיאורים ספציפיים על סמך ערכי action_type, או מתוך description, או 'תוכן מעורר התנגדות' אם 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.