收集 CrowdStrike Falcon Event Streams 記錄
剖析器版本:12.0
本文說明如何使用 Google Cloud Storage V2,將 CrowdStrike Falcon Event Streams 記錄檔擷取至 Google Security Operations。CrowdStrike Falcon Event Streams 提供即時串流 API,可從 Falcon 平台傳送安全事件資料,包括偵測事件、稽核事件、驗證活動和事件更新。Event Streams API 會使用與 /sensors/entities/datafeed/v2 端點的永久 HTTP 連線,近乎即時地推送事件,並支援以偏移量為準的續傳功能,確保事件能可靠地傳送。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體。
- 已啟用 Cloud Storage API 的 GCP 專案。
- 建立及管理 GCS 值區的權限。
- 具備管理 Google Cloud Storage 值區身分與存取權管理政策的權限。
- 建立 Cloud Run 服務、Pub/Sub 主題和 Cloud Scheduler 工作的權限。
- 具備建立 API 用戶端權限的 CrowdStrike Falcon Console 專屬存取權。
建立 Google Cloud Storage bucket
- 前往 Google Cloud 控制台。
- 選取專案或建立新專案。
- 在導覽選單中,依序前往「Cloud Storage」>「Bucket」。
- 按一下「建立值區」。
請提供下列設定詳細資料:
設定 值 為 bucket 命名 輸入全域不重複的名稱 (例如 cs-stream-logs)位置類型 根據需求選擇 (區域、雙區域、多區域) 位置 選取位置 (例如 us-central1)儲存空間級別 標準 (建議用於經常存取的記錄) 存取控管 統一 (建議) 保護工具 選用:啟用物件版本管理或保留政策 點選「建立」。
設定 CrowdStrike Falcon API 存取權
建立 API 用戶端
- 登入 CrowdStrike Falcon Console。
- 在導覽選單中,依序前往「支援與資源」>「資源和工具」>「API 用戶端和金鑰」。
- 按一下「建立 API 用戶端」。
- 請提供下列設定詳細資料:
- 用戶端名稱:輸入描述性名稱 (例如
Google SecOps Event Streams Integration)。 - 說明 (選填):輸入說明 (例如
API client for streaming events to GCS)。
- 用戶端名稱:輸入描述性名稱 (例如
- 在「API 範圍」部分,選取下列權限:
- 事件串流:選取「讀取」 (使用串流 API 時必須選取)。
- 點選「建立」。
記錄 API 憑證
建立 API 用戶端後,您會收到下列憑證:
- 用戶端 ID:32 個字元的小寫十六進位字串。
- 用戶端密鑰:40 個字元的英數字元字串。
- 基準網址:CrowdStrike API 的完整網域名稱 (例如
api.crowdstrike.com或api.us-2.crowdstrike.com)。
重要事項:請立即複製並儲存「Client Secret」。這個值只會顯示一次,之後便無法擷取。
地區端點
CrowdStrike 在多個地區營運,並提供不同的 API 端點:
| 區域 | 基準網址 |
|---|---|
| US-1 | api.crowdstrike.com |
| US-2 | api.us-2.crowdstrike.com |
| EU-1 | api.eu-1.crowdstrike.com |
| US-GOV-1 | api.laggar.gcw.crowdstrike.com |
重要事項:請使用與 CrowdStrike Falcon Console 登入區域對應的基本網址。
驗證權限
如要確認 API 用戶端是否具備必要權限,請按照下列步驟操作:
- 登入 CrowdStrike Falcon Console。
- 依序前往「支援與資源」「資源和工具」「API 用戶端和金鑰」。
- 找出您建立的 API 用戶端,並確認「事件串流」範圍顯示「讀取」存取權。
測試 API 存取權
請先測試憑證,再繼續進行整合:
CLIENT_ID="<your-client-id>" CLIENT_SECRET="<your-client-secret>" BASE_URL="https://api.crowdstrike.com" # Get OAuth2 token TOKEN=$(curl -s -X POST "${BASE_URL}/oauth2/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "client_id=${CLIENT_ID}&client_secret=${CLIENT_SECRET}" | python3 -c "import sys,json; print(json.load(sys.stdin)['access_token'])") # Test Event Streams API access (discover available data feeds) curl -s -H "Authorization: Bearer ${TOKEN}" \ "${BASE_URL}/sensors/entities/datafeed/v2?appId=secops-test&format=flatjson"
如果回應成功,系統會傳回 JSON 物件,其中包含每個可用串流分割區的 resources 欄位和 dataFeedURL 欄位。sessionTokendataFeedURLsessionToken
為 Cloud Run 函式建立服務帳戶
Cloud Run 函式需要具備 GCS bucket 寫入權限,且可由 Pub/Sub 叫用的服務帳戶。
建立服務帳戶
- 在 GCP 控制台中,依序前往「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。
- 按一下「Create Service Account」(建立服務帳戶)。
- 請提供下列設定詳細資料:
- 服務帳戶名稱:輸入
cs-stream-collector-sa - 服務帳戶說明:輸入
Service account for Cloud Run function to collect CrowdStrike Event Streams logs
- 服務帳戶名稱:輸入
- 按一下「建立並繼續」。
- 在「將專案存取權授予這個服務帳戶」部分,新增下列角色:
- 按一下「選擇角色」。
- 搜尋並選取「Storage 物件管理員」。
- 點選「+ 新增其他角色」。
- 搜尋並選取「Cloud Run Invoker」。
- 點選「+ 新增其他角色」。
- 搜尋並選取「Cloud Functions Invoker」(Cloud Functions 叫用者)。
- 按一下「繼續」。
- 按一下 [完成]。
這些角色適用於:
- Storage 物件管理員:將記錄檔寫入 GCS bucket,並管理狀態檔案
- Cloud Run 叫用者:允許 Pub/Sub 叫用函式
- Cloud Functions 叫用者:允許函式叫用
授予 GCS 值區的 IAM 權限
將 GCS bucket 的寫入權限授予服務帳戶:
- 依序前往「Cloud Storage」>「Buckets」。
- 點按 bucket 名稱 (例如
cs-stream-logs)。 - 前往「權限」分頁標籤。
- 按一下「授予存取權」。
- 請提供下列設定詳細資料:
- 新增主體:輸入服務帳戶電子郵件地址 (例如
cs-stream-collector-sa@PROJECT_ID.iam.gserviceaccount.com) - 指派角色:選取「Storage 物件管理員」
- 新增主體:輸入服務帳戶電子郵件地址 (例如
- 按一下 [儲存]。
建立 Pub/Sub 主題
建立 Pub/Sub 主題,Cloud Scheduler 會將訊息發布至該主題,而 Cloud Run 函式會訂閱該主題。
- 在 GCP Console 中,前往「Pub/Sub」>「Topics」(主題)。
- 按一下「建立主題」。
- 請提供下列設定詳細資料:
- 主題 ID:輸入
cs-stream-trigger - 其他設定保留預設值
- 主題 ID:輸入
- 點選「建立」。
建立 Cloud Run 函式來收集記錄
Cloud Run 函式會由 Cloud Scheduler 的 Pub/Sub 訊息觸發,連線至 CrowdStrike Event Streams API、取用事件,並將事件寫入 GCS。
- 前往 GCP Console 的「Cloud Run」。
- 按一下「Create service」(建立服務)。
- 選取「函式」 (使用內嵌編輯器建立函式)。
在「設定」部分,提供下列設定詳細資料:
設定 值 服務名稱 cs-stream-collector區域 選取與 GCS bucket 相符的區域 (例如 us-central1)執行階段 選取 Python 3.12 以上版本 在「Trigger (optional)」(觸發條件 (選用)) 專區:
- 按一下「+ 新增觸發條件」。
- 選取「Cloud Pub/Sub」。
- 在「Select a Cloud Pub/Sub topic」(選取 Cloud Pub/Sub 主題) 中,選擇
cs-stream-trigger。 - 按一下 [儲存]。
在「Authentication」(驗證) 部分:
- 選取「需要驗證」。
- 檢查 Identity and Access Management (IAM)。
向下捲動並展開「容器」、「網路」和「安全性」。
前往「安全性」分頁:
- 服務帳戶:選取
cs-stream-collector-sa
- 服務帳戶:選取
前往「容器」分頁:
- 按一下「變數與密鑰」。
- 針對每個環境變數,按一下「+ 新增變數」:
變數名稱 範例值 說明 GCS_BUCKETcs-stream-logsGCS bucket 名稱 GCS_PREFIXcrowdstrike/stream記錄檔的前置字串 STATE_KEYcrowdstrike/stream/state.json狀態檔案路徑 CS_BASE_URLhttps://api.crowdstrike.comCrowdStrike API 基準網址 CS_CLIENT_IDyour-client-idAPI 用戶端 ID CS_CLIENT_SECRETyour-client-secretAPI 用戶端密碼 CS_APP_IDsecops-stream-collector事件串流的專屬應用程式 ID (最多 32 個英數字元) STREAM_TIMEOUT300串流讀取逾時時間 (以秒為單位) MAX_RECORDS10000每次執行的記錄數上限 在「變數與密鑰」部分,向下捲動至「要求」:
- 要求逾時:輸入
600秒 (10 分鐘)
- 要求逾時:輸入
前往「設定」分頁:
- 在「資源」部分:
- 記憶體:選取 512 MiB 以上
- CPU:選取 1
- 在「資源」部分:
在「修訂版本資源調度」部分:
- 執行個體數量下限:輸入
0 - 執行個體數量上限:輸入
1(一次只能執行一個串流消費者)
- 執行個體數量下限:輸入
點選「建立」。
等待服務建立完成 (1 到 2 分鐘)。
服務建立完成後,系統會自動開啟內嵌程式碼編輯器。
新增函式程式碼
- 在「進入點」欄位中輸入「main」。
在內嵌程式碼編輯器中,建立兩個檔案:
main.py:
import functions_framework from google.cloud import storage import json import os import urllib3 from datetime import datetime, timezone # Initialize HTTP client with timeouts http = urllib3.PoolManager( timeout=urllib3.Timeout(connect=5.0, read=30.0), retries=False, ) # Initialize Storage client storage_client = storage.Client() # Environment variables GCS_BUCKET = os.environ.get('GCS_BUCKET') GCS_PREFIX = os.environ.get('GCS_PREFIX', 'crowdstrike/stream') STATE_KEY = os.environ.get('STATE_KEY', 'crowdstrike/stream/state.json') CS_BASE_URL = os.environ.get('CS_BASE_URL', 'https://api.crowdstrike.com') CS_CLIENT_ID = os.environ.get('CS_CLIENT_ID') CS_CLIENT_SECRET = os.environ.get('CS_CLIENT_SECRET') CS_APP_ID = os.environ.get('CS_APP_ID', 'secops-stream-collector') STREAM_TIMEOUT = int(os.environ.get('STREAM_TIMEOUT', '300')) MAX_RECORDS = int(os.environ.get('MAX_RECORDS', '10000')) def get_oauth_token(base_url: str, client_id: str, client_secret: str) -> str: """Get CrowdStrike OAuth2 access token.""" token_url = f"{base_url}/oauth2/token" body = f"client_id={client_id}&client_secret={client_secret}" response = http.request( 'POST', token_url, body=body.encode('utf-8'), headers={'Content-Type': 'application/x-www-form-urlencoded'} ) if response.status != 200: raise Exception(f"OAuth token request failed: {response.status}") data = json.loads(response.data.decode('utf-8')) return data['access_token'] def refresh_stream_session(base_url: str, token: str, app_id: str, partition: int = 0): """Refresh an active stream session to keep it alive.""" refresh_url = ( f"{base_url}/sensors/entities/datafeed-actions/v1/{partition}" f"?appId={app_id}&action_name=refresh_active_stream_session" ) response = http.request( 'POST', refresh_url, headers={ 'Authorization': f'Bearer {token}', 'Content-Type': 'application/json', } ) if response.status == 200: print("Stream session refreshed successfully") else: print(f"Warning: Stream session refresh returned {response.status}") @functions_framework.cloud_event def main(cloud_event): """ Cloud Run function triggered by Pub/Sub to fetch CrowdStrike Event Streams data and write to GCS. """ if not all([GCS_BUCKET, CS_BASE_URL, CS_CLIENT_ID, CS_CLIENT_SECRET]): print('Error: Missing required environment variables') return try: bucket = storage_client.bucket(GCS_BUCKET) # Load state state = load_state(bucket, STATE_KEY) # Get OAuth token token = get_oauth_token(CS_BASE_URL, CS_CLIENT_ID, CS_CLIENT_SECRET) headers = { 'Authorization': f'Bearer {token}', 'Accept': 'application/json', } # Discover available data feeds discover_url = ( f"{CS_BASE_URL}/sensors/entities/datafeed/v2" f"?appId={CS_APP_ID}&format=flatjson" ) response = http.request('GET', discover_url, headers=headers) if response.status != 200: print(f"Failed to discover data feed: {response.status}") print(f"Response: {response.data.decode('utf-8')}") return feed_data = json.loads(response.data.decode('utf-8')) resources = feed_data.get('resources', []) if not resources: print("No data feed resources available") return feed_url = resources[0].get('dataFeedURL', '') session_token = resources[0].get( 'sessionToken', {} ).get('token', '') if not feed_url or not session_token: print("Missing feed URL or session token") return # Build stream URL with offset if available stream_url = feed_url offset = state.get('offset') if offset: stream_url = f"{feed_url}&offset={offset}" # Connect to Event Stream stream_headers = { 'Authorization': f'Token {session_token}', 'Accept': 'application/json', 'Connection': 'keep-alive', } stream_http = urllib3.PoolManager( timeout=urllib3.Timeout( connect=10.0, read=float(STREAM_TIMEOUT) ), retries=False, ) print(f"Connecting to Event Stream...") resp = stream_http.request( 'GET', stream_url, headers=stream_headers, preload_content=False ) if resp.status != 200: print(f"Stream connection failed: {resp.status}") return records = [] latest_offset = offset now = datetime.now(timezone.utc) for line in resp.stream(4096): decoded = line.decode('utf-8').strip() if not decoded: continue try: event = json.loads(decoded) records.append(event) event_offset = event.get( 'metadata', {} ).get('offset') if event_offset is not None: latest_offset = event_offset if len(records) >= MAX_RECORDS: print( f"Reached max records limit ({MAX_RECORDS})" ) break except json.JSONDecodeError: continue resp.release_conn() if not records: print("No new events found in stream.") # Refresh stream session to keep it alive refresh_stream_session( CS_BASE_URL, token, CS_APP_ID ) return # Write to GCS as NDJSON timestamp = now.strftime('%Y%m%d_%H%M%S') object_key = f"{GCS_PREFIX}/logs_{timestamp}.ndjson" blob = bucket.blob(object_key) ndjson = '\n'.join( [json.dumps(r, ensure_ascii=False) for r in records] ) + '\n' blob.upload_from_string( ndjson, content_type='application/x-ndjson' ) print( f"Wrote {len(records)} records to " f"gs://{GCS_BUCKET}/{object_key}" ) # Save state with latest offset new_state = { 'offset': latest_offset, 'last_run': now.isoformat() } save_state(bucket, STATE_KEY, new_state) # Refresh stream session to keep it alive refresh_stream_session( CS_BASE_URL, token, CS_APP_ID ) print(f"Successfully processed {len(records)} events") except Exception as e: print(f'Error processing logs: {str(e)}') raise def load_state(bucket, key): """Load state from GCS.""" try: blob = bucket.blob(key) if blob.exists(): state_data = blob.download_as_text() return json.loads(state_data) except Exception as e: print(f"Warning: Could not load state: {e}") return {} def save_state(bucket, key, state: dict): """Save state to GCS.""" try: blob = bucket.blob(key) blob.upload_from_string( json.dumps(state, indent=2), content_type='application/json' ) print(f"Saved state: {state}") except Exception as e: print(f"Warning: Could not save state: {e}")
requirements.txt:
```none functions-framework==3.* google-cloud-storage==2.* urllib3>=2.0.0 ```點選「部署」即可儲存並部署函式。
等待部署作業完成 (2 到 3 分鐘)。
建立 Cloud Scheduler 工作
Cloud Scheduler 會定期將訊息發布至 Pub/Sub 主題,觸發 Cloud Run 函式。
- 前往 GCP 主控台的「Cloud Scheduler」。
- 點選「建立工作」。
請提供下列設定詳細資料:
設定 值 名稱 cs-stream-collector-scheduled區域 選取與 Cloud Run 函式相同的區域 頻率 */15 * * * *(每 15 分鐘)時區 選取時區 (建議使用世界標準時間) 目標類型 Pub/Sub 主題 選取「 cs-stream-trigger」郵件內文 {}(空白 JSON 物件)點選「建立」。
測試整合項目
- 在 Cloud Scheduler 控制台中找出您的工作。
- 按一下「強制執行」即可手動觸發工作。
- 稍等幾秒鐘。
- 前往「Cloud Run」>「Services」。
- 按一下
cs-stream-collector。 - 按一下 [Logs] (記錄) 分頁標籤。
確認函式是否已順利執行。尋找:
Connecting to Event Stream... Wrote X records to gs://cs-stream-logs/crowdstrike/stream/logs_YYYYMMDD_HHMMSS.ndjson Stream session refreshed successfully Successfully processed X events依序前往「Cloud Storage」>「Buckets」。
按一下
cs-stream-logs。前往
crowdstrike/stream/資料夾。確認是否已建立新的
.ndjson檔案,且檔案名稱包含目前的時間戳記。
如果記錄中顯示錯誤:
- HTTP 401:檢查環境變數中的 API 憑證
- HTTP 403:確認 API 用戶端是否具有「Event streams: Read」範圍
- HTTP 429:速率限制 - 調整排程器頻率或增加
STREAM_TIMEOUT - 缺少環境變數:檢查是否已設定所有必要變數
- 沒有可用的資料動態饋給資源:確認
CS_APP_ID是專屬 ID,且不超過 32 個英數字元
擷取 Google SecOps 服務帳戶
Google SecOps 會使用專屬服務帳戶,從 GCS bucket 讀取資料。您必須授予這個服務帳戶值區存取權。
取得服務帳戶電子郵件地址
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如
CrowdStrike Event Streams logs)。 - 選取「Google Cloud Storage V2」做為「來源類型」。
- 選取「CrowdStrike Falcon Streaming」做為「記錄類型」。
- 按一下「取得服務帳戶」。
系統會顯示專屬服務帳戶電子郵件地址,例如:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com複製這個電子郵件地址,以便在下一步中使用。
點選「下一步」。
指定下列輸入參數的值:
儲存空間 bucket URL:輸入 GCS bucket URI,並加上前置路徑:
gs://cs-stream-logs/crowdstrike/stream/
來源刪除選項:根據偏好設定選取刪除選項:
- 永不:移轉後一律不刪除任何檔案 (建議用於測試)。
- 刪除已轉移的檔案:成功轉移檔案後刪除檔案。
刪除已轉移的檔案和空白目錄:成功轉移後刪除檔案和空白目錄。
檔案存在時間上限:包含在過去天數內修改的檔案 (預設為 180 天)
資產命名空間:資產命名空間
擷取標籤:要套用至這個動態饋給事件的標籤
點選「下一步」。
在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)。
將 IAM 權限授予 Google SecOps 服務帳戶
Google SecOps 服務帳戶需要 GCS bucket 的「Storage 物件檢視者」角色。
- 依序前往「Cloud Storage」>「Buckets」。
- 按一下
cs-stream-logs。 - 前往「權限」分頁標籤。
- 按一下「授予存取權」。
- 請提供下列設定詳細資料:
- 新增主體:貼上 Google SecOps 服務帳戶電子郵件地址
- 指派角色:選取「Storage 物件檢視者」
按一下 [儲存]。
需要進一步協助嗎?
如要進一步瞭解 Google Security Operations 動態消息,請參閱 Google Security Operations 動態消息說明文件。如要瞭解各類動態饋給的規定,請參閱「依類型設定動態饋給」。
如需參考資料,請參閱 CrowdStrike Falcon Event Streams 剖析器說明文件。
UDM 對應表
| 記錄欄位 | UDM 對應 | 邏輯 |
|---|---|---|
event_data.AssociatedFile |
about.file.full_path |
直接對應 |
event_data.IOCValue |
about.file.sha256 |
直接對應 |
ActivityId_label |
additional.fields |
已合併 |
ActivityOperatingSystem_label |
additional.fields |
已合併 |
ModelAnomalyIndicators_label |
additional.fields |
已合併 |
SourceEndpointIpReputation_label |
additional.fields |
已合併 |
SourceIpIspClassification_label |
additional.fields |
已合併 |
SourceIpIspDomain_label |
additional.fields |
已合併 |
additional_deviceCustomDate1 |
additional.fields |
已合併 |
additional_domainname |
additional.fields |
已合併 |
commands_label |
additional.fields |
已合併 |
data_domains_label |
additional.fields |
已合併 |
dns_request_domain_name_label |
additional.fields |
已合併 |
dns_request_type_label |
additional.fields |
已合併 |
dnsrequest_interface_index_label |
additional.fields |
已合併 |
dnsrequest_load_time_label |
additional.fields |
已合併 |
eventType |
additional.fields |
對應的值 (共 8 個,例如 "EppDetectionSummaryEvent","IdpDetectionSummaryEvent" → `file... |
event_data_ContextTimeStamp_id_label |
additional.fields |
已合併 |
event_data_MobileDetectionId_id_label |
additional.fields |
已合併 |
field1 |
additional.fields |
已合併 |
fileaccessed_full_path_label |
additional.fields |
已合併 |
fileaccessed_timestamp_label |
additional.fields |
已合併 |
filewritten_full_path_label |
additional.fields |
已合併 |
filewritten_timestamp_label |
additional.fields |
已合併 |
reputation_label_list_values |
additional.fields |
已合併 |
sourceipasncode_label |
additional.fields |
已合併 |
sourceipasnorg_label |
additional.fields |
已合併 |
eventType |
extensions.auth.mechanism |
已對應:"saml2Assert", "twoFactorAuthenticate" → mechanism |
mechanism |
extensions.auth.mechanism |
已合併 |
eventType |
extensions.auth.type |
已對應:"assert", "userAuthenticate" → AUTHTYPE_UNSPECIFIED |
description |
metadata.description |
直接對應 |
event_data.Description |
metadata.description |
直接對應 |
incidentDescription |
metadata.description |
直接對應 |
msg |
metadata.description |
直接對應 |
name |
metadata.description |
直接對應 |
serviceName |
metadata.description |
直接對應 |
devTime |
metadata.event_timestamp |
已剖析為 yyyy-MM-dd HH:mm:ss |
deviceCustomDate1 |
metadata.event_timestamp |
已剖析為 MMM dd yyyy HH:mm:ss |
event_data.UTCTimestamp |
metadata.event_timestamp |
已剖析為 UNIX_MS |
meta.eventCreationTime |
metadata.event_timestamp |
已剖析為 UNIX_MS |
meta.event_dataCreationTime |
metadata.event_timestamp |
已剖析為 UNIX_MS |
timestamp |
metadata.event_timestamp |
已剖析為 UNIX_MS |
eventType |
metadata.event_type |
對應的值 (共 6 個,例如 "saml2Assert", "twoFactorAuthenticate" → USER_LOGIN、「r... |
has_principal |
metadata.event_type |
已對應:true → STATUS_UPDATE、true → SCAN_FILE |
has_user |
metadata.event_type |
已對應:false → GENERIC_EVENT |
cid |
metadata.product_deployment_id |
直接對應 |
eventType |
metadata.product_event_type |
直接對應 |
event_data_simpleName |
metadata.product_event_type |
直接對應 |
event_data.AgentId |
metadata.product_log_id |
直接對應 |
id |
metadata.product_log_id |
直接對應 |
product |
metadata.product_name |
直接對應 |
meta.version |
metadata.product_version |
直接對應 |
version |
metadata.product_version |
直接對應 |
cs6 |
metadata.url_back_to_product |
直接對應 |
url |
metadata.url_back_to_product |
直接對應 |
vendor |
metadata.vendor_name |
直接對應 |
connectionDirection |
network.direction |
已對應:0 → OUTBOUND、1 → INBOUND |
event_data.Attributes.request_method |
network.http.method |
直接對應 |
event_data.FalconHostLink |
network.http.referral_url |
直接對應 |
request |
network.http.referral_url |
直接對應 |
event_data.Attributes.status_code |
network.http.response_code |
直接對應 |
event_data.Attributes.user_agent |
network.http.user_agent |
直接對應 |
protocol |
network.ip_protocol |
對應:6 → TCP、17 → UDP、58 → ICMP |
event_data.Attributes.trace_id |
network.session_id |
直接對應 |
event_data.SessionId |
network.session_id |
直接對應 |
value_issuer |
network.tls.server.certificate.issuer |
直接對應 |
domain |
principal.administrative_domain |
直接對應 |
event_data.DataDomains |
principal.administrative_domain |
直接對應 |
event_data.SourceAccountDomain |
principal.administrative_domain |
直接對應 |
event_data_ActivityBrowser |
principal.application |
直接對應 |
aid |
principal.asset.asset_id |
直接對應 |
event_data.AgentIdString |
principal.asset.asset_id |
直接對應 |
event_data_SensorId |
principal.asset.asset_id |
直接對應 |
ComputerName |
principal.asset.hostname |
直接對應 |
endpointName |
principal.asset.hostname |
直接對應 |
event_data.EndpointName |
principal.asset.hostname |
直接對應 |
event_data.Hostname |
principal.asset.hostname |
直接對應 |
event_data.HostnameField |
principal.asset.hostname |
直接對應 |
event_data.SourceEndpointHostName |
principal.asset.hostname |
直接對應 |
event_data_ComputerName |
principal.asset.hostname |
直接對應 |
hostName |
principal.asset.hostname |
直接對應 |
ClientIP |
principal.asset.ip |
已合併 |
LocalAddressIP4 |
principal.asset.ip |
已合併 |
aip |
principal.asset.ip |
已合併 |
event_data.EndpointIp |
principal.asset.ip |
已合併 |
event_data.LocalIP |
principal.asset.ip |
已合併 |
event_data.LocalIPv6 |
principal.asset.ip |
已合併 |
event_data.SourceEndpointIpAddress |
principal.asset.ip |
已合併 |
event_data.UserIp |
principal.asset.ip |
已合併 |
ip |
principal.asset.ip |
已合併 |
localAddress |
principal.asset.ip |
已合併 |
remoteAddress |
principal.asset.ip |
已合併 |
src |
principal.asset.ip |
已合併 |
event_data.MACAddress |
principal.asset.mac |
已合併 |
event_data_SensorId |
principal.asset_id |
直接對應 |
ComputerName |
principal.hostname |
直接對應 |
endpointName |
principal.hostname |
直接對應 |
event_data.EndpointName |
principal.hostname |
直接對應 |
event_data.Hostname |
principal.hostname |
直接對應 |
event_data.HostnameField |
principal.hostname |
直接對應 |
event_data.SourceEndpointHostName |
principal.hostname |
直接對應 |
event_data_ComputerName |
principal.hostname |
直接對應 |
hostName |
principal.hostname |
直接對應 |
ClientIP |
principal.ip |
已合併 |
LocalAddressIP4 |
principal.ip |
已合併 |
aip |
principal.ip |
已合併 |
event_data.EndpointIp |
principal.ip |
已合併 |
event_data.LocalIP |
principal.ip |
已合併 |
event_data.LocalIPv6 |
principal.ip |
已合併 |
event_data.SourceEndpointIpAddress |
principal.ip |
已合併 |
event_data.UserIp |
principal.ip |
已合併 |
ip |
principal.ip |
已合併 |
localAddress |
principal.ip |
已合併 |
remoteAddress |
principal.ip |
已合併 |
src |
principal.ip |
已合併 |
event_data_LocationCountryCode |
principal.location.country_or_region |
直接對應 |
event_data.MACAddress |
principal.mac |
已合併 |
srcMAC |
principal.mac |
已合併 |
event_data_platformName |
principal.platform |
對應:(?i)Linux → LINUX、(?i)Windows → WINDOWS、(?i)mac/ios → MAC |
localPort |
principal.port |
直接對應 |
exeWrittenFilePath |
principal.process.file.full_path |
直接對應 |
event_data.ParentCommandLine |
principal.process.parent_process.command_line |
直接對應 |
event_data.ParentImageFilePath |
principal.process.parent_process.file.full_path |
直接對應 |
eventType |
principal.process.parent_process.file.names |
已對應:"EppDetectionSummaryEvent","IdpDetectionSummaryEvent" → `event_data.ParentImageFil... |
event_data.ParentImageFileName |
principal.process.parent_process.file.names |
已合併 |
event_data.ParentProcessId |
principal.process.parent_process.pid |
直接對應 |
event_data.ProcessId |
principal.process.pid |
直接對應 |
event_data.Attributes.assign_to_user_id |
principal.user.email_addresses |
已合併 |
event_data.SourceAccountUpn |
principal.user.email_addresses |
已合併 |
userName |
principal.user.email_addresses |
已對應:^.+@.+$ → userName |
user_email |
principal.user.email_addresses |
已合併 |
eventType |
principal.user.group_identifiers |
已對應:"EppDetectionSummaryEvent","IdpDetectionSummaryEvent" → event_data.LogonDomain |
event_data.LogonDomain |
principal.user.group_identifiers |
已合併 |
event_data.Attributes.assign_to_name |
principal.user.user_display_name |
直接對應 |
event_data.UserName |
principal.user.user_display_name |
直接對應 |
event_data.SourceAccountName |
principal.user.userid |
直接對應 |
event_data.UserId |
principal.user.userid |
直接對應 |
userName |
principal.user.userid |
直接對應 |
usrName |
principal.user.userid |
直接對應 |
event_data.SourceAccountObjectSid |
principal.user.windows_sid |
直接對應 |
_security_result |
security_result |
已合併 |
applicationName |
target.application |
直接對應 |
event_data.Source |
target.application |
直接對應 |
event_data_SsoApplicationIdentifier |
target.application |
直接對應 |
serviceName |
target.application |
直接對應 |
event_data.CompositeId |
target.asset.asset_id |
直接對應 |
dhost |
target.asset.hostname |
直接對應 |
event_data.TargetEndpointHostName |
target.asset.hostname |
直接對應 |
IP |
target.asset.ip |
已合併 |
dst |
target.asset.ip |
已合併 |
event_data.IOCValue |
target.asset.ip |
已合併 |
event_data.TargetEndpointIpAddress |
target.asset.ip |
已合併 |
TargetFileName |
target.file.full_path |
直接對應 |
event_data.FilePath |
target.file.full_path |
直接對應 |
event_data.MD5String |
target.file.md5 |
直接對應 |
eventType |
target.file.names |
已對應:"EppDetectionSummaryEvent","IdpDetectionSummaryEvent" → fileaccessed.FileName、`... |
event_data.FileName |
target.file.names |
已合併 |
exeWrittenFileName |
target.file.names |
已合併 |
fileName |
target.file.names |
已合併 |
fileaccessed.FileName |
target.file.names |
已合併 |
filewritten.FileName |
target.file.names |
已合併 |
event_data.SHA1String |
target.file.sha1 |
直接對應 |
event_data.SHA256String |
target.file.sha256 |
直接對應 |
sha256 |
target.file.sha256 |
直接對應 |
Size |
target.file.size |
直接對應 |
dhost |
target.hostname |
直接對應 |
event_data.TargetEndpointHostName |
target.hostname |
直接對應 |
IP |
target.ip |
已合併 |
dst |
target.ip |
已合併 |
event_data.IOCValue |
target.ip |
已合併 |
event_data.TargetEndpointIpAddress |
target.ip |
已合併 |
dpt |
target.port |
已重新命名/對應 |
remotePort |
target.port |
已重新命名/對應 |
cmdLine |
target.process.command_line |
直接對應 |
commandLine |
target.process.command_line |
直接對應 |
event_data.CommandLine |
target.process.command_line |
直接對應 |
filePath |
target.process.file.full_path |
直接對應 |
md5 |
target.process.file.md5 |
直接對應 |
event_data_itempostedtimestamp_label |
target.resource.attribute.labels |
已合併 |
event_data_itemtype_label |
target.resource.attribute.labels |
已合併 |
resource |
target.resource.name |
直接對應 |
event_data_itemid |
target.resource.product_object_id |
直接對應 |
eventType |
target.resource.type |
已對應:"remove_group", "update_group" → GROUP、delete_group → GROUP |
event_data.Attributes.request_path |
target.url |
直接對應 |
eventType |
target.user.email_addresses |
已對應:"saml2Assert", "twoFactorAuthenticate", "assert", "userAuthenticate" → user_email |
user_email |
target.user.email_addresses |
已合併 |
usrName |
target.user.userid |
直接對應 |
event_data.TargetEndpointAccountObjectSid |
target.user.windows_sid |
直接對應 |
| 不適用 | extensions.auth.type |
常數:AUTHTYPE_UNSPECIFIED |
| 不適用 | metadata.event_type |
常數:GENERIC_EVENT |
| 不適用 | metadata.product_name |
常數:FalconHost |
| 不適用 | metadata.vendor_name |
常數:CrowdStrike |
| 不適用 | network.direction |
常數:OUTBOUND |
| 不適用 | network.ip_protocol |
常數:TCP |
| 不適用 | principal.platform |
常數:LINUX |
| 不適用 | target.resource.type |
常數:GROUP |
event_data.IOCType |
event.idm.read_only_udm.security_result.detection_fields |
從變更記錄對應 |
event_data.SsoApplicationIdentifier |
event.idm.read_only_udm.target.application |
從變更記錄對應 |
event_data.LocationCountryCode |
event.idm.read_only_udm.principal.location.country_or_region |
從變更記錄對應 |
event_data.ActivityBrowser |
event.idm.read_only_udm.principal.application |
從變更記錄對應 |
event_data.ActivityId |
event.idm.read_only_udm.additional.fields |
從變更記錄對應 |
event_data.SourceEndpointIpReputation |
event.idm.read_only_udm.additional.fields |
從變更記錄對應 |
event_data.DataDomains |
event.idm.read_only_udm.additional.fields |
從變更記錄對應 |
event_data.SourceIpIspClassification |
event.idm.read_only_udm.additional.fields |
從變更記錄對應 |
event_data.SourceIpIspDomain |
event.idm.read_only_udm.additional.fields |
從變更記錄對應 |
event_data.ActivityOperatingSystem |
event.idm.read_only_udm.additional.fields |
從變更記錄對應 |
event_data.ModelAnomalyIndicators |
event.idm.read_only_udm.additional.fields |
從變更記錄對應 |
event_data.SourceEndpointIpReputationList |
event.idm.read_only_udm.additional.fields |
從變更記錄對應 |
event_data.SourceIpAsnCode |
event.idm.read_only_udm.additional.fields |
從變更記錄對應 |
event_data.SourceIpAsnOrganization |
event.idm.read_only_udm.additional.fields |
從變更記錄對應 |
event_data.ComputerName |
event.idm.read_only_udm.principal.hostname 和 event.idm.read_only_udm.principal.asset.hostname |
從變更記錄對應 |
event_data.SensorId |
event.idm.read_only_udm.principal.asset_id 和 event.idm.read_only_udm.principal.asset.asset_id |
從變更記錄對應 |
event_data.MobileDetectionId |
event.idm.read_only_udm.additional.fields |
從變更記錄對應 |
event_data.ContextTimeStamp |
event.idm.read_only_udm.additional.fields |
從變更記錄對應 |
event_data.TacticId |
event.idm.read_only_udm.security_result.detection_fields |
從變更記錄對應 |
value.TacticID |
event.idm.read_only_udm.security_result.detection_fields |
從變更記錄對應 |
value.TechniqueID |
event.idm.read_only_udm.security_result.detection_fields |
從變更記錄對應 |
value.FingerPrint |
event.idm.read_only_udm.security_result.detection_fields |
從變更記錄對應 |
value.Name |
event.idm.read_only_udm.security_result.detection_fields |
從變更記錄對應 |
value.PatternID |
event.idm.read_only_udm.security_result.detection_fields |
從變更記錄對應 |
value.Issuer |
event.idm.read_only_udm.network.tls.server.certificate.issuer |
從變更記錄對應 |
endpointName |
event.idm.read_only_udm.principal.hostname 和 event.idm.read_only_udm.principal.asset.hostname |
從變更記錄對應 |
ClientIP |
event.idm.read_only_udm.principal.ip 和 event.idm.read_only_udm.principal.asset.ip |
從變更記錄對應 |
meta.version |
event.idm.read_only_udm.metadata.product_version |
從變更記錄對應 |
EndTimestamp |
event.idm.read_only_udm.additional.fields |
從變更記錄對應 |
event_data.UTCTimestamp |
event.idm.read_only_udm.additional.fields |
從變更記錄對應 |
event_data.Commands |
event.idm.read_only_udm.additional.fields |
從變更記錄對應 |
event_data.PatternDispositionValue |
event.idm.read_only_udm.security_result.detection_fields |
從變更記錄對應 |
event_data.PatternDispositionFlags.SuspendProcess |
event.idm.read_only_udm.security_result.detection_fields |
從變更記錄對應 |
event_data.PatternDispositionFlags.KillProcess |
event.idm.read_only_udm.security_result.detection_fields |
從變更記錄對應 |
ipv4Addresses |
principal.ip |
從變更記錄對應 |
domainNames |
additional.fields.value.list_value.values |
從變更記錄對應 |
sev |
security_result.severity |
從變更記錄對應 |
exeWrittenFileName" and "fileName |
target.file.names |
從變更記錄對應 |
patternDisposition" and "objective |
security_result.detection_fields |
從變更記錄對應 |
NetworkAccesse.LocalAddress |
principal.ip |
從變更記錄對應 |
NetworkAccesse.LocalPort |
principal.port |
從變更記錄對應 |
NetworkAccesse.ConnectionDirection |
network.direction |
從變更記錄對應 |
NetworkAccesse.Protocol |
network.ip_protocol |
從變更記錄對應 |
NetworkAccesse.RemoteAddress |
principal.ip |
從變更記錄對應 |
NetworkAccesse.RemotePort |
target.port |
從變更記錄對應 |
NetworkAccesse.AccessType |
additional.fields |
從變更記錄對應 |
NetworkAccesse.IsIPV6 |
security_result.detection_fields |
從變更記錄對應 |
NetworkAccesse.AccessTimestamp |
security_result.detection_fields |
從變更記錄對應 |
security_result.action |
BLOCK |
從變更記錄對應 |
security_result.action |
ALLOW |
從變更記錄對應 |
event_data.IncidentDescription |
security_result.summary |
從變更記錄對應 |
event_data.SeverityName |
security_result.severity |
從變更記錄對應 |
event_data.Technique |
security_result.rule_name |
從變更記錄對應 |
event.SeverityName |
security_result.severity |
從變更記錄對應 |
event.Description |
security_result.summary |
從變更記錄對應 |
networkDetectionType |
security_result.detection_fields |
從變更記錄對應 |
變更記錄
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。