Recopila registros de transmisiones de eventos de CrowdStrike Falcon

Se admite en los siguientes sistemas operativos:

En este documento, se explica cómo transferir registros de CrowdStrike Falcon Event Streams a Google Security Operations con Google Cloud Storage V2. CrowdStrike Falcon Event Streams proporciona una API de transmisión en tiempo real que entrega datos de eventos de seguridad desde la plataforma de Falcon, incluidos eventos de detección, eventos de auditoría, actividad de autenticación y actualizaciones de incidentes. La API de Event Streams usa una conexión HTTP persistente con el extremo /sensors/entities/datafeed/v2 para enviar eventos casi en tiempo real, lo que admite la reanudación basada en la compensación para una entrega confiable.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Es la instancia de Google SecOps.
  • Un proyecto de GCP con la API de Cloud Storage habilitada
  • Permisos para crear y administrar buckets de GCS
  • Permisos para administrar políticas de IAM en buckets de GCS
  • Permisos para crear servicios de Cloud Run, temas de Pub/Sub y trabajos de Cloud Scheduler
  • Acceso privilegiado a la consola de CrowdStrike Falcon con permisos para crear clientes de API.

Crea un bucket de Google Cloud Storage

  1. Ve a Google Cloud Console.
  2. Selecciona tu proyecto o crea uno nuevo.
  3. En el menú de navegación, ve a Cloud Storage > Buckets.
  4. Haz clic en Crear bucket.
  5. Proporciona los siguientes detalles de configuración:

    Parámetro de configuración Valor
    Asigna un nombre a tu bucket Ingresa un nombre global único (por ejemplo, cs-stream-logs).
    Tipo de ubicación Elige según tus necesidades (región, birregional, multirregional)
    Ubicación Selecciona la ubicación (por ejemplo, us-central1).
    Clase de almacenamiento Estándar (recomendado para los registros a los que se accede con frecuencia)
    Control de acceso Uniforme (recomendado)
    Herramientas de protección Opcional: Habilita el control de versiones de objetos o la política de retención
  6. Haz clic en Crear.

Configura el acceso a la API de CrowdStrike Falcon

Crea un cliente de API

  1. Accede a la consola de CrowdStrike Falcon.
  2. En el menú de navegación, ve a Asistencia y recursos > Recursos y herramientas > Clientes y claves de API.
  3. Haz clic en Crear cliente de API.
  4. Proporciona los siguientes detalles de configuración:
    • Nombre del cliente: Ingresa un nombre descriptivo (por ejemplo, Google SecOps Event Streams Integration).
    • Descripción (opcional): Ingresa una descripción (por ejemplo, API client for streaming events to GCS).
  5. En la sección Alcances de la API, selecciona el siguiente permiso:
    • Flujos de eventos: Selecciona Leer (obligatorio para consumir la API de transmisión).
  6. Haz clic en Crear.

Registra las credenciales de la API

Después de crear el cliente de API, recibirás las siguientes credenciales:

  • ID de cliente: Es una cadena hexadecimal de 32 caracteres en minúsculas.
  • Secreto del cliente: Es una cadena alfanumérica de 40 caracteres.
  • URL base: Es el nombre de dominio completamente calificado de la API de CrowdStrike (por ejemplo, api.crowdstrike.com o api.us-2.crowdstrike.com).

Importante: Copia y guarda el secreto del cliente de inmediato. Solo se muestra una vez y no se puede recuperar más adelante.

Extremos regionales

CrowdStrike opera en varias regiones con diferentes extremos de API:

Región URL base
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

Importante: Usa la URL base que corresponde a la región de acceso de tu consola de CrowdStrike Falcon.

Verifica los permisos

Para verificar que el cliente de la API tenga los permisos necesarios, haz lo siguiente:

  1. Accede a la consola de CrowdStrike Falcon.
  2. Navega a Asistencia y recursos > Recursos y herramientas > Clientes y claves de API.
  3. Busca el cliente de API que creaste y verifica que el alcance de Event streams muestre acceso de lectura.

Prueba el acceso a la API

  • Prueba tus credenciales antes de continuar con la integración:

    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"
    

Una respuesta correcta devuelve un objeto JSON que contiene resources con los campos dataFeedURL y sessionToken para cada partición de transmisión disponible.

Crea una cuenta de servicio para la función de Cloud Run

La función de Cloud Run necesita una cuenta de servicio con permisos para escribir en el bucket de GCS y ser invocada por Pub/Sub.

Crear cuenta de servicio

  1. En Google Cloud Console, ve a IAM y administración > Cuentas de servicio.
  2. Haz clic en Crear cuenta de servicio.
  3. Proporciona los siguientes detalles de configuración:
    • Nombre de la cuenta de servicio: Ingresa cs-stream-collector-sa.
    • Descripción de la cuenta de servicio: Ingresa Service account for Cloud Run function to collect CrowdStrike Event Streams logs.
  4. Haz clic en Crear y continuar.
  5. En la sección Otorga a esta cuenta de servicio acceso al proyecto, agrega los siguientes roles:
    1. Haz clic en Selecciona un rol.
    2. Busca y selecciona Administrador de objetos de Storage.
    3. Haz clic en + Agregar otro rol.
    4. Busca y selecciona Invocador de Cloud Run.
    5. Haz clic en + Agregar otro rol.
    6. Busca y selecciona Invocador de Cloud Functions.
  6. Haz clic en Continuar.
  7. Haz clic en Listo.

Estos roles son necesarios para las siguientes acciones:

  • Administrador de objetos de Storage: Escribe registros en el bucket de GCS y administra archivos de estado
  • Invocador de Cloud Run: Permite que Pub/Sub invoque la función
  • Invocador de Cloud Functions: Permite la invocación de funciones

Otorga permisos de IAM en el bucket de GCS

Otorga permisos de escritura a la cuenta de servicio en el bucket de GCS:

  1. Ve a Cloud Storage > Buckets.
  2. Haz clic en el nombre de tu bucket (por ejemplo, cs-stream-logs).
  3. Ve a la pestaña Permisos.
  4. Haz clic en Otorgar acceso.
  5. Proporciona los siguientes detalles de configuración:
    • Agregar entidades: Ingresa el correo electrónico de la cuenta de servicio (por ejemplo, cs-stream-collector-sa@PROJECT_ID.iam.gserviceaccount.com).
    • Asignar roles: Selecciona Administrador de objetos de almacenamiento.
  6. Haz clic en Guardar.

Crea un tema de Pub/Sub

Crea un tema de Pub/Sub en el que Cloud Scheduler publicará y al que se suscribirá la función de Cloud Run.

  1. En Google Cloud Console, ve a Pub/Sub > Temas.
  2. Haz clic en Crear tema.
  3. Proporciona los siguientes detalles de configuración:
    • ID del tema: Ingresa cs-stream-trigger.
    • Deja el resto de la configuración con sus valores predeterminados.
  4. Haz clic en Crear.

Crea una función de Cloud Run para recopilar registros

La función de Cloud Run se activará con mensajes de Pub/Sub de Cloud Scheduler para conectarse a la API de CrowdStrike Event Streams, consumir eventos y escribirlos en GCS.

  1. En Google Cloud Console, ve a Cloud Run.
  2. Haz clic en Crear servicio.
  3. Selecciona Función (usa un editor intercalado para crear una función).
  4. En la sección Configurar, proporciona los siguientes detalles de configuración:

    Parámetro de configuración Valor
    Nombre del servicio cs-stream-collector
    Región Selecciona la región que coincida con tu bucket de GCS (por ejemplo, us-central1).
    Tiempo de ejecución Selecciona Python 3.12 o una versión posterior.
  5. En la sección Activador (opcional), haz lo siguiente:

    1. Haz clic en + Agregar activador.
    2. Selecciona Cloud Pub/Sub.
    3. En Selecciona un tema de Cloud Pub/Sub, elige cs-stream-trigger.
    4. Haz clic en Guardar.
  6. En la sección Autenticación, haz lo siguiente:

    1. Selecciona Necesita autenticación.
    2. Verifica Identity and Access Management (IAM).
  7. Desplázate hacia abajo y expande Contenedores, redes y seguridad.

  8. Ve a la pestaña Seguridad:

    • Cuenta de servicio: Selecciona cs-stream-collector-sa.
  9. Ve a la pestaña Contenedores:

    1. Haz clic en Variables y secretos.
    2. Haz clic en + Agregar variable para cada variable de entorno:
    Nombre de la variable Valor de ejemplo Descripción
    GCS_BUCKET cs-stream-logs Nombre del bucket de GCS
    GCS_PREFIX crowdstrike/stream Prefijo para los archivos de registro
    STATE_KEY crowdstrike/stream/state.json Ruta de acceso al archivo de estado
    CS_BASE_URL https://api.crowdstrike.com URL base de la API de CrowdStrike
    CS_CLIENT_ID your-client-id ID de cliente de la API
    CS_CLIENT_SECRET your-client-secret Secreto del cliente de API
    CS_APP_ID secops-stream-collector ID único de la app para los flujos de eventos (máximo 32 caracteres alfanuméricos)
    STREAM_TIMEOUT 300 Tiempo de espera de lectura de transmisión en segundos
    MAX_RECORDS 10000 Cantidad máxima de registros por ejecución
  10. En la sección Variables y Secrets, desplázate hacia abajo hasta Solicitudes:

    • Tiempo de espera de la solicitud: Ingresa 600 segundos (10 minutos).
  11. Ve a la pestaña Configuración:

    • En la sección Recursos, haz lo siguiente:
      • Memoria: Selecciona 512 MiB o más.
      • CPU: Selecciona 1.
  12. En la sección Escalamiento de revisión, haz lo siguiente:

    • Cantidad mínima de instancias: Ingresa 0.
    • Cantidad máxima de instancias: Ingresa 1 (solo se debe ejecutar un consumidor de transmisión a la vez).
  13. Haz clic en Crear.

  14. Espera a que se cree el servicio (de 1 a 2 minutos).

  15. Después de crear el servicio, se abrirá automáticamente el editor de código intercalado.

Agregar el código de función

  1. Ingresa main en el campo Punto de entrada.
  2. En el editor de código intercalado, crea dos archivos:

    • 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. Haz clic en Implementar para guardar y, luego, implementar la función.

  4. Espera a que se complete la implementación (de 2 a 3 minutos).

Crea un trabajo de Cloud Scheduler

Cloud Scheduler publicará mensajes en el tema de Pub/Sub a intervalos regulares, lo que activará la función de Cloud Run.

  1. En Google Cloud Console, ve a Cloud Scheduler.
  2. Haz clic en Crear trabajo.
  3. Proporciona los siguientes detalles de configuración:

    Parámetro de configuración Valor
    Nombre cs-stream-collector-scheduled
    Región Selecciona la misma región que la función de Cloud Run
    Frecuencia */15 * * * * (cada 15 minutos)
    Zona horaria Selecciona la zona horaria (se recomienda UTC)
    Tipo de objetivo Pub/Sub
    Tema Seleccionar cs-stream-trigger
    Cuerpo del mensaje {} (objeto JSON vacío)
  4. Haz clic en Crear.

Prueba la integración

  1. En la consola de Cloud Scheduler, busca tu trabajo.
  2. Haz clic en Ejecutar forzosamente para activar el trabajo de forma manual.
  3. Espera unos segundos.
  4. Ve a Cloud Run > Servicios.
  5. Haz clic en cs-stream-collector:
  6. Haz clic en la pestaña Registros.
  7. Verifica que la función se haya ejecutado correctamente. Busca lo siguiente:

    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. Ve a Cloud Storage > Buckets.

  9. Haz clic en cs-stream-logs:

  10. Navega a la carpeta crowdstrike/stream/:

  11. Verifica que se haya creado un archivo .ndjson nuevo con la marca de tiempo actual.

Si ves errores en los registros, haz lo siguiente:

  • HTTP 401: Verifica las credenciales de la API en las variables de entorno
  • HTTP 403: Verifica que el cliente de la API tenga el alcance Event streams: Read
  • HTTP 429: Se aplicó una limitación de frecuencia. Ajusta la frecuencia del programador o aumenta STREAM_TIMEOUT.
  • Faltan variables de entorno: Verifica que estén configuradas todas las variables requeridas.
  • No hay recursos de feed de datos disponibles: Verifica que CS_APP_ID sea único y no supere los 32 caracteres alfanuméricos.

Recupera la cuenta de servicio de Google SecOps

Google SecOps usa una cuenta de servicio única para leer datos de tu bucket de GCS. Debes otorgar acceso a tu bucket a esta cuenta de servicio.

Obtén el correo electrónico de la cuenta de servicio

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar feed nuevo.
  3. Haz clic en Configura un feed único.
  4. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, CrowdStrike Event Streams logs).
  5. Selecciona Google Cloud Storage V2 como el Tipo de fuente.
  6. Selecciona CrowdStrike Falcon Streaming como el Tipo de registro.
  7. Haz clic en Obtener cuenta de servicio.
  8. Se mostrará un correo electrónico único de la cuenta de servicio, por ejemplo:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. Copia esta dirección de correo electrónico para usarla en el siguiente paso.

  10. Haz clic en Siguiente.

  11. Especifica valores para los siguientes parámetros de entrada:

    • URL del bucket de almacenamiento: Ingresa el URI del bucket de GCS con la ruta de acceso del prefijo:

      gs://cs-stream-logs/crowdstrike/stream/
      
    • Opción de eliminación del código fuente: Selecciona la opción de eliminación según tu preferencia:

      • Nunca: Nunca borra ningún archivo después de las transferencias (se recomienda para las pruebas).
      • Borrar archivos transferidos: Borra los archivos después de que se transfirieron correctamente.
      • Borrar los archivos transferidos y los directorios vacíos: Borra los archivos y los directorios vacíos después de que se transfirieron correctamente.

    • Antigüedad máxima del archivo: Incluye los archivos modificados en la cantidad de días más reciente (el valor predeterminado es de 180 días).

    • Espacio de nombres del recurso: Es el espacio de nombres del recurso.

    • Etiquetas de transferencia: Es la etiqueta que se aplicará a los eventos de este feed.

  12. Haz clic en Siguiente.

  13. Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.

Otorga permisos de IAM a la cuenta de servicio de Google SecOps

La cuenta de servicio de Google SecOps necesita el rol de visualizador de objetos de Storage en tu bucket de GCS.

  1. Ve a Cloud Storage > Buckets.
  2. Haz clic en cs-stream-logs:
  3. Ve a la pestaña Permisos.
  4. Haz clic en Otorgar acceso.
  5. Proporciona los siguientes detalles de configuración:
    • Agregar entidades: Pega el correo electrónico de la cuenta de servicio de Google SecOps.
    • Asignar roles: Selecciona Visualizador de objetos de Storage.
  6. Haz clic en Guardar.

¿Necesitas más ayuda?

Para obtener más información sobre los feeds de Google Security Operations, consulta la documentación de los feeds de Google Security Operations. Para obtener información sobre los requisitos de cada tipo de feed, consulta Configuración de feeds por tipo.

Para obtener más información, consulta la documentación del analizador de transmisiones de eventos de CrowdStrike Falcon.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
event_data.AssociatedFile about.file.full_path Asignado directamente
event_data.IOCValue about.file.sha256 Asignado directamente
ActivityId_label additional.fields Combinado
ActivityOperatingSystem_label additional.fields Combinado
ModelAnomalyIndicators_label additional.fields Combinado
SourceEndpointIpReputation_label additional.fields Combinado
SourceIpIspClassification_label additional.fields Combinado
SourceIpIspDomain_label additional.fields Combinado
additional_deviceCustomDate1 additional.fields Combinado
additional_domainname additional.fields Combinado
commands_label additional.fields Combinado
data_domains_label additional.fields Combinado
dns_request_domain_name_label additional.fields Combinado
dns_request_type_label additional.fields Combinado
dnsrequest_interface_index_label additional.fields Combinado
dnsrequest_load_time_label additional.fields Combinado
eventType additional.fields Valores asignados (8 en total, p. ej., "EppDetectionSummaryEvent","IdpDetectionSummaryEvent" → "file…
event_data_ContextTimeStamp_id_label additional.fields Combinado
event_data_MobileDetectionId_id_label additional.fields Combinado
field1 additional.fields Combinado
fileaccessed_full_path_label additional.fields Combinado
fileaccessed_timestamp_label additional.fields Combinado
filewritten_full_path_label additional.fields Combinado
filewritten_timestamp_label additional.fields Combinado
reputation_label_list_values additional.fields Combinado
sourceipasncode_label additional.fields Combinado
sourceipasnorg_label additional.fields Combinado
eventType extensions.auth.mechanism Asignado: "saml2Assert", "twoFactorAuthenticate"mechanism
mechanism extensions.auth.mechanism Combinado
eventType extensions.auth.type Asignado: "assert", "userAuthenticate"AUTHTYPE_UNSPECIFIED
description metadata.description Asignado directamente
event_data.Description metadata.description Asignado directamente
incidentDescription metadata.description Asignado directamente
msg metadata.description Asignado directamente
name metadata.description Asignado directamente
serviceName metadata.description Asignado directamente
devTime metadata.event_timestamp Se analizó como yyyy-MM-dd HH:mm:ss
deviceCustomDate1 metadata.event_timestamp Se analizó como MMM dd yyyy HH:mm:ss
event_data.UTCTimestamp metadata.event_timestamp Se analizó como UNIX_MS
meta.eventCreationTime metadata.event_timestamp Se analizó como UNIX_MS
meta.event_dataCreationTime metadata.event_timestamp Se analizó como UNIX_MS
timestamp metadata.event_timestamp Se analizó como UNIX_MS
eventType metadata.event_type Valores asignados (6 en total, p. ej., "saml2Assert", "twoFactorAuthenticate"USER_LOGIN, "r…
has_principal metadata.event_type Asignado: trueSTATUS_UPDATE, trueSCAN_FILE
has_user metadata.event_type Asignado: falseGENERIC_EVENT
cid metadata.product_deployment_id Asignado directamente
eventType metadata.product_event_type Asignado directamente
event_data_simpleName metadata.product_event_type Asignado directamente
event_data.AgentId metadata.product_log_id Asignado directamente
id metadata.product_log_id Asignado directamente
product metadata.product_name Asignado directamente
meta.version metadata.product_version Asignado directamente
version metadata.product_version Asignado directamente
cs6 metadata.url_back_to_product Asignado directamente
url metadata.url_back_to_product Asignado directamente
vendor metadata.vendor_name Asignado directamente
connectionDirection network.direction Asignado: 0OUTBOUND, 1INBOUND
event_data.Attributes.request_method network.http.method Asignado directamente
event_data.FalconHostLink network.http.referral_url Asignado directamente
request network.http.referral_url Asignado directamente
event_data.Attributes.status_code network.http.response_code Asignado directamente
event_data.Attributes.user_agent network.http.user_agent Asignado directamente
protocol network.ip_protocol Asignado: 6TCP, 17UDP, 58ICMP
event_data.Attributes.trace_id network.session_id Asignado directamente
event_data.SessionId network.session_id Asignado directamente
value_issuer network.tls.server.certificate.issuer Asignado directamente
domain principal.administrative_domain Asignado directamente
event_data.DataDomains principal.administrative_domain Asignado directamente
event_data.SourceAccountDomain principal.administrative_domain Asignado directamente
event_data_ActivityBrowser principal.application Asignado directamente
aid principal.asset.asset_id Asignado directamente
event_data.AgentIdString principal.asset.asset_id Asignado directamente
event_data_SensorId principal.asset.asset_id Asignado directamente
ComputerName principal.asset.hostname Asignado directamente
endpointName principal.asset.hostname Asignado directamente
event_data.EndpointName principal.asset.hostname Asignado directamente
event_data.Hostname principal.asset.hostname Asignado directamente
event_data.HostnameField principal.asset.hostname Asignado directamente
event_data.SourceEndpointHostName principal.asset.hostname Asignado directamente
event_data_ComputerName principal.asset.hostname Asignado directamente
hostName principal.asset.hostname Asignado directamente
ClientIP principal.asset.ip Combinado
LocalAddressIP4 principal.asset.ip Combinado
aip principal.asset.ip Combinado
event_data.EndpointIp principal.asset.ip Combinado
event_data.LocalIP principal.asset.ip Combinado
event_data.LocalIPv6 principal.asset.ip Combinado
event_data.SourceEndpointIpAddress principal.asset.ip Combinado
event_data.UserIp principal.asset.ip Combinado
ip principal.asset.ip Combinado
localAddress principal.asset.ip Combinado
remoteAddress principal.asset.ip Combinado
src principal.asset.ip Combinado
event_data.MACAddress principal.asset.mac Combinado
event_data_SensorId principal.asset_id Asignado directamente
ComputerName principal.hostname Asignado directamente
endpointName principal.hostname Asignado directamente
event_data.EndpointName principal.hostname Asignado directamente
event_data.Hostname principal.hostname Asignado directamente
event_data.HostnameField principal.hostname Asignado directamente
event_data.SourceEndpointHostName principal.hostname Asignado directamente
event_data_ComputerName principal.hostname Asignado directamente
hostName principal.hostname Asignado directamente
ClientIP principal.ip Combinado
LocalAddressIP4 principal.ip Combinado
aip principal.ip Combinado
event_data.EndpointIp principal.ip Combinado
event_data.LocalIP principal.ip Combinado
event_data.LocalIPv6 principal.ip Combinado
event_data.SourceEndpointIpAddress principal.ip Combinado
event_data.UserIp principal.ip Combinado
ip principal.ip Combinado
localAddress principal.ip Combinado
remoteAddress principal.ip Combinado
src principal.ip Combinado
event_data_LocationCountryCode principal.location.country_or_region Asignado directamente
event_data.MACAddress principal.mac Combinado
srcMAC principal.mac Combinado
event_data_platformName principal.platform Asignado: (?i)LinuxLINUX, (?i)WindowsWINDOWS, (?i)mac/iosMAC
localPort principal.port Asignado directamente
exeWrittenFilePath principal.process.file.full_path Asignado directamente
event_data.ParentCommandLine principal.process.parent_process.command_line Asignado directamente
event_data.ParentImageFilePath principal.process.parent_process.file.full_path Asignado directamente
eventType principal.process.parent_process.file.names Asignado: "EppDetectionSummaryEvent","IdpDetectionSummaryEvent" → `event_data.ParentImageFil...
event_data.ParentImageFileName principal.process.parent_process.file.names Combinado
event_data.ParentProcessId principal.process.parent_process.pid Asignado directamente
event_data.ProcessId principal.process.pid Asignado directamente
event_data.Attributes.assign_to_user_id principal.user.email_addresses Combinado
event_data.SourceAccountUpn principal.user.email_addresses Combinado
userName principal.user.email_addresses Asignado: ^.+@.+$userName
user_email principal.user.email_addresses Combinado
eventType principal.user.group_identifiers Asignado: "EppDetectionSummaryEvent","IdpDetectionSummaryEvent"event_data.LogonDomain
event_data.LogonDomain principal.user.group_identifiers Combinado
event_data.Attributes.assign_to_name principal.user.user_display_name Asignado directamente
event_data.UserName principal.user.user_display_name Asignado directamente
event_data.SourceAccountName principal.user.userid Asignado directamente
event_data.UserId principal.user.userid Asignado directamente
userName principal.user.userid Asignado directamente
usrName principal.user.userid Asignado directamente
event_data.SourceAccountObjectSid principal.user.windows_sid Asignado directamente
_security_result security_result Combinado
applicationName target.application Asignado directamente
event_data.Source target.application Asignado directamente
event_data_SsoApplicationIdentifier target.application Asignado directamente
serviceName target.application Asignado directamente
event_data.CompositeId target.asset.asset_id Asignado directamente
dhost target.asset.hostname Asignado directamente
event_data.TargetEndpointHostName target.asset.hostname Asignado directamente
IP target.asset.ip Combinado
dst target.asset.ip Combinado
event_data.IOCValue target.asset.ip Combinado
event_data.TargetEndpointIpAddress target.asset.ip Combinado
TargetFileName target.file.full_path Asignado directamente
event_data.FilePath target.file.full_path Asignado directamente
event_data.MD5String target.file.md5 Asignado directamente
eventType target.file.names Asignado: "EppDetectionSummaryEvent","IdpDetectionSummaryEvent"fileaccessed.FileName, "…
event_data.FileName target.file.names Combinado
exeWrittenFileName target.file.names Combinado
fileName target.file.names Combinado
fileaccessed.FileName target.file.names Combinado
filewritten.FileName target.file.names Combinado
event_data.SHA1String target.file.sha1 Asignado directamente
event_data.SHA256String target.file.sha256 Asignado directamente
sha256 target.file.sha256 Asignado directamente
Size target.file.size Asignado directamente
dhost target.hostname Asignado directamente
event_data.TargetEndpointHostName target.hostname Asignado directamente
IP target.ip Combinado
dst target.ip Combinado
event_data.IOCValue target.ip Combinado
event_data.TargetEndpointIpAddress target.ip Combinado
dpt target.port Se cambió el nombre o se asignó
remotePort target.port Se cambió el nombre o se asignó
cmdLine target.process.command_line Asignado directamente
commandLine target.process.command_line Asignado directamente
event_data.CommandLine target.process.command_line Asignado directamente
filePath target.process.file.full_path Asignado directamente
md5 target.process.file.md5 Asignado directamente
event_data_itempostedtimestamp_label target.resource.attribute.labels Combinado
event_data_itemtype_label target.resource.attribute.labels Combinado
resource target.resource.name Asignado directamente
event_data_itemid target.resource.product_object_id Asignado directamente
eventType target.resource.type Asignado: "remove_group", "update_group"GROUP, delete_groupGROUP
event_data.Attributes.request_path target.url Asignado directamente
eventType target.user.email_addresses Asignado: "saml2Assert", "twoFactorAuthenticate", "assert", "userAuthenticate"user_email
user_email target.user.email_addresses Combinado
usrName target.user.userid Asignado directamente
event_data.TargetEndpointAccountObjectSid target.user.windows_sid Asignado directamente
N/A extensions.auth.type Constante: AUTHTYPE_UNSPECIFIED
N/A metadata.event_type Constante: GENERIC_EVENT
N/A metadata.product_name Constante: FalconHost
N/A metadata.vendor_name Constante: CrowdStrike
N/A network.direction Constante: OUTBOUND
N/A network.ip_protocol Constante: TCP
N/A principal.platform Constante: LINUX
N/A target.resource.type Constante: GROUP

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.