收集雲端入侵偵測系統 (Cloud IDS) 記錄

支援的國家/地區:

本文說明如何使用 Cloud Storage,將 Cloud IDS 記錄匯出及擷取至 Google Security Operations。剖析器會將 Google Cloud 的原始 JSON 格式 Cloud IDS 記錄轉換為結構化 UDM 格式。這項工具會擷取相關欄位、將這些欄位對應至 UDM 架構、將事件分類,並提供網路方向和資源類型等額外背景資訊,進而充實資料。

事前準備

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

  • Google SecOps 執行個體。
  • Cloud IDS 已在 Google Cloud 環境中設定並啟用。
  • 具備存取 Cloud IDS 的特殊權限 Google Cloud 和適當權限。

建立 Cloud Storage bucket

  1. 登入 Google Cloud 控制台。
  2. 前往「Cloud Storage Buckets」(Cloud Storage bucket) 頁面。

    前往「Buckets」(值區) 頁面

  3. 點選「建立」。

  4. 在「建立 bucket」頁面中,輸入 bucket 資訊。完成下列每個步驟後,請點選「繼續」前往下一個步驟:

    1. 在「開始使用」部分,執行下列操作:

      1. 輸入符合 bucket 名稱規定的專屬名稱,例如 gcp-ids-logs。
      2. 如要啟用階層結構式命名空間,請按一下展開箭頭,展開「為檔案導向和資料密集型工作負載提供最理想的儲存空間」部分,然後選取「為這個值區啟用階層結構式命名空間」。

      3. 如要新增區間標籤,請按一下展開箭頭,展開「標籤」部分。

      4. 按一下「新增標籤」,然後為標籤指定鍵和值。

    2. 在「Choose where to store your data」(選擇資料的儲存位置) 部分,執行下列操作:

      1. 選取「位置類型」。
      2. 使用位置類型選單選取位置,系統會將 bucket 中的物件資料永久儲存在該位置。

      3. 如要設定跨 bucket 複製作業,請展開「設定跨 bucket 複製作業」部分。

    3. 在「Choose a storage class for your data」(為資料選擇儲存空間級別) 部分,選取 bucket 的預設儲存空間級別,或選取「Autoclass」(自動分類),讓系統自動管理 bucket 資料的儲存空間級別。

    4. 在「選取如何控制物件的存取權」部分,選取「否」來強制執行「禁止公開存取」,並為 bucket 的物件選取「存取控管模式」。

    5. 在「選擇保護物件資料的方式」部分,執行下列操作:

      1. 選取「資料保護」下要為 bucket 設定的任何選項。
      2. 如要選擇物件資料的加密方式,請按一下標示為「資料加密」的展開箭頭,然後選取「資料加密方法」。
  5. 點選「建立」。

設定 Cloud IDS 記錄匯出功能

  1. 登入 Google Cloud 控制台。
  2. 前往「Logging」>「Log Router」。
  3. 按一下「建立接收器」。
  4. 提供下列設定參數:

    • 接收器名稱:輸入有意義的名稱,例如 google-cloud-ids-logs-sink。
    • 接收器目的地:選取「Cloud Storage」,然後提供 Google Cloud storage bucket URI,例如 gs://gcp-ids-logs。
    • 記錄檔篩選器:

      logName="projects/<your-project-id>/logs/cloud-ids"
      
  5. 點選「建立」。

設定 Cloud Storage 的權限

  1. 依序前往「IAM 與管理」>「身分與存取權管理」。
  2. 找出 Cloud Logging 服務帳戶。
  3. 在 bucket 上授予 roles/storage.admin。

設定動態饋給

如要設定動態消息,請按照下列步驟操作:

  1. 依序前往「SIEM 設定」>「動態饋給」。
  2. 按一下「新增動態饋給」。
  3. 在下一個頁面中,按一下「設定單一動態饋給」。
  4. 在「動態饋給名稱」欄位中輸入動態饋給名稱,例如「GCP IDS Logs」。
  5. 選取「Google Cloud Storage V2」做為「來源類型」。
  6. 選取「GCP IDS」做為「記錄類型」。
  7. 按一下「Chronicle Service Account」(Chronicle 服務帳戶) 欄位旁的「Get Service Account」(取得服務帳戶)。
  8. 點選「下一步」。
  9. 指定下列輸入參數的值:
    • 儲存空間 Bucket URI:Cloud Storage bucket 網址,例如 gs://gcp-ids-logs。
    • 來源刪除選項:根據偏好設定選取刪除選項。 注意:如果選取 Delete transferred files 或 Delete transferred files and empty directories 選項,請務必授予服務帳戶適當的權限。
    • 檔案存在時間上限:包含在過去天數內修改的檔案。預設值為 180 天
  10. 點選「下一步」。
  11. 在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)。

UDM 對應表

記錄欄位 UDM 對應 邏輯
insertId metadata.product_log_id 直接對應。
jsonPayload.alert_severity security_result.severity 直接對應。
jsonPayload.alert_time metadata.event_timestamp 直接對應。
jsonPayload.application principal.application 直接對應,僅限伺服器到用戶端方向。
jsonPayload.application target.application 直接對應,但僅限於方向為用戶端到伺服器,或 logName 包含 traffic 的情況。
jsonPayload.category security_result.category 根據「jsonPayload.category」的值對應:
-「dos」:NETWORK_DENIAL_OF_SERVICE
-「info-leak」:NETWORK_SUSPICIOUS
-「protocol-anomaly」:NETWORK_MALICIOUS
-「backdoor」、「spyware」、「trojan」:SOFTWARE_MALICIOUS
jsonPayload.category security_result.category_details 直接對應。
jsonPayload.cves extensions.vulns.vulnerabilities.cve_id 直接對應,在陣列中疊代。
jsonPayload.destination_ip_address target.ip 直接對應。
jsonPayload.destination_port target.port 直接對應。
jsonPayload.details extensions.vulns.vulnerabilities.description 直接對應。
jsonPayload.details security_result.detection_fields.value 如果存在「jsonPayload.repeat_count」,則會對應。金鑰會設為「repeat_count」。
jsonPayload.direction network.direction 根據「jsonPayload.direction」的值對應:
-「client-to-server」:OUTBOUND
-「server-to-client」:INBOUND
jsonPayload.elapsed_time network.session_duration.seconds 直接對應。
jsonPayload.ip_protocol network.ip_protocol 直接對應、轉換為大寫,然後對應至通訊協定編號。
jsonPayload.name security_result.threat_name 直接對應。
jsonPayload.network principal.resource.name 直接對應,僅限伺服器到用戶端方向。
jsonPayload.network target.resource.name 直接對應,但僅限於方向為用戶端到伺服器,或 logName 包含 traffic 的情況。
jsonPayload.repeat_count security_result.detection_fields.value 如果存在,則會對應。金鑰會設為「repeat_count」。
jsonPayload.session_id network.session_id 直接對應。
jsonPayload.source_ip_address principal.ip 直接對應。
jsonPayload.source_port principal.port 直接對應。
jsonPayload.start_time about.labels.value 如果存在,則會對應。鍵設為「start_time」。
jsonPayload.start_time additional.fields.value.string_value 如果存在,則會對應。鍵設為「start_time」。
jsonPayload.threat_id security_result.threat_id 直接對應。
jsonPayload.total_bytes about.labels.value 如果存在,則會對應。金鑰會設為「total_bytes」。
jsonPayload.total_bytes additional.fields.value.string_value 如果存在,則會對應。金鑰會設為「total_bytes」。
jsonPayload.total_packets about.labels.value 如果存在,則會對應。金鑰設為「total_packets」。
jsonPayload.total_packets additional.fields.value.string_value 如果存在,則會對應。金鑰設為「total_packets」。
jsonPayload.type security_result.detection_fields.value 如果存在,則會對應。金鑰設為「type」。
jsonPayload.uri_or_filename target.file.full_path 直接對應。
logName security_result.category_details 直接對應。
receiveTimestamp metadata.collected_timestamp 直接對應。
resource.labels.id observer.resource.product_object_id 直接對應。
resource.labels.location observer.location.name 直接對應。
resource.labels.resource_container observer.resource.name 直接對應。
resource.type observer.resource.resource_subtype 直接對應。
metadata.event_type 根據其他欄位的值和是否存在,由一組條件規則決定,預設為「GENERIC_EVENT」。
metadata.vendor_name 靜態值:Google Cloud Platform。
metadata.product_name 靜態值:GCP_IDS。
metadata.log_type 靜態值:GCP_IDS。
extensions.vulns.vulnerabilities.vendor 靜態值:GCP_IDS,為「jsonPayload.cves」中的每個 CVE 新增。
principal.resource.resource_type 靜態值:VPC_NETWORK,如果「jsonPayload.network」存在且方向為伺服器到用戶端,則會新增此值。
target.resource.resource_type 靜態值:VPC_NETWORK,如果存在「jsonPayload.network」且方向為用戶端到伺服器,或 logName 包含 traffic,則會新增這個值。
observer.resource.resource_type 靜態價值:CLOUD_PROJECT,如果存在「resource.labels.resource_container」或「resource.type」,就會新增這個值。
observer.resource.attribute.cloud.environment 靜態價值:GOOGLE_CLOUD_PLATFORM,如果存在「resource.labels.resource_container」或「resource.type」,就會新增這個值。

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