Recopila registros de proxy web de Netskope
En este documento, se explica cómo transferir registros de 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, incluida la identidad del usuario, la aplicación, la categoría de URL, los veredictos de amenazas y DLP, y los metadatos de 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 las políticas de Identity and Access Management (IAM) en los buckets de Cloud Storage
- Acceso con privilegios al inquilino de Netskope con credenciales de administrador
Opción 1: Transmisión de registros de Netskope a Cloud Storage
Usa esta opción si tienes una suscripción a Netskope Log Streaming habilitada en tu usuario. La transmisión de registros de Netskope envía los 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
- Ve a la consola deGoogle Cloud .
- Selecciona tu proyecto o crea uno nuevo.
- En el menú de navegación, ve a Cloud Storage > Buckets.
- Haz clic en Crear bucket.
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 una en función de tus necesidades (región, 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 Haz clic en Crear.
Crea una cuenta de servicio de Google Cloud
La transmisión de registros de Netskope requiere una cuenta de servicio de 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.
- En la consola de Google Cloud , ve a IAM y administración > Cuentas de servicio.
- Haz clic en Crear cuenta de servicio.
- 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
- Nombre de la cuenta de servicio: Ingresa
- Haz clic en Crear y continuar.
- En la sección Otorga acceso al proyecto a esta cuenta de servicio, haz lo siguiente:
- Haz clic en Selecciona un rol.
- Busca y selecciona Creador de objetos de Storage.
- Haz clic en Continuar.
- Haz clic en Listo.
Genera la clave JSON
- 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. - Selecciona la pestaña Keys.
- Haz clic en Agregar clave > Crear clave nueva.
- Seleccione JSON como tipo de clave.
- Haz clic en Crear.
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
- En la consola de Google Cloud , ve a Cloud Storage > Buckets.
- Haz clic en el nombre de tu bucket (por ejemplo,
netskope-webtx-logs). - Ve a la pestaña Permisos.
- Haz clic en Otorgar acceso.
- Proporciona los siguientes detalles de configuración:
- Agregar principales: 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.
- Agregar principales: Ingresa el correo electrónico de la cuenta de servicio (por ejemplo,
Haz clic en Guardar.
Crea el flujo de registros
- Accede al usuario de Netskope con las credenciales de administrador.
- Ve a Settings > Tools > Log Streaming.
- Haz clic en Crear transmisión.
- En el campo Nombre, ingresa un nombre legible por humanos para la transmisión. Por ejemplo,
Google SecOps WebTx GCS - Selecciona Cloud Storage de GCP como el tipo de destino.
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 una ruta de acceso de carpeta dentro del bucket en el 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 campostype,project_id,private_key_id,private_key,client_emailyclient_id.
Revisa las Opciones de entrega: La frecuencia de envío es de 240 segundos continuos.
Haz clic en Guardar (o Crear) para activar el flujo. Netskope valida las credenciales escribiendo un objeto de prueba llamado
netskope-test-file.txten 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 Google SecOps 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.
- Ve a Configuración > Administración de datos > Feeds. Si estás en una plataforma solo de SIEM, ve a Configuración > Feeds.
- Haz clic en Agregar feed nuevo.
- Haz clic en Configura un feed único.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo,
Netskope WebTx Logs). - Selecciona Google Cloud Storage V2 como el Tipo de fuente.
- Selecciona Netskope Web Proxy como el Tipo de registro.
- Haz clic en Obtener cuenta de servicio.
Se mostrará un correo electrónico único de la cuenta de servicio, por ejemplo:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comCopia esta dirección de correo electrónico para usarla en el siguiente paso.
Haz clic en Siguiente.
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 del prefijo:
gs://netskope-webtx-logs/netskope/webtx/- Reemplaza:
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 (deja este campo vacío para la raíz).
- Reemplaza:
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 correctamente la recuperación.
Antigüedad máxima del archivo: Incluye los archivos modificados en la última cantidad de días (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.
Haz clic en Siguiente.
Revisa la configuración de tu feed de noticias nuevo 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.
- Ve a Cloud Storage > Buckets.
- Haz clic en el nombre de tu bucket (por ejemplo,
netskope-webtx-logs). - Ve a la pestaña Permisos.
- Haz clic en Otorgar acceso.
- 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 las siguientes opciones:
- 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 Escritor de buckets heredados de Storage, que también otorga el permiso de borrado.
- Agregar principales: Pega el correo electrónico de la cuenta de servicio de Google SecOps (por ejemplo,
- Haz clic en Guardar.
Opción 2: Usa el agente de envío de registros de Netskope Cloud Exchange a Cloud Storage
Usa esta opción si tienes implementada la plataforma de Netskope Cloud Exchange con el módulo de Log Shipper configurado. El agente de envío de registros extrae los registros de WebTx de tu usuario de Netskope y los envía como archivos .gzip comprimidos a un bucket de Cloud Storage, que 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:
- Un usuario de Netskope Cloud Exchange con el complemento Tenant y el módulo Log Shipper ya configurados
- El complemento de origen de Netskope CLS configurado en Log Shipper (extrae datos del inquilino de Netskope)
- Un bucket de Cloud Storage creado para almacenar registros de WebTx. Si aún no creaste uno, sigue los pasos que se indican en Crea un bucket de Cloud Storage.
- Una cuenta de servicio de Google Cloud con acceso de escritura al bucket de Cloud Storage. Si aún no creaste una, sigue los pasos que se indican en Crea una cuenta de servicio de Google Cloud , Genera la clave JSON y Otorga permisos de escritura en un bucket de Cloud Storage.
Configura el complemento de destino de Cloud Storage
- En Cloud Exchange, ve a Configuración > Plugin Store.
- Busca y selecciona el complemento Google Cloud SCC (Google GCS).
- Haz clic en Configure New Plugin (o agrega una nueva configuración de complemento).
- 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
.gziporiginales, 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.
- Nombre de la configuración: Ingresa un nombre descriptivo (por ejemplo,
- Haz clic en Guardar.
- La nueva configuración del complemento aparecerá en la página Log Shipper > Plugins.
Configura una regla empresarial (opcional)
De forma predeterminada, la regla empresarial Todas filtra todas las alertas y los eventos. Si quieres filtrar los registros de WebTx específicamente, crea una nueva regla empresarial:
- En Log Shipper, ve a Business Rules.
- Haz clic en Crear regla nueva.
- Ingresa un Nombre de la regla (por ejemplo,
WebTx Only). - Configura tus filtros para que solo incluyan datos de WebTx.
- Haz clic en Guardar.
Configura la entrega de los registros
- En Log Shipper, ve a Log Delivery.
- Haz clic en Agregar configuración de entrega de registros.
- Proporciona los siguientes detalles de configuración:
- Configuración de la fuente: Selecciona el complemento de fuente de Netskope CLS (por ejemplo,
WebTxCLSoNetskope 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,
AlloWebTx Only).
- Configuración de la fuente: Selecciona el complemento de fuente de Netskope CLS (por ejemplo,
Haz clic en Guardar.
Para obtener datos históricos adicionales, haz clic en el ícono Extraer datos históricos de las acciones de Entrega de registros.
Selecciona un período de 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:
- 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.
- 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 al bucket de Cloud Storage, haz lo siguiente:
- En Cloud Exchange, ve a Log Shipper > Log Delivery.
- Verifica 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.
- 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 del agente de envío de registros. Ve a Configuración > Log Shipper. Hay dos pestañas: General y Asignaciones.
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 iniciará 3 intentos para enviar los registros al destino. Si fallan los 3 intentos de reintento, se descartará el lote de registros correspondiente.
Reintentar hasta que la entrega se realice correctamente: Se realizan reintentos ilimitados hasta que la entrega de los registros se realice correctamente.
También puedes habilitar la codificación UTF-8 para las alertas, los eventos y WebTx para garantizar un manejo fluido 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 CEF correspondiente |
| appcategory | security_result.category_details[]: appcategory | Se asigna directamente desde el campo CEF correspondiente |
| browser | security_result.detection_fields[].key: "browser", security_result.detection_fields[].value: browser | Se asigna directamente desde el campo 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 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: "excellent" o "high" se asigna a HIGH_CONFIDENCE, "medium" se asigna a MEDIUM_CONFIDENCE, "low" o "poor" se asigna a LOW_CONFIDENCE, y "unknown" o "not_defined" se asigna a UNKNOWN_CONFIDENCE. security_result.confidence_details se asigna directamente desde ccl. |
| clientBytes | network.sent_bytes: clientBytes | Se asigna directamente desde el campo 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 analizando el 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 CEF correspondiente |
| DST | target.ip[]: dst | Se asigna directamente desde el campo CEF correspondiente |
| dst_country | target.location.country_or_region: dst_country | Se asigna directamente desde el campo grokked correspondiente |
| 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 grokked correspondiente |
| dst_region | target.location.state: dst_region | Se asigna directamente desde el campo grokked correspondiente |
| dst_zip | Sin asignación | 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 CEF correspondiente |
| dvchost | about.hostname: dvchost, target.asset.hostname[]: dvchost, target.hostname: dvchost | Se asigna directamente desde el campo CEF correspondiente |
| event_timestamp | metadata.event_timestamp.seconds: event_timestamp | Se asigna directamente desde el campo grokked correspondiente |
| 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 CEF correspondiente |
| intermediario | intermediary: intermediary | Se asigna directamente desde el campo CEF correspondiente |
| md5 | target.file.md5: md5 | Se asigna directamente desde el campo 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 CEF correspondiente |
| mwType | metadata.description: mwType | Se asigna directamente desde el campo 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 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 grokked correspondiente |
| 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 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 grokked correspondiente |
| src_ip | principal.asset.ip[]: src_ip, principal.ip[]: src_ip | Se asigna directamente desde el campo grokked correspondiente |
| 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 grokked correspondiente |
| src_latitude | Sin asignación | Este campo no está asignado al UDM |
| src_longitude | Sin asignación | Este campo no está asignado al UDM |
| src_zip | Sin asignación | Este campo no está asignado al UDM |
| suser | principal.user.user_display_name: suser | Se asigna directamente desde el campo CEF correspondiente |
| target_host | target.asset.hostname[]: target_host, target.hostname: target_host | Se asigna directamente desde el campo grokked correspondiente |
| 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: marca de tiempo | Se asigna directamente desde el campo 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 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 analizando el campo user_agent con el filtro "parseduseragent" |
| user_key | principal.user.email_addresses[]: user_key | Se asigna directamente desde el campo grokked correspondiente |
| 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 convirtiendo 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 en 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 en 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. |
| tipo x | 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 | Establece el valor en "Netskope". | |
| metadata.product_name | Establece el valor en "Netskope Webproxy" si aún no está presente. | |
| metadata.log_type | Establece 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.