收集 Google Cloud 監控快訊活動記錄

支援的國家/地區:

本文說明如何使用 Google Cloud Storage V2,將與 Cloud Monitoring 快訊活動相關的 Cloud Logging 記錄檔,擷取至 Google Security Operations。

Cloud Monitoring 提供 Google Cloud 資源的警報功能。記錄式警告政策會在記錄中出現特定訊息時通知您。當記錄項目符合警告政策的條件時,Cloud Monitoring 會開啟事件,並傳送事件通知。透過這項整合功能,您可以將 Cloud Logging 項目匯出至 Google Security Operations,進行安全性分析和關聯性分析。

事前準備

請確認您已完成下列事前準備事項:

  • Google SecOps 執行個體
  • 已啟用 Cloud Storage API 的Google Cloud 專案
  • 建立及管理 GCS 值區的權限
  • 管理 Google Cloud Storage 值區 IAM 政策的權限
  • 設定 Cloud Logging 接收器的權限

建立 Google Cloud Storage 值區

使用 Google Cloud 控制台

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

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

使用 gcloud 指令列工具

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

    gcloud storage buckets create gs://monitoring-logs-export \
        --location=us-central1 \
        --default-storage-class=STANDARD
    
    • 取代:
      • monitoring-logs-export:必要 bucket 名稱 (全域不重複)。
      • us-central1:偏好的區域。

設定 Cloud Logging,將記錄檔匯出至 GCS

記錄項目會以 JSON 檔案的形式儲存在 Cloud Storage 中。您可以匯出與 Cloud Monitoring 快訊活動相關的記錄,例如快訊政策管理稽核記錄。

建立記錄接收器

  1. Google Cloud 控制台中,依序前往「Logging」(記錄) >「Logs Router」(記錄檔路由器)
  2. 按一下「Create Sink」(建立接收器)
  3. 請提供下列設定詳細資料:
    • 接收器名稱:輸入描述性名稱 (例如 monitoring-alerts-to-gcs)。
    • 接收器說明:選填說明。
  4. 點選「下一步」
  5. 在「選取接收器服務」部分:
    • 接收器服務:選取「Cloud Storage bucket」(Cloud Storage 值區)
    • 選取 Cloud Storage bucket:從清單中選取 bucket (例如 monitoring-logs-export)。
  6. 點選「下一步」
  7. 在「選擇要納入接收器的記錄」部分中,輸入篩選查詢來選取要匯出的記錄。

    • Cloud Monitoring 稽核記錄的篩選器範例:

      protoPayload.serviceName="monitoring.googleapis.com"
      logName:"cloudaudit.googleapis.com/activity"
      
    • 記錄警告政策觸發條件的篩選器範例:

      如要匯出觸發記錄型快訊政策的基礎記錄,請使用符合這些特定記錄的篩選器。例如:

      severity >= ERROR
      resource.type="gce_instance"
      
  8. 點選「下一步」

  9. 選用:視需要設定排除篩選器。

  10. 按一下「Create Sink」(建立接收器)

將記錄檔資料傳送至 Cloud Storage 值區的新接收器,可能需要數小時才會開始傳送記錄檔項目。系統會以每小時批次作業的形式,將轉送的記錄項目儲存至 Cloud Storage bucket。第一批項目可能需要 2 到 3 個小時才會開始出現。

擷取 Google SecOps 服務帳戶

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

在 Google SecOps 中設定資訊提供,擷取 Cloud Monitoring 記錄

  1. 依序前往「SIEM 設定」>「動態饋給」
  2. 按一下「新增動態消息」
  3. 按一下「設定單一動態饋給」
  4. 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如 Google Cloud Monitoring Alerts Logs)。
  5. 選取「Google Cloud Storage V2」做為「來源類型」
  6. 選取「GCP_MONITORING_ALERTS」做為「記錄類型」

  7. 按一下「取得服務帳戶」。系統會顯示不重複的服務帳戶電子郵件地址,例如:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. 複製這個電子郵件地址,以便在下一步中使用。

  9. 點選「下一步」

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

    • 儲存空間 bucket URL:輸入 GCS bucket URI:

      gs://monitoring-logs-export/
      
      • 請將 monitoring-logs-export 替換為您的 GCS bucket 名稱。
    • 來源刪除選項:根據偏好設定選取刪除選項:

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

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

    • 資產命名空間資產命名空間

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

  11. 點選「下一步」

  12. 在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)

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

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

使用 Google Cloud 控制台

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

使用 gcloud 指令列工具

  • 或者,使用 gcloud 指令授予權限:

    gcloud storage buckets add-iam-policy-binding gs://monitoring-logs-export \
        --member="serviceAccount:SECOPS_SERVICE_ACCOUNT_EMAIL" \
        --role="roles/storage.objectViewer"
    
    • 取代:
      • monitoring-logs-export:bucket 名稱。
      • SECOPS_SERVICE_ACCOUNT_EMAIL:Google SecOps 服務帳戶電子郵件地址。

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

  • 授予 SecOps 服務帳戶必要權限,以便讀取目的地 bucket 中的物件:

    gsutil iam ch serviceAccount:SECOPS_SERVICE_ACCOUNT_EMAIL:objectViewer \
        gs://monitoring-logs-export
    

驗證權限

  • 如要確認權限是否已正確授予,請按照下列步驟操作:

    gcloud storage buckets get-iam-policy gs://monitoring-logs-export \
        --flatten="bindings[].members" \
        --filter="bindings.role:roles/storage.objectViewer"
    

    輸出內容應會顯示 Google SecOps 服務帳戶電子郵件地址。

UDM 對應表

記錄欄位 UDM 對應 邏輯
jsonPayload.type_1 additional.fields.jsonPayload_type_1 直接複製值
jsonPayload.debugInfo additional.fields.number 使用 grok 模式從 jsonPayload.debugInfo 擷取
jsonPayload.scheduledTime、receiveTimestamp、timestamp metadata.event_timestamp 如果 jsonPayload.scheduledTime 不為空值,則為該值;否則如果 receiveTimestamp 不為空值,則為該值;否則如果 timestamp 不為空值,則為該值,並使用日期比對轉換
event_type metadata.event_type 如果 event_type 不為空白,則為該值,否則設為「GENERIC_EVENT」
insertId metadata.product_log_id 直接複製值
jsonPayload.targetType network.application_protocol 直接複製值
httpRequest.status network.http.response_code 已轉換為整數
resource.labels.location principal.location.name 直接複製值
jsonPayload.jobName principal.url 直接複製值
jsonPayload.status security_result.action 如果 jsonPayload.status ==「PERMISSION_DENIED」,則設為「BLOCK」
嚴重性 security_result.severity 如果嚴重程度 =~ (?i)INFO,則設為 INFORMATIONAL;如果嚴重程度 == "LOW",則設為 LOW;如果嚴重程度 == "MEDIUM",則設為 MEDIUM;如果嚴重程度 == "HIGH",則設為 HIGH;如果嚴重程度 == "VERY-HIGH",則設為 CRITICAL
jsonPayload.debugInfo security_result.summary 使用 grok 模式從 jsonPayload.debugInfo 擷取
logName src.url 直接複製值
resource.labels.project_id target.resource.attribute.labels.project_id 直接複製值
resource.labels.job_id target.resource.attribute.labels.resource_labels_job_id 直接複製值
resource.type target.resource.resource_subtype 直接複製值
jsonPayload.url target.url 直接複製值
metadata.product_name 設為「Gcp_monitoring_alerts」
metadata.vendor_name 設為「GCP_MONITORING_ALERTS」

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。