איסוף יומני 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 Export ליומני 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. לוחצים על Create scheduled query.
  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 בלבד, עוברים אל הגדרות > פידים.
  2. לוחצים על הוספת פיד חדש.
  3. לוחצים על הגדרת פיד יחיד.
  4. בשדה שם הפיד, מזינים שם לפיד (לדוגמה, Gmail Logs).
  5. בוחרים באפשרות Google Cloud Storage V2 בתור סוג המקור.
  6. בוחרים באפשרות יומני Gmail בתור סוג היומן.

  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: הקידומת או הנתיב לתיקייה שבה נשמרים היומנים
    • אפשרות מחיקת המקור: בוחרים את אפשרות המחיקה המועדפת:

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

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

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

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

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

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

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

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

באמצעות מסוף Google Cloud

  1. נכנסים לדף Cloud Storage > Buckets.
  2. לוחצים על שם הקטגוריה.
  3. עוברים לכרטיסייה Permissions.
  4. לוחצים על הענקת גישה.
  5. מזינים את פרטי ההגדרה הבאים:
    • הוספת חשבונות משתמשים: מדביקים את כתובת האימייל של חשבון השירות של 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 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.