Recopila registros de proxy web de Netskope

Se admite en los siguientes sistemas operativos:

En este documento, se explica cómo transferir registros del proxy web de Netskope a Google Security Operations con Cloud Storage V2.

Netskope proporciona una puerta de enlace web segura nativa de la nube que inspecciona y controla el tráfico web en tiempo real. Los registros de transacciones web (WebTx) capturan registros detallados de cada sesión HTTP y HTTPS procesada por el proxy de Netskope, lo que incluye la identidad del usuario, la aplicación, la categoría de URL, los veredictos de amenazas y de DLP, y los metadatos de la red.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Una instancia de Google SecOps
  • Un proyecto de Google Cloud con la API de Cloud Storage habilitada
  • Permisos para crear y administrar buckets de Cloud Storage
  • Permisos para administrar políticas de Identity and Access Management (IAM) en buckets de Cloud Storage
  • Acceso con privilegios al arrendatario de Netskope con credenciales de administrador

Opción 1: Transmisión de registros de Netskope a Cloud Storage

Usa esta opción si tienes habilitada una suscripción a la transmisión de registros de Netskope en tu arrendatario. La transmisión de registros de Netskope envía archivos de registro de WebTx directamente a tu bucket de Cloud Storage como archivos .gzip comprimidos en un intervalo fijo de 240 segundos.

Cree un bucket de Cloud Storage

  1. Ve a la consola deGoogle Cloud .
  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 único a nivel global (por ejemplo, netskope-webtx-logs).
    Tipo de ubicación Elige según tus necesidades (regional, birregional o multirregional)
    Ubicación Selecciona la ubicación más cercana a tu organizació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.

Crea una cuenta de servicio Google Cloud

El servicio de transmisión de registros de Netskope requiere una cuenta de servicio Google Cloud con permisos de escritura en tu bucket de Cloud Storage. Netskope usa el archivo de claves JSON de esta cuenta de servicio para autenticarse cuando envía archivos de registro.

  1. En la consola de Google Cloud , 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 netskope-log-streaming.
    • Descripción de la cuenta de servicio: Ingresa Service account for Netskope Log Streaming to push WebTx logs to GCS.
  4. Haz clic en Crear y continuar.
  5. En la sección Otorga acceso al proyecto a esta cuenta de servicio, haz lo siguiente:
    1. Haz clic en Selecciona un rol.
    2. Busca y selecciona Creador de objetos de Storage.
  6. Haz clic en Continuar.
  7. Haz clic en Listo.

Genera la clave JSON

  1. En la consola de Google Cloud , ve a IAM y administración > Cuentas de servicio y haz clic en la cuenta de servicio netskope-log-streaming.
  2. Selecciona la pestaña Keys.
  3. Haz clic en Agregar clave > Crear clave nueva.
  4. Seleccione JSON como tipo de clave.
  5. Haz clic en Crear.
  6. Se descargará automáticamente un archivo de claves JSON. Guarda este archivo de forma segura. En la siguiente sección, pegarás todo el contenido de este archivo en Netskope.

Otorga permisos de escritura en un bucket de Cloud Storage

  1. En la consola de Google Cloud , ve a Cloud Storage > Buckets.
  2. Haz clic en el nombre de tu bucket (por ejemplo, netskope-webtx-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, netskope-log-streaming@YOUR_PROJECT_ID.iam.gserviceaccount.com).
    • Asignar roles: Selecciona Creador de objetos de Storage.
  6. Haz clic en Guardar.

Crea el flujo de registros

  1. Accede al usuario de Netskope con las credenciales de administrador.
  2. Ve a Configuración > Herramientas > Registro de transmisión.
  3. Haz clic en Crear flujo.
  4. En el campo Nombre, ingresa un nombre legible por humanos para el flujo. Por ejemplo, Google SecOps WebTx GCS
  5. Selecciona GCP Cloud Storage como el tipo de destino.
  6. Proporciona los siguientes detalles de configuración:

    • Bucket: Ingresa el nombre del bucket de Cloud Storage (por ejemplo, netskope-webtx-logs).

      • Ruta de acceso (opcional): Ingresa la ruta de acceso a una carpeta dentro del bucket en la que se almacenarán los registros (por ejemplo, `netskope/webtx/{%Y}`).
    • Clave privada: Pega el contenido completo del archivo de claves JSON generado en la sección anterior como un solo objeto JSON que comience con { y termine con }. Incluye los campos type, project_id, private_key_id, private_key, client_email y client_id.

  7. Revisa las Opciones de entrega: La frecuencia de envío es continua y de 240 segundos.

  8. Haz clic en Guardar (o Crear) para activar la transmisión. Netskope valida las credenciales escribiendo un objeto de prueba llamado netskope-test-file.txt en el bucket.

Configura un feed en Google SecOps para transferir registros de Netskope WebTx desde Cloud Storage

Sigue estos pasos para crear el feed de SecOps de Google y otorgar permisos de IAM:

Recupera la cuenta de servicio de Google SecOps

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

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Add New Feed.
  3. Haz clic en Configura un feed único.
  4. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Netskope WebTx Logs).
  5. Selecciona Google Cloud Storage V2 como el Tipo de fuente.
  6. Selecciona Netskope Web Proxy 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 Cloud Storage con la ruta de acceso del prefijo:

      gs://netskope-webtx-logs/netskope/webtx/
      
      • Reemplaza lo siguiente:
        • netskope-webtx-logs: Es el nombre de tu bucket de Cloud Storage.
        • netskope/webtx/: Es el prefijo de ruta de acceso configurado en la transmisión de registros de Netskope (déjalo vacío para la raíz).
    • Opción de eliminación del código fuente: Selecciona la opción de eliminación según tu preferencia:

      • No borrar archivos nunca: Nunca borra archivos de la fuente (se recomienda para las pruebas).
      • Borrar los archivos transferidos y los directorios vacíos: Borra los archivos y los directorios vacíos de la fuente después de que se complete una recuperación exitosa.
    • Antigüedad máxima del archivo: Incluye los archivos modificados en la cantidad de días especificada (el valor predeterminado es 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 dos roles en tu bucket de Cloud Storage: Visualizador de objetos de Storage para leer los objetos de registro y un rol a nivel del bucket para leer los metadatos del bucket.

  1. Ve a Cloud Storage > Buckets.
  2. Haz clic en el nombre de tu bucket (por ejemplo, netskope-webtx-logs).
  3. Ve a la pestaña Permisos.
  4. Haz clic en Otorgar acceso.
  5. Proporciona los siguientes detalles de configuración:
    • Agregar principales: Pega el correo electrónico de la cuenta de servicio de Google SecOps (por ejemplo, chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com).
    • Asignar roles: Selecciona los siguientes roles:
      • Visualizador de objetos de Storage: Lee los objetos de registro.
      • Lector de buckets heredados de Storage: Lee los metadatos del bucket. Si seleccionaste la opción de borrado Borrar los archivos transferidos y los directorios vacíos, selecciona Storage Legacy Bucket Writer, que también otorga el permiso de borrado.
  6. Haz clic en Guardar.

Opción 2: Usa el registrador de Cloud Exchange de Netskope en Cloud Storage

Usa esta opción si tienes implementada la plataforma Netskope Cloud Exchange con el módulo Log Shipper configurado. El Log Shipper extrae los registros de WebTx de tu arrendatario de Netskope y los envía como archivos .gzip comprimidos a un bucket de Cloud Storage, que luego Google SecOps lee a través de un feed de Cloud Storage V2.

Antes de comenzar (Cloud Exchange)

Asegúrate de cumplir con los siguientes requisitos previos adicionales para esta opción:

Configura el complemento de destino de Cloud Storage

  1. En Cloud Exchange, ve a Configuración > Plugin Store.
  2. Busca y selecciona el complemento Google Cloud SCC (Google GCS).
  3. Haz clic en Configure New Plugin (o agrega una configuración de complemento nueva).
  4. Proporciona los siguientes detalles de configuración:
    • Nombre de la configuración: Ingresa un nombre descriptivo (por ejemplo, GCS WebTx Destination).
    • Asignación: Selecciona un archivo de asignación. En el caso de los registros de WebTx que se envían como archivos .gzip originales, no se aplica ninguna transformación de asignación.
    • Bucket: Ingresa el nombre del bucket de Cloud Storage (por ejemplo, netskope-webtx-logs).
    • Ruta de acceso (opcional): Ingresa una ruta de acceso a la carpeta (por ejemplo, netskope/webtx/).
    • Archivo de claves: Pega el contenido completo del archivo de claves JSON de la cuenta de servicio, no solo el valor private_key.
  5. Haz clic en Guardar.
  6. La nueva configuración del complemento aparecerá en la página Log Shipper > Complementos.

Configura una regla de negocio (opcional)

De forma predeterminada, el filtro de regla comercial All filtra todas las alertas y los eventos. Si deseas filtrar los registros de WebTx de forma específica, crea una regla empresarial nueva:

  1. En Log Shipper, ve a Business Rules.
  2. Haz clic en Crear regla nueva.
  3. Ingresa un Nombre de regla (por ejemplo, WebTx Only).
  4. Configura tus filtros para que incluyan solo los datos de WebTx.
  5. Haz clic en Guardar.

Configura la entrega de registros

  1. En Log Shipper, ve a Log Delivery.
  2. Haz clic en Add Log Delivery Configuration.
  3. Proporciona los siguientes detalles de configuración:
    • Configuración de la fuente: Selecciona el complemento de fuente de CLS de Netskope (por ejemplo, WebTxCLS o Netskope CLS).
    • Configuración de destino: Selecciona el complemento de destino de Cloud Storage que configuraste (por ejemplo, GCS WebTx Destination).
    • Regla de negocio: Selecciona una regla de negocio (por ejemplo, All o WebTx Only).
  4. Haz clic en Guardar.

  5. Para obtener datos históricos adicionales, haz clic en el ícono Extraer datos históricos en las acciones de Entrega de registros.

  6. Selecciona un período Histórico desde y hasta, y haz clic en Extraer.

Configura un feed en Google SecOps para transferir registros de Netskope WebTx desde Cloud Storage

Sigue los mismos pasos que en la opción de transmisión de registros de Netskope para crear un feed de Google SecOps y otorgar permisos de IAM:

  1. Recupera la cuenta de servicio de Google SecOps: Crea un feed con Google Cloud Storage V2 como el tipo de fuente y Netskope web proxy como el tipo de registro.
  2. Otorga permisos de IAM a la cuenta de servicio de Google SecOps: Otorga los roles de Visualizador de objetos de Storage y Lector de buckets heredados de Storage (usa Escritor de buckets heredados de Storage si usas la opción de eliminación) en el bucket de Cloud Storage a la cuenta de servicio de Google SecOps.

Verifica la entrega del registro

Para verificar que los registros de WebTx se entreguen en el bucket de Cloud Storage, haz lo siguiente:

  1. En Cloud Exchange, ve a Log Shipper > Log Delivery.
  2. Consulta las columnas Total Logs/WebTx Sent to External Receiver y Total WebTx Sent to Storage Bucket para confirmar que los datos se envían al destino.
  3. En el bucket de GCS, confirma que el agente de envío de registros esté escribiendo archivos .gzip.

Establece la configuración global del agente de envío de registros (opcional)

Solo los administradores pueden cambiar la configuración global de Log Shipper. Ve a Configuración > Log Shipper. Hay dos pestañas: General y Mappings.

En la pestaña General, puedes configurar la estrategia de reintentos para la entrega de registros:

  • Predeterminado (3 reintentos): En caso de que falle la entrega de registros, Log Shipper intentará 3 veces enviar los registros al destino. Si fallan los 3 intentos de reenvío, se descartará el lote de registros correspondiente.
  • Reintenta hasta que se realice la entrega correctamente: Reintentos ilimitados hasta que se entreguen los registros correctamente.

También puedes habilitar la codificación UTF-8 para las alertas, los eventos y WebTx, y así garantizar el procesamiento continuo de los datos codificados en UTF-8. Esta función está inhabilitada de forma predeterminada.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
applicationType security_result.detection_fields[].key: "applicationType", security_result.detection_fields[].value: applicationType Se asigna directamente desde el campo de CEF correspondiente
appcategory security_result.category_details[]: appcategory Se asigna directamente desde el campo de CEF correspondiente
browser security_result.detection_fields[].key: "browser", security_result.detection_fields[].value: browser Se asigna directamente desde el campo de CEF correspondiente
c-ip principal.asset.ip[]: c-ip, principal.ip[]: c-ip Se asigna directamente desde el campo JSON correspondiente
cci security_result.detection_fields[].key: "cci", security_result.detection_fields[].value: cci Se asigna directamente desde el campo de CEF correspondiente
ccl security_result.confidence: valor derivado, security_result.confidence_details: ccl security_result.confidence se deriva en función del valor de ccl: "excelente" o "alta" se asignan a HIGH_CONFIDENCE, "media" se asigna a MEDIUM_CONFIDENCE, "baja" o "mala" se asignan a LOW_CONFIDENCE, y "desconocida" o "no_definida" se asignan a UNKNOWN_CONFIDENCE. security_result.confidence_details se asigna directamente desde ccl.
clientBytes network.sent_bytes: clientBytes Se asigna directamente desde el campo de CEF correspondiente
cs-access-method additional.fields[].key: "accessMethod", additional.fields[].value.string_value: cs-access-method Se asigna directamente desde el campo JSON correspondiente
cs-app additional.fields[].key: "x-cs-app", additional.fields[].value.string_value: cs-app, principal.application: cs-app Se asigna directamente desde el campo JSON correspondiente
cs-app-activity additional.fields[].key: "x-cs-app-activity", additional.fields[].value.string_value: cs-app-activity Se asigna directamente desde el campo JSON correspondiente.
cs-app-category additional.fields[].key: "x-cs-app-category", additional.fields[].value.string_value: cs-app-category Se asigna directamente desde el campo JSON correspondiente
cs-app-cci additional.fields[].key: "x-cs-app-cci", additional.fields[].value.string_value: cs-app-cci Se asigna directamente desde el campo JSON correspondiente
cs-app-ccl additional.fields[].key: "x-cs-app-ccl", additional.fields[].value.string_value: cs-app-ccl Se asigna directamente desde el campo JSON correspondiente
cs-app-from-user additional.fields[].key: "x-cs-app-from-user", additional.fields[].value.string_value: cs-app-from-user, principal.user.email_addresses[]: cs-app-from-user Se asigna directamente desde el campo JSON correspondiente
cs-app-instance-id additional.fields[].key: "x-cs-app-instance-id", additional.fields[].value.string_value: cs-app-instance-id Se asigna directamente desde el campo JSON correspondiente.
cs-app-object-name additional.fields[].key: "x-cs-app-object-name", additional.fields[].value.string_value: cs-app-object-name Se asigna directamente desde el campo JSON correspondiente
cs-app-object-type additional.fields[].key: "x-cs-app-object-type", additional.fields[].value.string_value: cs-app-object-type Se asigna directamente desde el campo JSON correspondiente.
cs-app-suite additional.fields[].key: "x-cs-app-suite", additional.fields[].value.string_value: cs-app-suite Se asigna directamente desde el campo JSON correspondiente
cs-app-tags additional.fields[].key: "x-cs-app-tags", additional.fields[].value.string_value: cs-app-tags Se asigna directamente desde el campo JSON correspondiente
cs-bytes network.sent_bytes: cs-bytes Se asigna directamente desde el campo JSON correspondiente
cs-content-type additional.fields[].key: "sc-content-type", additional.fields[].value.string_value: cs-content-type Se asigna directamente desde el campo JSON correspondiente.
cs-dns target.asset.hostname[]: cs-dns, target.hostname: cs-dns Se asigna directamente desde el campo JSON correspondiente.
cs-host target.asset.hostname[]: cs-host, target.hostname: cs-host Se asigna directamente desde el campo JSON correspondiente
cs-method network.http.method: cs-method Se asigna directamente desde el campo JSON correspondiente.
cs-referer network.http.referral_url: cs-referer Se asigna directamente desde el campo JSON correspondiente
cs-uri additional.fields[].key: "cs-uri", additional.fields[].value.string_value: cs-uri Se asigna directamente desde el campo JSON correspondiente
cs-uri-path additional.fields[].key: "x-cs-uri-path", additional.fields[].value.string_value: cs-uri-path Se asigna directamente desde el campo JSON correspondiente
cs-uri-port additional.fields[].key: "cs-uri-port", additional.fields[].value.string_value: cs-uri-port Se asigna directamente desde el campo JSON correspondiente
cs-uri-scheme network.application_protocol: cs-uri-scheme Se asigna directamente desde el campo JSON correspondiente después de convertirlo a mayúsculas.
cs-user-agent network.http.parsed_user_agent: Usuario-agente analizado, network.http.user_agent: cs-user-agent network.http.parsed_user_agent se deriva del análisis del campo cs-user-agent con el filtro "parseduseragent".
cs-username principal.user.userid: cs-username Se asigna directamente desde el campo JSON correspondiente.
fecha metadata.event_timestamp.seconds: Segundos de época de los campos de fecha y hora, metadata.event_timestamp.nanos: 0 La fecha y la hora se combinan y se convierten en segundos y nanosegundos de época. Los nanosegundos se establecen en 0.
dispositivo intermediary.hostname: device Se asigna directamente desde el campo de CEF correspondiente
DST target.ip[]: dst Se asigna directamente desde el campo de CEF correspondiente
dst_country target.location.country_or_region: dst_country Se asigna directamente desde el campo correspondiente analizado con Grokking
dst_ip target.asset.ip[]: dst_ip, target.ip[]: dst_ip Se asigna directamente desde el campo grokked correspondiente
dst_location target.location.city: dst_location Se asigna directamente desde el campo correspondiente analizado con Grokking
dst_region target.location.state: dst_region Se asigna directamente desde el campo correspondiente analizado con Grokking
dst_zip Sin asignar Este campo no está asignado al UDM
duser target.user.email_addresses[]: duser, target.user.user_display_name: duser Se asigna directamente desde el campo de CEF correspondiente
dvchost about.hostname: dvchost, target.asset.hostname[]: dvchost, target.hostname: dvchost Se asigna directamente desde el campo de CEF correspondiente
event_timestamp metadata.event_timestamp.seconds: event_timestamp Se asigna directamente desde el campo correspondiente analizado con Grokking
Nombre de host target.asset.hostname[]: hostname, target.hostname: hostname Se asigna directamente desde el campo CEF correspondiente
ID del incidente security_result.detection_fields[].key: "IncidentID", security_result.detection_fields[].value: IncidentID Se asigna directamente desde el campo de CEF correspondiente
intermediario intermediario: intermediary Se asigna directamente desde el campo de CEF correspondiente
md5 target.file.md5: md5 Se asigna directamente desde el campo de CEF correspondiente
mensaje Varios campos de UDM El campo de mensaje se analiza en función de si contiene "CEF". Si es así, se trata como un registro de CEF. De lo contrario, se analiza como una cadena delimitada por espacios o como JSON.
mwDetectionEngine additional.fields[].key: "mwDetectionEngine", additional.fields[].value.string_value: mwDetectionEngine Se asigna directamente desde el campo de CEF correspondiente
mwType metadata.description: mwType Se asigna directamente desde el campo de CEF correspondiente
os principal.platform: Valor derivado La plataforma se deriva del campo os: "Windows" se asigna a WINDOWS, "MAC" se asigna a MAC y "LINUX" se asigna a LINUX
página network.http.referral_url: page Se asigna directamente desde el campo CEF correspondiente
Referencia network.http.referral_url: referer Se asigna directamente desde el campo de CEF correspondiente
requestClientApplication network.http.parsed_user_agent: usuario-agente analizado, network.http.user_agent: requestClientApplication network.http.parsed_user_agent se deriva analizando el campo requestClientApplication con el filtro "parseduseragent"
request_method network.http.method: request_method Se asigna directamente desde el campo correspondiente analizado con Grokking
rs-status additional.fields[].key: "rs-status", additional.fields[].value.string_value: rs-status, network.http.response_code: rs-status Se asigna directamente desde el campo JSON correspondiente
s-ip target.asset.ip[]: s-ip, target.ip[]: s-ip Se asigna directamente desde el campo JSON correspondiente
sc-bytes network.received_bytes: sc-bytes Se asigna directamente desde el campo JSON correspondiente.
sc-content-type additional.fields[].key: "sc-content-type", additional.fields[].value.string_value: sc-content-type Se asigna directamente desde el campo JSON correspondiente
sc-status network.http.response_code: sc-status Se asigna directamente desde el campo JSON correspondiente.
serverBytes network.received_bytes: serverBytes Se asigna directamente desde el campo de CEF correspondiente
sha256 target.file.sha256: sha256 Se asigna directamente desde el campo CEF correspondiente
src principal.ip[]: src Se asigna directamente desde el campo CEF correspondiente
src_country principal.location.country_or_region: src_country Se asigna directamente desde el campo correspondiente analizado con Grokking
src_ip principal.asset.ip[]: src_ip, principal.ip[]: src_ip Se asigna directamente desde el campo correspondiente analizado con Grokking
src_location principal.location.city: src_location Se asigna directamente desde el campo grokked correspondiente
src_region principal.location.state: src_region Se asigna directamente desde el campo correspondiente analizado con Grokking
src_latitude Sin asignar Este campo no está asignado al UDM
src_longitude Sin asignar Este campo no está asignado al UDM
src_zip Sin asignar Este campo no está asignado al UDM
suser principal.user.user_display_name: suser Se asigna directamente desde el campo de CEF correspondiente
target_host target.asset.hostname[]: target_host, target.hostname: target_host Se asigna directamente desde el campo correspondiente analizado con Grokking
hora metadata.event_timestamp.seconds: Segundos de época de los campos de fecha y hora, metadata.event_timestamp.nanos: 0 La fecha y la hora se combinan y se convierten en segundos y nanosegundos de época. Los nanosegundos se establecen en 0.
timestamp metadata.event_timestamp.seconds: timestamp Se asigna directamente desde el campo de CEF correspondiente
ts metadata.event_timestamp.seconds: segundos de época desde ts, metadata.event_timestamp.nanos: 0 La marca de tiempo se convierte en segundos y nanosegundos de época. Los nanosegundos se establecen en 0.
url target.url: url Se asigna directamente desde el campo de CEF correspondiente
user_agent network.http.parsed_user_agent: Usuario-agente analizado, network.http.user_agent: user_agent network.http.parsed_user_agent se deriva del análisis del campo user_agent con el filtro "parseduseragent".
user_key principal.user.email_addresses[]: user_key Se asigna directamente desde el campo correspondiente analizado con Grokking
versión Sin asignación Este campo no está asignado al UDM
x-c-browser additional.fields[].key: "x-c-browser", additional.fields[].value.string_value: x-c-browser Se asigna directamente desde el campo JSON correspondiente
x-c-browser-version additional.fields[].key: "x-c-browser-version", additional.fields[].value.string_value: x-c-browser-version Se asigna directamente desde el campo JSON correspondiente
x-c-country principal.location.country_or_region: x-c-country Se asigna directamente desde el campo JSON correspondiente
x-c-device additional.fields[].key: "x-c-device", additional.fields[].value.string_value: x-c-device Se asigna directamente desde el campo JSON correspondiente
x-c-latitude principal.location.region_coordinates.latitude: x-c-latitude Se asigna directamente desde el campo JSON correspondiente
x-c-local-time security_result.detection_fields[].key: "x-c-local-time", security_result.detection_fields[].value: x-c-local-time Se asigna directamente desde el campo JSON correspondiente
x-c-location principal.location.name: x-c-location Se asigna directamente desde el campo JSON correspondiente
x-c-longitude principal.location.region_coordinates.longitude: x-c-longitude Se asigna directamente desde el campo JSON correspondiente.
x-c-os principal.platform: Valor derivado La plataforma se deriva del campo x-c-os: "Windows" se asigna a WINDOWS, "MAC" se asigna a MAC y "LINUX" se asigna a LINUX
x-c-region principal.location.state: x-c-region Se asigna directamente desde el campo JSON correspondiente.
x-c-zipcode additional.fields[].key: "x-c-zipcode", additional.fields[].value.string_value: x-c-zipcode Se asigna directamente desde el campo JSON correspondiente
x-category additional.fields[].key: "x-category", additional.fields[].value.string_value: x-category Se asigna directamente desde el campo JSON correspondiente
x-category-id additional.fields[].key: "x-category-id", additional.fields[].value.string_value: x-category-id Se asigna directamente desde el campo JSON correspondiente.
x-cs-access-method additional.fields[].key: "accessMethod", additional.fields[].value.string_value: x-cs-access-method Se asigna directamente desde el campo JSON correspondiente
x-cs-app principal.application: x-cs-app, additional.fields[].key: "x-cs-app", additional.fields[].value.string_value: x-cs-app Se asigna directamente desde el campo JSON correspondiente.
x-cs-app-activity additional.fields[].key: "x-cs-app-activity", additional.fields[].value.string_value: x-cs-app-activity Se asigna directamente desde el campo JSON correspondiente
x-cs-app-category additional.fields[].key: "x-cs-app-category", additional.fields[].value.string_value: x-cs-app-category Se asigna directamente desde el campo JSON correspondiente
x-cs-app-cci additional.fields[].key: "x-cs-app-cci", additional.fields[].value.string_value: x-cs-app-cci Se asigna directamente desde el campo JSON correspondiente.
x-cs-app-from-user additional.fields[].key: "x-cs-app-from-user", additional.fields[].value.string_value: x-cs-app-from-user Se asigna directamente desde el campo JSON correspondiente
x-cs-app-object-id additional.fields[].key: "x-cs-app-object-id", additional.fields[].value.string_value: x-cs-app-object-id Se asigna directamente desde el campo JSON correspondiente.
x-cs-app-object-name additional.fields[].key: "x-cs-app-object-name", additional.fields[].value.string_value: x-cs-app-object-name Se asigna directamente desde el campo JSON correspondiente.
x-cs-app-object-type additional.fields[].key: "x-cs-app-object-type", additional.fields[].value.string_value: x-cs-app-object-type Se asigna directamente desde el campo JSON correspondiente
x-cs-app-suite additional.fields[].key: "x-cs-app-suite", additional.fields[].value.string_value: x-cs-app-suite Se asigna directamente desde el campo JSON correspondiente
x-cs-app-tags additional.fields[].key: "x-cs-app-tags", additional.fields[].value.string_value: x-cs-app-tags Se asigna directamente desde el campo JSON correspondiente
x-cs-app-to-user additional.fields[].key: "x-cs-app-to-user", additional.fields[].value.string_value: x-cs-app-to-user Se asigna directamente desde el campo JSON correspondiente
x-cs-dst-ip security_result.detection_fields[].key: "x-cs-dst-ip", security_result.detection_fields[].value: x-cs-dst-ip, target.asset.ip[]: x-cs-dst-ip, target.ip[]: x-cs-dst-ip Se asigna directamente desde el campo JSON correspondiente
x-cs-dst-port security_result.detection_fields[].key: "x-cs-dst-port", security_result.detection_fields[].value: x-cs-dst-port, target.port: x-cs-dst-port Se asigna directamente desde el campo JSON correspondiente
x-cs-http-version security_result.detection_fields[].key: "x-cs-http-version", security_result.detection_fields[].value: x-cs-http-version Se asigna directamente desde el campo JSON correspondiente
x-cs-page-id additional.fields[].key: "x-cs-page-id", additional.fields[].value.string_value: x-cs-page-id Se asigna directamente desde el campo JSON correspondiente
x-cs-session-id network.session_id: x-cs-session-id Se asigna directamente desde el campo JSON correspondiente
x-cs-site additional.fields[].key: "x-cs-site", additional.fields[].value.string_value: x-cs-site Se asigna directamente desde el campo JSON correspondiente
x-cs-sni network.tls.client.server_name: x-cs-sni Se asigna directamente desde el campo JSON correspondiente
x-cs-src-ip principal.asset.ip[]: x-cs-src-ip, principal.ip[]: x-cs-src-ip, security_result.detection_fields[].key: "x-cs-src-ip", security_result.detection_fields[].value: x-cs-src-ip Se asigna directamente desde el campo JSON correspondiente
x-cs-src-ip-egress principal.asset.ip[]: x-cs-src-ip-egress, principal.ip[]: x-cs-src-ip-egress, security_result.detection_fields[].key: "x-cs-src-ip-egress", security_result.detection_fields[].value: x-cs-src-ip-egress Se asigna directamente desde el campo JSON correspondiente
x-cs-src-port principal.port: x-cs-src-port, security_result.detection_fields[].key: "x-cs-src-port", security_result.detection_fields[].value: x-cs-src-port Se asigna directamente desde el campo JSON correspondiente
x-cs-ssl-cipher network.tls.cipher: x-cs-ssl-cipher Se asigna directamente desde el campo JSON correspondiente
x-cs-ssl-fronting-error security_result.detection_fields[].key: "x-cs-ssl-fronting-error", security_result.detection_fields[].value: x-cs-ssl-fronting-error Se asigna directamente desde el campo JSON correspondiente
x-cs-ssl-handshake-error security_result.detection_fields[].key: "x-cs-ssl-handshake-error", security_result.detection_fields[].value: x-cs-ssl-handshake-error Se asigna directamente desde el campo JSON correspondiente
x-cs-ssl-ja3 network.tls.client.ja3: x-cs-ssl-ja3 Se asigna directamente desde el campo JSON correspondiente
x-cs-ssl-version network.tls.version: x-cs-ssl-version Se asigna directamente desde el campo JSON correspondiente
x-cs-timestamp metadata.event_timestamp.seconds: x-cs-timestamp Se asigna directamente desde el campo JSON correspondiente
x-cs-traffic-type additional.fields[].key: "trafficType", additional.fields[].value.string_value: x-cs-traffic-type Se asigna directamente desde el campo JSON correspondiente
x-cs-tunnel-src-ip security_result.detection_fields[].key: "x-cs-tunnel-src-ip", security_result.detection_fields[].value: x-cs-tunnel-src-ip Se asigna directamente desde el campo JSON correspondiente
x-cs-uri-path additional.fields[].key: "x-cs-uri-path", additional.fields[].value.string_value: x-cs-uri-path Se asigna directamente desde el campo JSON correspondiente.
x-cs-url target.url: x-cs-url Se asigna directamente desde el campo JSON correspondiente
x-cs-userip security_result.detection_fields[].key: "x-cs-userip", security_result.detection_fields[].value: x-cs-userip Se asigna directamente desde el campo JSON correspondiente
x-other-category security_result.category_details[]: x-other-category Se asigna directamente desde el campo JSON correspondiente
x-other-category-id security_result.detection_fields[].key: "x-other-category-id", security_result.detection_fields[].value: x-other-category-id Se asigna directamente desde el campo JSON correspondiente
x-policy-action security_result.action: Valor derivado, security_result.action_details: x-policy-action security_result.action se deriva de la conversión de x-policy-action a mayúsculas. Si el valor en mayúsculas es "ALLOW" o "BLOCK", se usa directamente. De lo contrario, no se asigna. security_result.action_details se asigna directamente desde x-policy-action.
x-policy-dst-host security_result.detection_fields[].key: "x-policy-dst-host", security_result.detection_fields[].value: x-policy-dst-host Se asigna directamente desde el campo JSON correspondiente
x-policy-dst-host-source security_result.detection_fields[].key: "x-policy-dst-host-source", security_result.detection_fields[].value: x-policy-dst-host-source Se asigna directamente desde el campo JSON correspondiente
x-policy-dst-ip security_result.detection_fields[].key: "x-policy-dst-ip", security_result.detection_fields[].value: x-policy-dst-ip Se asigna directamente desde el campo JSON correspondiente
x-policy-name security_result.rule_name: x-policy-name Se asigna directamente desde el campo JSON correspondiente
x-policy-src-ip security_result.detection_fields[].key: "x-policy-src-ip", security_result.detection_fields[].value: x-policy-src-ip Se asigna directamente desde el campo JSON correspondiente.
x-r-cert-enddate network.tls.server.certificate.not_after.seconds: Segundos de época de x-r-cert-enddate La fecha se convierte a segundos de época.
x-r-cert-expired additional.fields[].key: "x-r-cert-expired", additional.fields[].value.string_value: x-r-cert-expired Se asigna directamente desde el campo JSON correspondiente
x-r-cert-incomplete-chain additional.fields[].key: "x-r-cert-incomplete-chain", additional.fields[].value.string_value: x-r-cert-incomplete-chain Se asigna directamente desde el campo JSON correspondiente
x-r-cert-issuer-cn network.tls.server.certificate.issuer: x-r-cert-issuer-cn Se asigna directamente desde el campo JSON correspondiente
x-r-cert-mismatch additional.fields[].key: "x-r-cert-mismatch", additional.fields[].value.string_value: x-r-cert-mismatch Se asigna directamente desde el campo JSON correspondiente.
x-r-cert-revoked additional.fields[].key: "x-r-cert-revoked", additional.fields[].value.string_value: x-r-cert-revoked Se asigna directamente desde el campo JSON correspondiente.
x-r-cert-self-signed additional.fields[].key: "x-r-cert-self-signed", additional.fields[].value.string_value: x-r-cert-self-signed Se asigna directamente desde el campo JSON correspondiente
x-r-cert-startdate network.tls.server.certificate.not_before.seconds: Segundos de época de x-r-cert-startdate La fecha se convierte a segundos de época.
x-r-cert-subject-cn network.tls.server.certificate.subject: x-r-cert-subject-cn Se asigna directamente desde el campo JSON correspondiente.
x-r-cert-untrusted-root additional.fields[].key: "x-r-cert-untrusted-root", additional.fields[].value.string_value: x-r-cert-untrusted-root Se asigna directamente desde el campo JSON correspondiente
x-r-cert-valid additional.fields[].key: "x-r-cert-valid", additional.fields[].value.string_value: x-r-cert-valid Se asigna directamente desde el campo JSON correspondiente
x-request-id additional.fields[].key: "requestId", additional.fields[].value.string_value: x-request-id Se asigna directamente desde el campo JSON correspondiente
x-rs-file-category additional.fields[].key: "x-rs-file-category", additional.fields[].value.string_value: x-rs-file-category Se asigna directamente desde el campo JSON correspondiente
x-rs-file-type additional.fields[].key: "x-rs-file-type", additional.fields[].value.string_value: x-rs-file-type Se asigna directamente desde el campo JSON correspondiente
x-s-country target.location.country_or_region: x-s-country Se asigna directamente desde el campo JSON correspondiente
x-s-dp-name additional.fields[].key: "x-s-dp-name", additional.fields[].value.string_value: x-s-dp-name Se asigna directamente desde el campo JSON correspondiente
x-s-latitude target.location.region_coordinates.latitude: x-s-latitude Se asigna directamente desde el campo JSON correspondiente
x-s-location target.location.name: x-s-location Se asigna directamente desde el campo JSON correspondiente
x-s-longitude target.location.region_coordinates.longitude: x-s-longitude Se asigna directamente desde el campo JSON correspondiente.
x-s-region target.location.state: x-s-region Se asigna directamente desde el campo JSON correspondiente.
x-s-zipcode additional.fields[].key: "x-s-zipcode", additional.fields[].value.string_value: x-s-zipcode Se asigna directamente desde el campo JSON correspondiente
x-sr-ssl-cipher security_result.detection_fields[].key: "x-sr-ssl-cipher", security_result.detection_fields[].value: x-sr-ssl-cipher Se asigna directamente desde el campo JSON correspondiente
x-sr-ssl-client-certificate-error security_result.detection_fields[].key: "x-sr-ssl-client-certificate-error", security_result.detection_fields[].value: x-sr-ssl-client-certificate-error Se asigna directamente desde el campo JSON correspondiente
x-sr-ssl-engine-action security_result.detection_fields[].key: "x-sr-ssl-engine-action", security_result.detection_fields[].value: x-sr-ssl-engine-action Se asigna directamente desde el campo JSON correspondiente.
x-sr-ssl-engine-action-reason security_result.detection_fields[].key: "x-sr-ssl-engine-action-reason", security_result.detection_fields[].value: x-sr-ssl-engine-action-reason Se asigna directamente desde el campo JSON correspondiente.
x-sr-ssl-handshake-error security_result.detection_fields[].key: "x-sr-ssl-handshake-error", security_result.detection_fields[].value: x-sr-ssl-handshake-error Se asigna directamente desde el campo JSON correspondiente
x-sr-ssl-ja3s network.tls.server.ja3s: x-sr-ssl-ja3s Se asigna directamente desde el campo JSON correspondiente
x-sr-ssl-malformed-ssl security_result.detection_fields[].key: "x-sr-ssl-malformed-ssl", security_result.detection_fields[].value: x-sr-ssl-malformed-ssl Se asigna directamente desde el campo JSON correspondiente.
x-sr-ssl-version security_result.detection_fields[].key: "x-sr-ssl-version", security_result.detection_fields[].value: x-sr-ssl-version Se asigna directamente desde el campo JSON correspondiente
x-s-custom-signing-ca-error security_result.detection_fields[].key: "x-s-custom-signing-ca-error", security_result.detection_fields[].value: x-s-custom-signing-ca-error Se asigna directamente desde el campo JSON correspondiente
x-ssl-bypass security_result.detection_fields[].key: "SSL BYPASS", security_result.detection_fields[].value: x-ssl-bypass o x-ssl-bypass-reason Si x-ssl-bypass es "Yes" y x-ssl-bypass-reason está presente, se usa el valor de x-ssl-bypass-reason. De lo contrario, se usa el valor de x-ssl-bypass.
x-ssl-policy-action security_result.detection_fields[].key: "x-ssl-policy-action", security_result.detection_fields[].value: x-ssl-policy-action Se asigna directamente desde el campo JSON correspondiente
x-ssl-policy-categories security_result.category_details[]: x-ssl-policy-categories Se asigna directamente desde el campo JSON correspondiente
x-ssl-policy-dst-host security_result.detection_fields[].key: "x-ssl-policy-dst-host", security_result.detection_fields[].value: x-ssl-policy-dst-host Se asigna directamente desde el campo JSON correspondiente.
x-ssl-policy-dst-host-source security_result.detection_fields[].key: "x-ssl-policy-dst-host-source", security_result.detection_fields[].value: x-ssl-policy-dst-host-source Se asigna directamente desde el campo JSON correspondiente
x-ssl-policy-dst-ip security_result.detection_fields[].key: "x-ssl-policy-dst-ip", security_result.detection_fields[].value: x-ssl-policy-dst-ip Se asigna directamente desde el campo JSON correspondiente
x-ssl-policy-name security_result.rule_name: x-ssl-policy-name Se asigna directamente desde el campo JSON correspondiente.
x-ssl-policy-src-ip security_result.detection_fields[].key: "x-ssl-policy-src-ip", security_result.detection_fields[].value: x-ssl-policy-src-ip Se asigna directamente desde el campo JSON correspondiente.
x-sr-dst-ip security_result.detection_fields[].key: "x-sr-dst-ip", security_result.detection_fields[].value: x-sr-dst-ip Se asigna directamente desde el campo JSON correspondiente
x-sr-dst-port security_result.detection_fields[].key: "x-sr-dst-port", security_result.detection_fields[].value: x-sr-dst-port Se asigna directamente desde el campo JSON correspondiente
x-type additional.fields[].key: "xType", additional.fields[].value.string_value: x-type Se asigna directamente desde el campo JSON correspondiente.
x-transaction-id additional.fields[].key: "transactionId", additional.fields[].value.string_value: x-transaction-id Se asigna directamente desde el campo JSON correspondiente
metadata.vendor_name Se establece en "Netskope".
metadata.product_name Establece el valor en "Netskope Webproxy" si aún no está presente.
metadata.log_type Establece el valor en "NETSKOPE_WEBPROXY".

Registro de cambios

Consulta el registro de cambios de este analizador

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