收集 Chronicle SOAR 稽核記錄
本文說明如何使用 Google Cloud Storage V2,將 Chronicle SOAR 稽核記錄檔擷取至 Google Security Operations。
Google Security Operations SOAR (安全性自動化調度管理、自動化和回應) 可讓安全團隊自動因應威脅,方法是擷取、分組並決定偵測工具快訊的優先順序,以便自動執行應對手冊並協調實際回應。SOAR 記錄會擷取 ETL、劇本和 Python 函式的重要資料,包括 Python 指令碼執行作業、快訊擷取作業和劇本效能。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體
- 已啟用 Cloud Storage API 的 Google Cloud 專案
- 建立及管理 GCS 值區的權限
- 管理 Google Cloud Storage 值區 IAM 政策的權限
- 建立及管理 Cloud Logging 接收器的權限
- 有權存取部署 Chronicle SOAR 的 Google Cloud 專案
- Google Cloud 專案的「記錄檢視者」 (
roles/logging.viewer) IAM 角色 記錄管理員 (
roles/logging.admin) IAM 角色,可建立記錄接收器
建立 Google Cloud Storage 值區
- 前往 Google Cloud Console。
- 選取專案或建立新專案。
- 在導覽選單中,依序前往「Cloud Storage」>「Bucket」。
- 按一下「建立值區」。
請提供下列設定詳細資料:
設定 值 為 bucket 命名 輸入全域不重複的名稱 (例如 chronicle-soar-audit-logs)位置類型 根據需求選擇 (區域、雙區域、多區域) 位置 選取位置 (例如 us-central1)儲存空間級別 標準 (建議用於經常存取的記錄) 存取控管 統一 (建議) 保護工具 選用:啟用物件版本管理或保留政策 點選「建立」。
啟用 SOAR 記錄收集功能 (僅限獨立部署)
如要為獨立部署啟用 SOAR 記錄匯出功能,請按照下列步驟操作:
- 在 Google Cloud 控制台中,依序前往「IAM 與管理」>「服務帳戶」。
- 按一下「Create Service Account」(建立服務帳戶)。
- 請提供下列設定詳細資料:
- 服務帳戶名稱:輸入
soar-logs-export-sa - 服務帳戶說明:輸入
Service account for exporting SOAR logs to Cloud Logging
- 服務帳戶名稱:輸入
- 按一下「建立並繼續」。
- 在「將專案存取權授予這個服務帳戶」部分:
- 按一下「選擇角色」。
- 搜尋並選取「記錄寫入者」。
- 按一下「繼續」。
- 按一下 [完成]。
- 在「Service Accounts」(服務帳戶) 清單中,找出服務帳戶 (
soar-logs-export-sa)。 - 依序點選「更多」圖示 more_vert>「管理權限」。
- 在「權限」部分中,按一下「授予存取權」。
在「新增主體」欄位中,輸入下列主體:
gke-init-backgroundservices@{SOAR-GCP-Project-Id}.iam.gserviceaccount.com在「指派角色」專區:
- 按一下「選擇角色」。
- 搜尋並選取「服務帳戶憑證建立者」。
按一下 [儲存]。
複製服務帳戶的完整電子郵件地址 (
soar-logs-export-sa@PROJECT_ID.iam.gserviceaccount.com)。將服務帳戶電子郵件連同支援單提交給 Google SecOps 支援團隊,以啟用記錄匯出功能。
設定 Cloud Logging 接收器,將 SOAR 記錄檔匯出至 GCS
Chronicle SOAR 記錄檔會寫入 chronicle-soar 命名空間的 Google Cloud Logging。您必須建立記錄接收器,將這些記錄檔傳送至 GCS 值區。
- 在 Google Cloud 控制台中,依序前往「Logging」(記錄) >「Log Router」(記錄檔路由器)。
- 選取已部署 Chronicle SOAR 的 Google Cloud 專案。
- 按一下「Create Sink」(建立接收器)。
- 在「接收器詳細資料」面板中,提供下列設定詳細資料:
- 接收器名稱:輸入
chronicle-soar-to-gcs - 接收器說明:輸入
Export Chronicle SOAR audit logs to GCS for Chronicle SIEM ingestion
- 接收器名稱:輸入
- 點選「下一步」。
- 在「接收器目的地」面板中:
- 在「Select sink service」(選取接收器服務) 選單中,選取「Cloud Storage bucket」(Cloud Storage 值區)。
- 在「選取 Cloud Storage bucket」選單中,選取 bucket (
chronicle-soar-audit-logs)。
- 點選「下一步」。
在「選擇要納入接收器的記錄檔」面板中:
在「Build inclusion filter」(建構納入篩選器) 欄位中,輸入下列篩選器:
resource.labels.namespace_name="chronicle-soar"這個篩選器會比對 ETL、劇本和 Python 服務的所有 SOAR 記錄。
按一下「預覽記錄」,確認篩選器符合預期的記錄項目。
點選「下一步」。
選用步驟:在「選擇要從接收器排除的記錄檔」面板中,您可以視需要新增排除篩選器。大多數部署作業都不需要排除項目。
按一下「Create Sink」(建立接收器)。
確認記錄是否已匯出至 GCS
- 等待 5 到 10 分鐘,系統就會將記錄匯出至 GCS bucket。
- 前往 Google Cloud 控制台中的「Cloud Storage」>「Buckets」。
- 按一下 bucket 名稱 (
chronicle-soar-audit-logs)。 確認系統是否在值區中建立記錄檔。檔案會依日期和時間排序:
chronicle-soar/YYYY/MM/DD/HH:MM:SS_<unique-id>.json按一下記錄檔即可預覽內容。每個檔案都包含 JSON 格式的記錄項目。
擷取 Google SecOps 服務帳戶
Google SecOps 會使用專屬服務帳戶,從 GCS bucket 讀取資料。您必須授予這個服務帳戶值區存取權。
取得服務帳戶電子郵件地址
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如
Chronicle SOAR Audit Logs)。 - 選取「Google Cloud Storage V2」做為「來源類型」。
- 選取「CHRONICLE_SOAR_AUDIT」做為「記錄類型」。
- 按一下「取得服務帳戶」。
系統會顯示專屬的服務帳戶電子郵件地址,例如:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com複製這個電子郵件地址,以便在下一步中使用。
點選「下一步」。
指定下列輸入參數的值:
儲存空間 bucket URL:輸入 GCS bucket URI,並加上前置路徑:
gs://chronicle-soar-audit-logs/chronicle-soar/來源刪除選項:根據偏好設定選取刪除選項:
- 永不:移轉後一律不刪除任何檔案 (建議用於測試)。
- 刪除已轉移的檔案:成功轉移檔案後刪除檔案。
- 刪除已轉移的檔案和空白目錄:成功轉移後刪除檔案和空白目錄。
檔案存在時間上限:包含在過去天數內修改的檔案 (預設為 180 天)
資產命名空間:資產命名空間
擷取標籤:要套用至這個動態饋給事件的標籤
點選「下一步」。
在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)。
將 IAM 權限授予 Google SecOps 服務帳戶
Google SecOps 服務帳戶需要 GCS bucket 的「Storage 物件檢視者」角色。
- 依序前往「Cloud Storage」>「Buckets」。
- 按一下 bucket 名稱 (
chronicle-soar-audit-logs)。 - 前往「權限」分頁標籤。
- 按一下「授予存取權」。
- 請提供下列設定詳細資料:
- 新增主體:貼上 Google SecOps 服務帳戶電子郵件地址
- 指派角色:選取「Storage 物件檢視者」
按一下 [儲存]。
依服務類型篩選 SOAR 記錄
Chronicle SOAR 記錄會依產生記錄的服務分類。您可以在 Cloud Logging 中篩選記錄,或為不同記錄類型建立個別接收器。
可用的記錄服務
可用的服務類型如下:
- 應對手冊:應對手冊執行作業的記錄,包括封鎖執行作業、動作結果和工作流程狀態
- python:Python 指令碼執行作業的記錄,包括整合動作、連接器和工作
- etl:快訊擷取和資料轉換程序的記錄
在 Cloud Logging 中依服務篩選
如要查看特定服務的記錄,請按照下列步驟操作:
- 在 Google Cloud 控制台中,依序前往「Logging」(記錄) >「Logs Explorer」(記錄檔探索工具)。
- 選取已部署 Chronicle SOAR 的 Google Cloud 專案。
輸入下列篩選器,即可查看特定服務的記錄:
resource.labels.namespace_name="chronicle-soar" resource.labels.container_name="playbook"將
playbook替換為python或etl,即可查看其他服務的記錄。
為不同記錄類型分別建立接收器
如要將不同類型的記錄檔傳送至不同的 GCS 值區或前置字元,請使用服務專屬的篩選器建立其他接收器:
- 請按照「設定 Cloud Logging 接收器,將 SOAR 記錄匯出至 GCS」一節中的步驟操作。
在「Build inclusion filter」(建立排除篩選器) 欄位中,使用下列其中一個篩選器:
僅限教戰手冊記錄:
resource.labels.namespace_name="chronicle-soar" resource.labels.container_name="playbook"僅限 Python 記錄:
resource.labels.namespace_name="chronicle-soar" resource.labels.container_name="python"僅限 ETL 記錄:
resource.labels.namespace_name="chronicle-soar" resource.labels.container_name="etl"
可篩選的記錄標籤
Chronicle SOAR 記錄包含標籤,可提供額外背景資訊,方便篩選和分析。
應對手冊標籤
劇本記錄可用的標籤如下:
playbook_definition:劇本定義的專屬 IDplaybook_name:劇本的易讀名稱block_name:正在執行的應對手冊區塊名稱block_definition:區塊定義的專屬 IDcase_id:Chronicle SOAR 案件 IDcorrelation_id:用於追蹤整個劇本在各項服務中的執行情況的專屬 IDintegration_name:使用的整合服務名稱action_name:正在執行的動作名稱
Python 標籤
Python 服務記錄提供下列標籤:
整合和連接器標籤:
integration_name:整合名稱integration_version:整合版本connector_name:連接器名稱connector_instance:連接器的執行個體 ID
工作標籤:
integration_name:整合名稱integration_version:整合版本job_name:排定時間執行的工作名稱
動作標籤:
integration_name:整合名稱integration_version:整合版本integration_instance:整合的執行個體 IDcorrelation_id:用於追蹤執行的專屬 IDaction_name:正在執行的動作名稱
ETL 標籤
ETL 服務記錄提供下列標籤:
correlation_id:追蹤快訊擷取流程的專屬 ID
使用 correlation_id 進行完整追蹤
correlation_id 標籤適用於劇本和 Python 服務記錄。使用這個標籤,從整個應對手冊執行作業中擷取所有相關聯的記錄:
- 在 Google Cloud 控制台中,依序前往「Logging」(記錄) >「Logs Explorer」(記錄檔探索工具)。
輸入下列篩選器:
resource.labels.namespace_name="chronicle-soar" labels.correlation_id="<correlation-id-value>"將
<correlation-id-value>替換為記錄檔項目的實際關聯 ID。
這個篩選條件會傳回劇本和 Python 服務的所有記錄,以取得完整的執行追蹤記錄。
UDM 對應表
| 記錄欄位 | UDM 對應 | 邏輯 |
|---|---|---|
| module、screenSize、activityItem、modificationTimeUnixTimeInMs | additional.fields | 如果存在,則從每個欄位建立合併標籤 |
| 使用者、作業 | extensions.auth.type | 如果使用者不為空白且作業為「登入」,請設為「AUTHTYPE_UNSPECIFIED」 |
| creationTimeUnixTimeInMs | metadata.event_timestamp | 剖析為 UNIX_MS 時間戳記 |
| 使用者、作業、地址 | metadata.event_type | 如果使用者不為空且作業為「登入」,則設為「USER_LOGIN」;如果使用者不為空,則設為「USER_RESOURCE_ACCESS」;如果地址為空,則設為「STATUS_UNCATEGORIZED」;否則設為「GENERIC_EVENT」 |
| 作業 | metadata.product_event_type | 直接複製值 |
| id | metadata.product_log_id | 已轉換為字串 |
| browser | network.http.parsed_user_agent | 已轉換為剖析後的使用者代理程式 |
| browser | network.http.user_agent | 直接複製值 |
| 地址 | principal.hostname | 設定地址是否與 IP 模式不符 |
| 地址 | principal.ip | 使用 grok 模式擷取的 IP |
| 來源 | principal.resource.resource_subtype | 直接複製值 |
| 使用者 | principal.user.userid | 直接複製值 |
| ContactEmails | security_result.about.user.email_addresses | 使用 grok 模式擷取的電子郵件地址 |
| ContactPhone | security_result.about.user.phone_numbers | 直接複製值 |
| ContactName | security_result.about.user.user_display_name | 直接複製值 |
| 名稱 | security_result.about.user.userid | 直接複製值 |
| currentActivity、previousActivity | security_result.detection_fields | 如果存在,則合併 currentActivity 和 previousActivity 中的標籤 |
| userGuid | target.user.product_object_id | 直接複製值 |
| metadata.product_name | 設為「CHRONICLE_SOAR_AUDIT」 | |
| metadata.vendor_name | 設為「CHRONICLE_SOAR_AUDIT」 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。