收集 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 存储分区的权限。
  • 管理 GCS 存储分区上的 IAM 政策的权限。
  • 创建 Cloud Run 服务、Pub/Sub 主题和 Cloud Scheduler 作业的权限。
  • CrowdStrike Falcon 控制台的特权访问权限,并具有创建 API 客户端的权限。

创建 Google Cloud Storage 存储桶

  1. 前往 Google Cloud 控制台
  2. 选择您的项目或创建新项目。
  3. 在导航菜单中,依次前往 Cloud Storage > 存储分区
  4. 点击创建存储分区
  5. 提供以下配置详细信息:

    设置
    为存储桶命名 输入一个全局唯一的名称(例如 cs-stream-logs
    位置类型 根据您的需求进行选择(区域级、双区域、多区域)
    位置 选择营业地点(例如 us-central1
    存储类别 标准(建议用于经常访问的日志)
    访问权限控制 均匀(推荐)
    保护工具 可选:启用对象版本控制或保留政策
  6. 点击创建

配置 CrowdStrike Falcon API 访问权限

创建 API 客户端

  1. 登录 CrowdStrike Falcon 控制台
  2. 在导航菜单中,依次前往支持和资源 > 资源和工具 > API 客户端和密钥
  3. 点击创建 API 客户端
  4. 提供以下配置详细信息:
    • 客户端名称:输入一个描述性名称(例如 Google SecOps Event Streams Integration)。
    • 说明(可选):输入说明(例如 API client for streaming events to GCS)。
  5. API 范围部分中,选择以下权限:
    • 事件流:选择读取(使用流式传输 API 所必需)。
  6. 点击创建

记录 API 凭据

创建 API 客户端后,您会收到以下凭据:

  • 客户端 ID:一个 32 个字符的小写十六进制字符串。
  • 客户端密钥:一个包含 40 个字符的字母数字字符串。
  • 基本网址:CrowdStrike API 的完全限定域名(例如 api.crowdstrike.comapi.us-2.crowdstrike.com)。

重要提示:请立即复制并保存客户端密钥。此代码仅显示一次,以后无法再获取。

区域端点

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 控制台登录区域对应的基本网址。

验证权限

如需验证 API 客户端是否拥有所需的权限,请执行以下操作:

  1. 登录 CrowdStrike Falcon 控制台
  2. 依次前往支持和资源 > 资源和工具 > API 客户端和密钥
  3. 找到您创建的 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 以及 dataFeedURLsessionToken 字段。

为 Cloud Run 函数创建服务账号

Cloud Run 函数需要一个服务账号,该账号具有写入 GCS 存储桶的权限,并且可以由 Pub/Sub 调用。

创建服务账号

  1. GCP 控制台中,依次前往 IAM 和管理 > 服务账号
  2. 点击创建服务账号
  3. 提供以下配置详细信息:
    • 服务账号名称:输入 cs-stream-collector-sa
    • 服务账号说明:输入 Service account for Cloud Run function to collect CrowdStrike Event Streams logs
  4. 点击创建并继续
  5. 向此服务账号授予对项目的访问权限部分中,添加以下角色:
    1. 点击选择角色
    2. 搜索并选择 Storage Object Admin
    3. 点击 + 添加其他角色
    4. 搜索并选择 Cloud Run Invoker
    5. 点击 + 添加其他角色
    6. 搜索并选择 Cloud Functions Invoker
  6. 点击继续
  7. 点击完成

必须拥有这些角色,才能:

  • Storage Object Admin:将日志写入 GCS 存储桶并管理状态文件
  • Cloud Run Invoker:允许 Pub/Sub 调用函数
  • Cloud Functions Invoker:允许调用函数

授予对 GCS 存储桶的 IAM 权限

向服务账号授予对 GCS 存储桶的写入权限:

  1. 前往 Cloud Storage > 存储分区
  2. 点击您的存储桶名称(例如 cs-stream-logs)。
  3. 前往权限标签页。
  4. 点击授予访问权限
  5. 提供以下配置详细信息:
    • 添加主账号:输入服务账号电子邮件地址(例如 cs-stream-collector-sa@PROJECT_ID.iam.gserviceaccount.com
    • 分配角色:选择 Storage Object Admin
  6. 点击保存

创建 Pub/Sub 主题

创建一个 Pub/Sub 主题,Cloud Scheduler 将向该主题发布消息,而 Cloud Run 函数将订阅该主题。

  1. GCP 控制台中,前往 Pub/Sub > 主题
  2. 点击创建主题
  3. 提供以下配置详细信息:
    • 主题 ID:输入 cs-stream-trigger
    • 将其他设置保留为默认值
  4. 点击创建

创建 Cloud Run 函数以收集日志

Cloud Run 函数将由来自 Cloud Scheduler 的 Pub/Sub 消息触发,以连接到 CrowdStrike Event Streams API、使用事件并将其写入 GCS。

  1. GCP 控制台中,前往 Cloud Run
  2. 点击创建服务
  3. 选择函数(使用内嵌编辑器创建函数)。
  4. 配置部分中,提供以下配置详细信息:

    设置
    Service 名称 cs-stream-collector
    区域 选择与您的 GCS 存储桶匹配的区域(例如 us-central1
    运行时 选择 Python 3.12 或更高版本
  5. 触发器(可选)部分中:

    1. 点击 + 添加触发器
    2. 选择 Cloud Pub/Sub
    3. 选择 Cloud Pub/Sub 主题中,选择 cs-stream-trigger
    4. 点击保存
  6. 身份验证部分中:

    1. 选择需要进行身份验证
    2. 检查 Identity and Access Management (IAM)
  7. 向下滚动并展开容器、网络、安全性

  8. 前往安全性标签页:

    • 服务账号:选择 cs-stream-collector-sa
  9. 前往容器标签页:

    1. 点击变量和密钥
    2. 为每个环境变量点击+ 添加变量
    变量名称 示例值 说明
    GCS_BUCKET cs-stream-logs GCS 存储桶名称
    GCS_PREFIX crowdstrike/stream 日志文件的前缀
    STATE_KEY crowdstrike/stream/state.json 状态文件路径
    CS_BASE_URL https://api.crowdstrike.com CrowdStrike API 基本网址
    CS_CLIENT_ID your-client-id API 客户端 ID
    CS_CLIENT_SECRET your-client-secret API 客户端密钥
    CS_APP_ID secops-stream-collector Event Streams 的唯一应用 ID(最多 32 个字母数字字符)
    STREAM_TIMEOUT 300 以秒为单位的流读取超时时间
    MAX_RECORDS 10000 每次运行的记录数上限
  10. 变量和 Secret 部分中,向下滚动到请求

    • 请求超时:输入 600 秒(10 分钟)
  11. 前往设置标签页:

    • 资源部分中:
      • 内存:选择 512 MiB 或更高值
      • CPU:选择 1
  12. 修订版本伸缩部分中:

    • 实例数下限:输入 0
    • 实例数上限:输入 1(一次只能运行一个流消费者)
  13. 点击创建

  14. 等待服务创建完成(1-2 分钟)。

  15. 创建服务后,系统会自动打开内嵌代码编辑器

添加函数代码

  1. 入口点字段中输入 main
  2. 在内嵌代码编辑器中,创建两个文件:

    • 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
    ```
    
  3. 点击部署以保存并部署该函数。

  4. 等待部署完成(2-3 分钟)。

创建 Cloud Scheduler 作业

Cloud Scheduler 会定期向 Pub/Sub 主题发布消息,从而触发 Cloud Run 函数。

  1. GCP Console 中,前往 Cloud Scheduler
  2. 点击创建作业
  3. 提供以下配置详细信息:

    设置
    名称 cs-stream-collector-scheduled
    区域 选择与 Cloud Run 函数相同的区域
    频率 */15 * * * *(每 15 分钟)
    时区 选择时区(建议选择 UTC)
    目标类型 Pub/Sub
    主题 选择cs-stream-trigger
    消息正文 {}(空 JSON 对象)
  4. 点击创建

测试集成

  1. Cloud Scheduler 控制台中,找到您的作业。
  2. 点击强制运行以手动触发作业。
  3. 等待几秒钟。
  4. 前往 Cloud Run > 服务
  5. 点击 cs-stream-collector
  6. 点击日志标签页。
  7. 验证函数是否已成功执行。查找:

    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
    
  8. 前往 Cloud Storage > 存储分区

  9. 点击 cs-stream-logs

  10. 转到 crowdstrike/stream/ 文件夹。

  11. 验证是否已创建具有当前时间戳的新 .ndjson 文件。

如果您在日志中看到错误,请执行以下操作:

  • HTTP 401:检查环境变量中的 API 凭据
  • HTTP 403:验证 API 客户端是否具有事件流:读取范围
  • HTTP 429:速率限制 - 调整调度程序频率或增加 STREAM_TIMEOUT
  • 缺少环境变量:检查是否已设置所有必需的变量
  • 没有可用的数据 Feed 资源:验证 CS_APP_ID 是否唯一且不超过 32 个字母数字字符

检索 Google SecOps 服务账号

Google SecOps 使用唯一的服务账号从您的 GCS 存储桶中读取数据。您必须授予此服务账号对您的存储桶的访问权限。

获取服务账号电子邮件地址

  1. 依次前往 SIEM 设置 > Feed
  2. 点击添加新 Feed
  3. 点击配置单个 Feed
  4. Feed 名称字段中,输入 Feed 的名称(例如 CrowdStrike Event Streams logs)。
  5. 选择 Google Cloud Storage V2 作为来源类型
  6. 选择 CrowdStrike Falcon Streaming 作为日志类型
  7. 点击获取服务账号
  8. 系统会显示一个唯一的服务账号电子邮件地址,例如:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. 复制此电子邮件地址,以便在下一步中使用。

  10. 点击下一步

  11. 为以下输入参数指定值:

    • 存储桶网址:输入带有前缀路径的 GCS 存储桶 URI:

      gs://cs-stream-logs/crowdstrike/stream/
      
    • 来源删除选项:根据您的偏好选择删除选项:

      • 永不:转移后永不删除任何文件(建议用于测试)。
      • 删除已转移的文件:在成功转移后删除文件。
      • 删除已转移的文件和空目录:成功转移后删除文件和空目录。

    • 文件存在时间上限:包含在过去指定天数内修改的文件(默认值为 180 天)

    • 资产命名空间资产命名空间

    • 注入标签:要应用于此 Feed 中事件的标签

  12. 点击下一步

  13. 最终确定界面中查看新的 Feed 配置,然后点击提交

向 Google SecOps 服务账号授予 IAM 权限

Google SecOps 服务账号需要您的 GCS 存储桶的 Storage Object Viewer 角色。

  1. 前往 Cloud Storage > 存储分区
  2. 点击 cs-stream-logs
  3. 前往权限标签页。
  4. 点击授予访问权限
  5. 提供以下配置详细信息:
    • 添加主账号:粘贴 Google SecOps 服务账号电子邮件地址
    • 分配角色:选择 Storage Object Viewer
  6. 点击保存

需要更多帮助?

如需详细了解 Google Security Operations Feed,请参阅 Google Security Operations Feed 文档。如需了解每种 Feed 类型的要求,请参阅按类型划分的 Feed 配置

如需参考,请参阅 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 已映射:trueSTATUS_UPDATEtrueSCAN_FILE
has_user metadata.event_type 已映射:falseGENERIC_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 已映射:0OUTBOUND1INBOUND
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 映射:6TCP17UDP58ICMP
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)LinuxLINUX(?i)WindowsWINDOWS(?i)mac/iosMAC
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"GROUPdelete_groupGROUP
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.hostnameevent.idm.read_only_udm.principal.asset.hostname之间 从变更日志映射
event_data.SensorId event.idm.read_only_udm.principal.asset_idevent.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.hostnameevent.idm.read_only_udm.principal.asset.hostname之间 从变更日志映射
ClientIP event.idm.read_only_udm.principal.ipevent.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 专业人士的解答。