Recopilar registros de Imperva WAF
En este documento se explica cómo recoger registros del firewall de aplicaciones web (WAF) de Imperva en Google Security Operations mediante una API o Amazon S3. El analizador transforma los registros de los formatos SYSLOG+KV, JSON, CEF y LEEF en un modelo de datos unificado (UDM). Procesa varias estructuras de registro, extrae los campos relevantes, los normaliza en atributos de UDM y enriquece los datos con información contextual para mejorar el análisis de seguridad.
Diferencias en el método de recogida
La integración de Imperva WAF con Google SecOps admite los siguientes métodos para la ingestión de registros:
- Recogida de APIs: con este método, Google SecOps extrae los registros directamente de la API de Imperva. Se trata de una conexión directa y solo admite el tipo de registro
IMPERVA_WAF
. - Recogida de segmentos de Amazon S3 V2: con este método, Imperva WAF envía los registros a un segmento de Amazon S3 designado. A continuación, Google SecOps extrae los registros de este contenedor. Como el contenedor de S3 puede recibir registros de muchas fuentes, este método admite la recogida de muchos tipos de registros de Imperva diferentes, siempre que configure esos registros para que se envíen explícitamente al contenedor.
Antes de empezar
Asegúrate de que cumples los siguientes requisitos previos:
- El tipo de ingesta (API o Amazon S3) que mejor se adapte a tus requisitos de configuración.
- Instancia de Google SecOps.
- Acceso privilegiado a AWS.
- Acceso privilegiado a Imperva WAF.
Recoger registros de Imperva WAF mediante la API
Configurar un usuario de solo lectura para el WAF de Imperva
- Inicia sesión en la consola de Imperva con una cuenta con privilegios.
- Ve a Configuración > Usuarios y roles.
- Haz clic en Add User (Añadir usuario).
- Rellena los campos obligatorios:
- Nombre de usuario: introduce un nombre de usuario único.
- Contraseña: elige una contraseña segura.
- Correo electrónico: proporciona la dirección de correo del usuario.
- En la sección Roles, selecciona el rol Lector.
- Haz clic en Guardar para crear el usuario con acceso de solo lectura.
Opcional: Configurar el usuario de lectura como solo API
- En la lista Usuarios, localiza al usuario que acabas de crear.
- Haga clic en el botón Acciones (tres puntos) situado junto al nombre del usuario.
- Selecciona Definir como usuario solo de API.
Generar el ID y la clave de API
- En la lista Usuarios, selecciona el usuario que acabas de crear.
- Selecciona Configuración y haz clic en Claves de API.
- Haz clic en Añadir clave de API.
- Rellena los campos obligatorios:
- Nombre: introduce un nombre descriptivo para la clave de API.
- Opcional: Descripción: proporciona una descripción opcional.
- En la lista La clave de API caducará en, selecciona Nunca.
- Para habilitar esta opción, selecciona Estado.
- Haz clic en Guardar.
El sistema muestra el ID y la clave de la API. Copia y guarda estas credenciales, ya que no se volverán a mostrar.
Configurar feeds
Para configurar un feed, sigue estos pasos:
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Añadir feed.
- En la página siguiente, haga clic en Configurar un solo feed.
- En el campo Nombre del feed, escriba un nombre para el feed (por ejemplo, Registros de WAF de Imperva Incapsula).
- Seleccione API de terceros como Tipo de fuente.
- Seleccione Imperva como Tipo de registro.
- Haz clic en Siguiente.
- Especifique los valores de los siguientes parámetros de entrada:
- Encabezado HTTP de autenticación: introduce el ID y la clave de la API de Imperva en dos líneas:
apiId:<YOUR_API_ID>
yapiKey:<YOUR_API_KEY>
.
- Encabezado HTTP de autenticación: introduce el ID y la clave de la API de Imperva en dos líneas:
- Haz clic en Siguiente.
- Revise la configuración del feed en la pantalla Finalizar y, a continuación, haga clic en Enviar.
Recoger registros de Imperva WAF mediante Amazon S3
Configurar AWS IAM y S3
- Crea un segmento de Amazon S3 siguiendo esta guía del usuario: Crear un segmento.
- Guarda el nombre y la región del bucket para usarlos más adelante.
- Crea un usuario siguiendo esta guía: Crear un usuario de gestión de identidades y accesos.
- Selecciona el Usuario creado.
- Selecciona la pestaña Credenciales de seguridad.
- En la sección Claves de acceso, haz clic en Crear clave de acceso.
- Selecciona Servicio de terceros como Caso práctico.
- Haz clic en Siguiente.
- Opcional: añade una etiqueta de descripción.
- Haz clic en Crear clave de acceso.
- Haz clic en Descargar archivo .csv y guarda la clave de acceso y la clave de acceso secreta para usarlas más adelante.
- Haz clic en Listo.
- Selecciona la pestaña Permisos.
- En la sección Políticas de permisos, haz clic en Añadir permisos.
- Selecciona Añadir permisos.
- Seleccione Adjuntar políticas directamente.
- Busca y selecciona la política AmazonS3FullAccess.
- Haz clic en Siguiente.
- Haz clic en Añadir permisos.
Configurar la conexión de Amazon S3 de Imperva WAF
- Inicia sesión en la consola de Imperva con una cuenta con privilegios.
- Ve a Registros > Configuración de registros.
- Selecciona Amazon S3.
- Rellena los campos obligatorios:
- Clave de acceso
- Clave secreta
- Ruta: introduce la ruta con el siguiente formato:
<Amazon S3 bucket name>/<log folder>
. Por ejemplo:MyBucket/MyIncapsulaLogFolder
.
- Haz clic en Probar conexión para realizar un ciclo de pruebas completo en el que se transfiera un archivo de prueba a la carpeta que hayas designado.
- Selecciona el formato de los archivos de registro como CEF.
- De forma predeterminada, los archivos de registro se comprimen. Selecciona la opción para no comprimir los archivos.
Configurar un feed en Google SecOps para ingerir registros de WAF de Imperva de Amazon S3 V2
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Añadir feed.
- En el campo Nombre del feed, introduce un nombre para el feed (por ejemplo,
Imperva WAF Logs
). - Selecciona Amazon S3 V2 como Tipo de fuente.
- Seleccione Imperva como Tipo de registro.
- Haz clic en Siguiente.
Especifique los valores de los siguientes parámetros de entrada:
- URI de S3: el URI del segmento.
s3://your-log-bucket-name/
- Sustituye
your-log-bucket-name
por el nombre real del segmento.
- Sustituye
Opciones de eliminación de la fuente: selecciona la opción de eliminación que prefieras.
Antigüedad máxima del archivo: incluye los archivos modificados en los últimos días. El valor predeterminado es 180 días.
ID de clave de acceso: clave de acceso de usuario con acceso al bucket de S3.
Clave de acceso secreta: clave secreta del usuario con acceso al bucket de S3.
Espacio de nombres de recursos: el espacio de nombres de recursos.
Etiquetas de ingestión: etiqueta que se aplicará a los eventos de este feed.
- URI de S3: el URI del segmento.
Haz clic en Siguiente.
Revise la configuración de la nueva fuente en la pantalla Finalizar y, a continuación, haga clic en Enviar.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
account_id | target.user.userid | El ID de la cuenta del objeto JSON |
actuar | security_result.action | Si act es allowed , alert , empieza por REQ_PASSED o empieza por REQ_CACHED , asigna el valor ALLOW . Si act es deny , blocked , empieza por REQ_BLOCKED o empieza por REQ_CHALLENGE , asigna el valor BLOCK . Si act coincide con la regex (?i)REQ_BAD , se asigna el valor FAIL . De lo contrario, asigna el valor UNKNOWN_ACTION . |
aplicación | network.application_protocol | Se ha cambiado el nombre de kv.app . Se ha convertido a mayúsculas. |
calCountryOrRegion | principal.location.country_or_region | Se ha cambiado el nombre de calCountryOrRegion . |
gato | security_result.action_details | Si cat empieza por REQ_PASSED o REQ_CACHED , asigna el valor ALLOW a action y asigna a action_details una descripción basada en el valor de cat . Si cat empieza por REQ_BAD , asigna FAIL a action y asigna a action_details una descripción basada en el valor de cat . Si cat empieza por REQ_BLOCKED o REQ_CHALLENGE , asigna el valor BLOCK a action y asigna a action_details una descripción basada en el valor de cat . |
cicode | principal.location.city | Se ha cambiado el nombre de cicode . |
classified_client | security_result.detection_fields | Si classified_client no está vacío, crea una entrada detection_fields con la clave classified_client y el valor classified_client . |
client.domain | principal.hostname, principal.asset.hostname | Se ha cambiado el nombre de client.domain . |
client.geo.country_iso_code | principal.location.country_or_region | Se ha cambiado el nombre de client.geo.country_iso_code . |
client.ip | principal.ip, principal.asset.ip | Se ha combinado con principal.ip y principal.asset.ip . |
cn1 | network.http.response_code | Se ha cambiado el nombre de cn1 . Se ha convertido en un número entero. |
context_key | target.resource.name | Se ha cambiado el nombre de context_key . |
país | principal.location.country_or_region | Se ha cambiado el nombre de country . |
credentials_leaked | security_result.detection_fields | Se ha convertido en una cadena. Si no está vacío, crea una entrada detection_fields con la clave credentials_leaked y el valor credentials_leaked . |
cs1 | security_result.detection_fields | Si cs1 no está vacío, NA o `, create a new detection_fieldsentry with key cs1Labeland value cs1`. |
cs1Label | security_result.detection_fields | Se usa como clave de la entrada detection_fields creada a partir de cs1 . |
cs2 | security_result.detection_fields | Si cs2 no está vacío, crea una entrada detection_fields con la clave cs2Label y el valor cs2 . |
cs2Label | security_result.detection_fields | Se usa como clave de la entrada detection_fields creada a partir de cs2 . |
cs3 | security_result.detection_fields | Si cs3 no está vacío, - o `, create a new detection_fieldsentry with key cs3Labeland value cs3`. |
cs3Label | security_result.detection_fields | Se usa como clave de la entrada detection_fields creada a partir de cs3 . |
cs4 | security_result.detection_fields | Si cs4 no está vacío, crea una entrada detection_fields con la clave cs4Label y el valor cs4 . |
cs4Label | security_result.detection_fields | Se usa como clave de la entrada detection_fields creada a partir de cs4 . |
cs5 | security_result.detection_fields | Si cs5 no está vacío, crea una entrada detection_fields con la clave cs5Label y el valor cs5 . |
cs5Label | security_result.detection_fields | Se usa como clave de la entrada detection_fields creada a partir de cs5 . |
cs6 | principal.application | Se ha cambiado el nombre de cs6 . |
cs7 | principal.location.region_latitude | Si cs7Label es latitude , se cambia el nombre a principal.location.region_latitude . Se ha convertido en flotante. |
cs7Label | Si cs7Label es latitude , se usa para determinar la asignación de cs7 . |
|
cs8 | principal.location.region_longitude | Si cs8Label es longitude , se cambia el nombre a principal.location.region_longitude . Se ha convertido en flotante. |
cs8Label | Si cs8Label es longitude , se usa para determinar la asignación de cs8 . |
|
cs9 | security_result.rule_name, extensions.vulns.vulnerabilities.name | Si cs9 no está vacío, asigna el valor security_result.rule_name y crea una entrada vulnerabilities con el nombre cs9 . |
Cliente | target.user.user_display_name | Se ha cambiado el nombre de Customer . |
declared_client | security_result.detection_fields | Si declared_client no está vacío, crea una entrada detection_fields con la clave declared_client y el valor declared_client . |
description | security_result.threat_name | Se ha cambiado el nombre de description . |
deviceExternalId | network.community_id | Se ha cambiado el nombre de deviceExternalId . |
deviceReceiptTime | metadata.event_timestamp | Se ha analizado como una fecha y se ha definido como metadata.event_timestamp . Si está vacío, se usa log_timestamp o kv.start en su lugar. |
dhost | target.hostname | Se ha cambiado el nombre de kv.dhost . |
dproc | security_result.category_details | Se ha cambiado el nombre de dproc . |
dpt | target.port | Se ha cambiado el nombre de kv.dpt . Se ha convertido en un número entero. |
dst | target.ip, target.asset.ip | Si dst no está vacío, se combina con target.ip y target.asset.ip . |
dstPort | target.port | Se ha cambiado el nombre de dstPort . Se ha convertido en un número entero. |
duser | target.user.userid | Si duser no coincide con la regex .*?Alert.* y no está vacío, se le cambia el nombre a target.user.userid . |
fin | security_result.detection_fields | Si end no está vacío, crea una entrada detection_fields con la clave event_end_time y el valor end . |
event.id | El ID del evento del objeto JSON | |
event.provider | principal.user.user_display_name | Se ha cambiado el nombre de event.provider . |
failed_logins_last_24h | security_result.detection_fields | Se ha convertido en una cadena. Si no está vacío, crea una entrada detection_fields con la clave failed_logins_last_24h y el valor failed_logins_last_24h . |
fileId | network.session_id | Se ha cambiado el nombre de fileId . |
filePermission | security_result.detection_fields | Si filePermission no está vacío, crea una entrada detection_fields con la clave filePermission y el valor filePermission . |
fileType | security_result.detection_fields | Si fileType no está vacío, crea una entrada detection_fields con la clave fileType y el valor fileType . |
huella digital | security_result.detection_fields | Si fingerprint no está vacío, crea una entrada detection_fields con la clave log_imperva_fingerprint y el valor fingerprint . |
flexString1 | network.http.response_code | Se ha cambiado el nombre de kv.flexString1 . Se ha convertido en un número entero. |
http.request.body.bytes | network.sent_bytes | Se ha convertido en un número entero sin signo. Se ha cambiado el nombre de http.request.body.bytes . |
http.request.method | network.http.method | Se ha cambiado el nombre de http.request.method . |
imperva.abp.apollo_rule_versions | security_result.detection_fields | Por cada entrada de imperva.abp.apollo_rule_versions , cree una entrada detection_fields con la clave apollo_rule_versions_{index} y el valor igual a la entrada. |
imperva.abp.bot_behaviors | security_result.detection_fields | Por cada entrada de imperva.abp.bot_behaviors , cree una entrada detection_fields con la clave bot_behaviors_{index} y el valor igual a la entrada. |
imperva.abp.bot_deciding_condition_ids | security_result.detection_fields | Por cada entrada de imperva.abp.bot_deciding_condition_ids , cree una entrada detection_fields con la clave bot_deciding_condition_ids_{index} y el valor igual a la entrada. |
imperva.abp.bot_deciding_condition_names | security_result.detection_fields | Por cada entrada de imperva.abp.bot_deciding_condition_names , cree una entrada detection_fields con la clave bot_deciding_condition_names_{index} y el valor igual a la entrada. |
imperva.abp.bot_triggered_condition_ids | security_result.detection_fields | Por cada entrada de imperva.abp.bot_triggered_condition_ids , cree una entrada detection_fields con la clave bot_triggered_condition_ids_{index} y el valor igual a la entrada. |
imperva.abp.bot_triggered_condition_names | security_result.detection_fields | Por cada entrada de imperva.abp.bot_triggered_condition_names , cree una entrada detection_fields con la clave bot_triggered_condition_names_{index} y el valor igual a la entrada. |
imperva.abp.bot_violations | security_result.detection_fields | Por cada entrada de imperva.abp.bot_violations , cree una entrada detection_fields con la clave bot_violations_{index} y el valor igual a la entrada. |
imperva.abp.customer_request_id | network.session_id | Se ha cambiado el nombre de imperva.abp.customer_request_id . |
imperva.abp.headers_accept_encoding | security_result.detection_fields | Si imperva.abp.headers_accept_encoding no está vacío, crea una entrada detection_fields con la clave Accept Encoding y el valor imperva.abp.headers_accept_encoding . |
imperva.abp.headers_accept_language | security_result.detection_fields | Si imperva.abp.headers_accept_language no está vacío, crea una entrada detection_fields con la clave Accept Language y el valor imperva.abp.headers_accept_language . |
imperva.abp.headers_connection | security_result.detection_fields | Si imperva.abp.headers_connection no está vacío, crea una entrada detection_fields con la clave headers_connection y el valor imperva.abp.headers_connection . |
imperva.abp.headers_referer | network.http.referral_url | Se ha cambiado el nombre de imperva.abp.headers_referer . |
imperva.abp.hsig | security_result.detection_fields | Si imperva.abp.hsig no está vacío, crea una entrada detection_fields con la clave hsig y el valor imperva.abp.hsig . |
imperva.abp.monitor_action | security_result.action, security_result.severity | Si imperva.abp.monitor_action coincide con la regex (?i)allow , asigna el valor ALLOW a security_action y el valor INFORMATIONAL a severity . Si imperva.abp.monitor_action coincide con la regex (?i)captcha o (?i)block , asigna el valor BLOCK a security_action . |
imperva.abp.pid | principal.process.pid | Se ha cambiado el nombre de imperva.abp.pid . |
imperva.abp.policy_id | security_result.detection_fields | Si imperva.abp.policy_id no está vacío, crea una entrada detection_fields con la clave Policy Id y el valor imperva.abp.policy_id . |
imperva.abp.policy_name | security_result.detection_fields | Si imperva.abp.policy_name no está vacío, crea una entrada detection_fields con la clave Policy Name y el valor imperva.abp.policy_name . |
imperva.abp.random_id | additional.fields | Si imperva.abp.random_id no está vacío, crea una entrada additional.fields con la clave Random Id y el valor imperva.abp.random_id . |
imperva.abp.request_type | principal.labels | Si imperva.abp.request_type no está vacío, crea una entrada principal.labels con la clave request_type y el valor imperva.abp.request_type . |
imperva.abp.selector | security_result.detection_fields | Si imperva.abp.selector no está vacío, crea una entrada detection_fields con la clave selector y el valor imperva.abp.selector . |
imperva.abp.selector_derived_id | security_result.detection_fields | Si imperva.abp.selector_derived_id no está vacío, crea una entrada detection_fields con la clave selector_derived_id y el valor imperva.abp.selector_derived_id . |
imperva.abp.tls_fingerprint | security_result.description | Se ha cambiado el nombre de imperva.abp.tls_fingerprint . |
imperva.abp.token_id | target.resource.product_object_id | Se ha cambiado el nombre de imperva.abp.token_id . |
imperva.abp.zuid | additional.fields | Si imperva.abp.zuid no está vacío, crea una entrada additional.fields con la clave zuid y el valor imperva.abp.zuid . |
imperva.additional_factors | additional.fields | Por cada entrada de imperva.additional_factors , cree una entrada additional.fields con la clave additional_factors_{index} y el valor igual a la entrada. |
imperva.audit_trail.event_action | security_result.detection_fields | Si imperva.audit_trail.event_action no está vacío, crea una entrada detection_fields con la clave imperva.audit_trail.event_action y el valor imperva.audit_trail.event_action_description . |
imperva.audit_trail.event_action_description | security_result.detection_fields | Se usa como valor de la entrada detection_fields creada a partir de imperva.audit_trail.event_action . |
imperva.audit_trail.event_context | security_result.detection_fields | Si imperva.audit_trail.event_context no está vacío, crea una entrada detection_fields con la clave imperva.audit_trail.event_context y el valor imperva.audit_trail.event_context_description . |
imperva.audit_trail.event_context_description | security_result.detection_fields | Se usa como valor de la entrada detection_fields creada a partir de imperva.audit_trail.event_context . |
imperva.country | principal.location.country_or_region | Se ha cambiado el nombre de imperva.country . |
imperva.declared_client | security_result.detection_fields | Si imperva.declared_client no está vacío, crea una entrada detection_fields con la clave declared_client y el valor imperva.declared_client . |
imperva.device_reputation | additional.fields | Por cada entrada de imperva.device_reputation , crea una entrada additional.fields con la clave device_reputation y un valor de lista que contenga la entrada. |
imperva.domain_risk | security_result.detection_fields | Si imperva.domain_risk no está vacío, crea una entrada detection_fields con la clave domain_risk y el valor imperva.domain_risk . |
imperva.failed_logins_last_24h | security_result.detection_fields | Se ha convertido en una cadena. Si no está vacío, crea una entrada detection_fields con la clave failed_logins_last_24h y el valor failed_logins_last_24h . |
imperva.fingerprint | security_result.detection_fields | Si imperva.fingerprint no está vacío, crea una entrada detection_fields con la clave log_imperva_fingerprint y el valor imperva.fingerprint . |
imperva.ids.account_id | metadata.product_log_id | Se ha cambiado el nombre de imperva.ids.account_id . |
imperva.ids.account_name | metadata.product_event_type | Se ha cambiado el nombre de imperva.ids.account_name . |
imperva.ids.site_id | additional.fields | Si imperva.ids.site_id no está vacío, crea una entrada additional.fields con la clave site_id y el valor imperva.ids.site_id . |
imperva.ids.site_name | additional.fields | Si imperva.ids.site_name no está vacío, crea una entrada additional.fields con la clave site_name y el valor imperva.ids.site_name . |
imperva.referrer | network.http.referral_url | Se ha cambiado el nombre de imperva.referrer . |
imperva.request_session_id | network.session_id | Se ha cambiado el nombre de imperva.request_session_id . |
imperva.request_user | security_result.detection_fields | Si imperva.request_user no está vacío, crea una entrada detection_fields con la clave request_user y el valor imperva.request_user . |
imperva.risk_level | security_result.severity_details | Se ha cambiado el nombre de imperva.risk_level . |
imperva.risk_reason | security_result.description | Se ha cambiado el nombre de imperva.risk_reason . |
imperva.significant_domain_name | security_result.detection_fields | Si imperva.significant_domain_name no está vacío, crea una entrada detection_fields con la clave significant_domain_name y el valor imperva.significant_domain_name . |
imperva.violated_directives | security_result.detection_fields | Por cada entrada de imperva.violated_directives , cree una entrada detection_fields con la clave violated_directives y el valor igual a la entrada. |
está en | network.received_bytes | Se ha cambiado el nombre de in . Se ha convertido en un número entero sin signo. |
log_timestamp | metadata.event_timestamp | Si deviceReceiptTime está vacío y kv.start está vacío, asigna el valor metadata.event_timestamp . |
mensaje | metadata.description | Si message no está vacío y event.provider , imperva.ids.account_name y client.ip están vacíos, se le asigna el valor metadata.description . |
postbody | security_result.detection_fields | Si postbody no está vacío, crea una entrada detection_fields con la clave post_body_info y el valor postbody . |
proto | network.application_protocol | Se ha cambiado el nombre de proto . |
protoVer | network.tls.version, network.tls.cipher | Si protoVer no está vacío, se analiza para extraer tls_version y tls_cipher , que se renombran como network.tls.version y network.tls.cipher respectivamente. |
solicitud | target.url | Se ha cambiado el nombre de kv.request . |
requestClientApplication | network.http.user_agent | Se ha cambiado el nombre de requestClientApplication . |
requestMethod | network.http.method | Se ha cambiado el nombre de requestMethod . Se ha convertido a mayúsculas. |
resource_id | target.resource.id | Se ha cambiado el nombre de resource_id . |
resource_type_key | target.resource.type | Se ha cambiado el nombre de resource_type_key . |
rt | metadata.event_timestamp | Se analiza para extraer deviceReceiptTime , que se analiza como una fecha y se asigna a metadata.event_timestamp . |
security_result.action | security_result.action | Se ha combinado con el valor del campo _action . |
security_result.severity | security_result.severity | Si sevs es error o warning , asigna el valor HIGH . Si sevs es critical , asigna el valor CRITICAL . Si sevs es medium o notice , asigna el valor MEDIUM . Si sevs es information o info , asigna el valor LOW . |
server.domain | target.hostname, target.asset.hostname | Se ha cambiado el nombre de server.domain . |
server.geo.name | target.location.name | Se ha cambiado el nombre de server.geo.name . |
gravedad | security_result.threat_id | Se ha cambiado el nombre de severity . |
siteid | security_result.detection_fields | Si siteid no está vacío, crea una entrada detection_fields con la clave siteid y el valor siteid . |
sourceServiceName | target.hostname | Se ha cambiado el nombre de kv.sourceServiceName . |
spt | principal.port | Se ha cambiado el nombre de kv.spt . Se ha convertido en un número entero. |
src | principal.ip, principal.asset.ip | Si src no está vacío, se combina con principal.ip y principal.asset.ip . |
srcPort | principal.port | Se ha cambiado el nombre de srcPort . Se ha convertido en un número entero. |
start | security_result.detection_fields, metadata.event_timestamp | Si start no está vacío, crea una entrada detection_fields con la clave event_start_time y el valor start . También se analiza como una fecha y se asigna a metadata.event_timestamp si deviceReceiptTime está vacío. |
successful_logins_last_24h | security_result.detection_fields | Se ha convertido en una cadena. Si no está vacío, crea una entrada detection_fields con la clave successful_logins_last_24h y el valor successful_logins_last_24h . |
suid | target.user.userid | Se ha cambiado el nombre de suid . |
Tiempo | metadata.event_timestamp | Se ha convertido en una cadena. Se ha analizado como una fecha y se ha definido como metadata.event_timestamp . |
type_key | metadata.product_event_type | Se ha cambiado el nombre de type_key . |
url | target.process.file.full_path | Si url.path no está vacío o / , se le asigna el valor target.process.file.full_path . |
url | target.url | Se ha cambiado el nombre de url . Si qstr no está vacío, se añade a url con un separador ? . |
user.email | principal.user.email_addresses | Si user.email no está vacío y coincide con la regex ^.+@.+$ , se combina con principal.user.email_addresses . |
user_agent | network.http.user_agent | Se ha cambiado el nombre de user_agent . |
user_agent.original | network.http.parsed_user_agent | Si user_agent.original no está vacío o * , se convierte en parseduseragent y se le cambia el nombre a network.http.parsed_user_agent . |
user_details | principal.user.email_addresses | Si user_details no está vacío y coincide con la regex ^.+@.+$ , se combina con principal.user.email_addresses . |
user_id | principal.user.userid | Se ha cambiado el nombre de user_id . |
ver | network.tls.version, network.tls.cipher | Si ver no está vacío, se analiza para extraer tls_version y tls_cipher , que se renombran como network.tls.version y network.tls.cipher respectivamente. |
xff | intermediary.ip, intermediary.asset.ip, intermediary.hostname, intermediary.asset.hostname | Si xff no está vacío, se procesa para extraer direcciones IP y nombres de host. Las direcciones IP se combinan en intermediary.ip y intermediary.asset.ip . Los nombres de host son intermediary.hostname y intermediary.asset.hostname . |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.