收集 Gmail 記錄

剖析器版本:7.0

支援的服務:

本文說明如何使用 Google Cloud Storage V2,將 Gmail 記錄擷取至 Google Security Operations。

Gmail 是 Google Workspace 的電子郵件服務,提供安全、智慧的電子郵件,內建垃圾郵件和網路釣魚防護功能。Gmail 記錄會擷取電子郵件傳送、安全性事件,以及透過 Gmail 基礎架構傳送郵件流程的詳細資訊。

事前準備

請確認您符合下列必要條件:

  • Google SecOps 執行個體
  • 已啟用 Cloud Storage API 和 BigQuery API 的 GCP 專案
  • Google Workspace 帳戶 (Enterprise Standard、Enterprise Plus、Education Standard 或 Education Plus 版本)
  • Google Workspace 管理控制台的超級管理員存取權
  • 建立及管理 GCS bucket 的權限
  • 具備管理 GCS bucket IAM 政策的權限
  • 建立 BigQuery 排定查詢的權限
  • 服務帳戶 gapps-reports@system.gserviceaccount.com 必須具備 BigQuery 專案的編輯者角色

建立 Google Cloud Storage bucket

使用 Google Cloud 控制台

  1. 前往 Google Cloud 控制台。
  2. 選取專案或建立新專案。
  3. 在導覽選單中,依序前往「Cloud Storage」>「Bucket」。
  4. 按一下「建立值區」。
  5. 提供下列設定詳細資料:

    設定 值
    為 bucket 命名 輸入全域不重複的名稱 (例如 gmail-logs-export)
    位置類型 請根據需求選擇 (單一區域、雙區域、多區域)
    位置 選取位置 (例如 us-central1)
    儲存空間級別 標準 (建議用於經常存取的記錄)
    存取控管 統一 (建議)
    保護工具 選用:啟用物件版本管理或資料保留政策
  6. 點選「建立」。

使用 gcloud 指令列工具

  • 或者,您也可以使用 gcloud 指令建立 bucket:

    gcloud storage buckets create gs://gmail-logs-export \
        --location=us-central1 \
        --default-storage-class=STANDARD
    
    • 取代:
      • gmail-logs-export:要使用的 bucket 名稱 (全域不重複)。
      • us-central1:您偏好的區域 (例如 us-central1、europe-west1)。

設定 Google Workspace 將記錄匯出至 BigQuery

Google Workspace 記錄 (包括 Gmail 記錄) 會透過統一的 Workspace 記錄與報告功能匯出至 BigQuery。

啟用 Workspace 記錄的 BigQuery Export 功能

  1. 使用超級管理員帳戶登入 Google 管理控制台。
  2. 依序點選「選單」>「報告」>「資料整合」。
  3. 將滑鼠游標移至「BigQuery Export」資訊卡上,然後按一下「編輯」。
  4. 勾選「啟用匯出功能,將 Google Workspace 資料匯出至 Google BigQuery」方塊。
  5. 在「BigQuery 專案 ID」下方,選取要儲存記錄的專案。
  6. 在「專案中的新資料集」下方,輸入要用來儲存記錄的資料集名稱 (例如 workspace_logs)。
  7. (選用) 勾選「限制資料集只能放在特定地理位置」方塊,然後從選單中選取位置。
  8. 按一下「儲存」。

啟用匯出功能後,通常約在 10 分鐘後即可查看活動記錄事件。資料會匯出至指定資料集中名為 activity_YYYYMMDD 的資料表。

建立排定查詢,從 BigQuery 匯出至 GCS

如要定期將 Gmail 記錄從 BigQuery 自動匯出至 Cloud Storage,請使用 EXPORT DATA 陳述式建立排定的查詢。

使用 BigQuery 控制台

  1. 在 Google Cloud 控制台中,前往「BigQuery」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 bucket 名稱
      • PROJECT_ID:您的 GCP 專案 ID
      • workspace_logs:BigQuery 資料集名稱
  5. 在「Schedule options」(排程選項) 專區:

    • 重複:選取「小時」。
    • Every:輸入 1。
    • 「Start date and run time」(開始日期和執行時間):選取目前的日期和時間。
  6. 在「查詢結果的目的地」部分:

    • 資料集:選取查詢中繼資料 (而非匯出資料) 的資料集。
  7. 按一下「儲存」。

使用 bq 指令列工具

  • 或者,您也可以使用 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 專案 ID
      • gmail-logs-export:GCS bucket 名稱
      • workspace_logs:BigQuery 資料集名稱

擷取 Google SecOps 服務帳戶

Google SecOps 會使用專屬服務帳戶,從 GCS bucket 讀取資料。您必須授予這個服務帳戶值區存取權。

在 Google SecOps 設定動態饋給,擷取 Gmail 記錄

  1. 依序前往「設定」>「資料管理」>「動態饋給」。如果使用的是 SIEM 專用平台,請依序前往「設定」>「動態饋給」。
  2. 按一下「新增動態饋給」。
  3. 按一下「設定單一動態饋給」。
  4. 在「Feed name」(動態饋給名稱) 欄位中,輸入動態饋給名稱 (例如 Gmail Logs)。
  5. 選取「Google Cloud Storage V2」做為「來源類型」。
  6. 在「記錄類型」部分選取「Gmail 記錄」。

  7. 按一下「Get Service Account」。系統會顯示專屬服務帳戶電子郵件地址,例如:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. 複製這個電子郵件地址,下一個步驟將會用到。

  9. 點選「下一步」。

  10. 指定下列輸入參數的值:

    • Storage bucket URL:輸入 GCS bucket URI,並加上前置字元路徑:

       gs://gmail-logs-export/gmail-logs/
      
      • 取代:
        • gmail-logs-export:GCS bucket 名稱
        • gmail-logs:儲存記錄的前置字元/資料夾路徑
    • 來源刪除選項:根據偏好選取刪除選項:

      • Never:轉移後一律不刪除任何檔案 (建議用於測試)。
      • 刪除已轉移的檔案:在成功轉移後刪除檔案。
      • 刪除已轉移的檔案和空白目錄:成功轉移後,刪除檔案和空白目錄。

    • 檔案存在時間上限:包含過去幾天內修改過的檔案。預設值為 180 天。

    • Asset namespace:資產命名空間。

    • 擷取標籤:要套用至這個動態饋給事件的標籤。

  11. 點選「下一步」。

  12. 在「完成」畫面中檢查新的新聞動態消息設定,然後按一下「提交」。

將 IAM 權限授予 Google SecOps 服務帳戶

Google SecOps 服務帳戶需要 GCS bucket 的 Storage 物件檢視者角色。

使用 Google Cloud 控制台

  1. 依序前往「Cloud Storage」>「Bucket」。
  2. 按一下 bucket 名稱。
  3. 前往「權限」分頁。
  4. 按一下「授予存取權」。
  5. 提供下列設定詳細資料:
    • 新增主體:貼上 Google SecOps 服務帳戶電子郵件地址。
    • 指派角色:選取「Storage 物件檢視者」。
  6. 按一下「儲存」。

使用 gcloud 指令列工具

  • 或者,您也可以使用 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:bucket 名稱。
      • SECOPS_SERVICE_ACCOUNT_EMAIL:Google SecOps 服務帳戶電子郵件地址。

使用 gsutil 指令列工具 (舊版)

  • 將 Gmail 記錄匯出 bucket 的物件檢視者權限,授予 SecOps 服務帳戶。

    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,則設為「Objectionable content」
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 使用 grok 從 rfc2822_message_id 擷取,並移除 < >
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 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 直接複製值
category 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 專業人員尋求解答。