Recopila registros del WAF de Imperva

Compatible con:

En este documento, se explica cómo recopilar registros del firewall de aplicaciones web (WAF) de Imperva en Google Security Operations a través de una API (extracción) o Amazon S3 (inserción). 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 registros, extrae los campos pertinentes, los normaliza en atributos del UDM y enriquece los datos con información contextual para mejorar el análisis de seguridad.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Tipo de transferencia (API o Amazon S3) que mejor se adapte a tus requisitos de configuración
  • Instancia de Google SecOps.
  • Acceso privilegiado a AWS
  • Acceso con privilegios al WAF de Imperva.

Recopila registros del WAF de Imperva con la API

Configura un usuario de solo lectura para el WAF de Imperva

  1. Accede a la consola de Imperva con una cuenta con privilegios.
  2. Ve a Configuración > Usuarios y roles.
  3. Haz clic en Agregar usuario.
  4. Completa los campos obligatorios:
    • Nombre de usuario: Ingresa un nombre de usuario único.
    • Contraseña: Establece una contraseña segura.
    • Correo electrónico: Proporciona la dirección de correo electrónico del usuario.
    • En la sección Roles, selecciona el rol Lector.
  5. Haz clic en Guardar para crear el usuario con acceso de solo lectura.

Opcional: Configura el usuario de Reader como solo para la API

  1. En la lista Usuarios, ubica el usuario recién creado.
  2. Haz clic en el botón Acciones (tres puntos) junto al nombre del usuario.
  3. Selecciona Set as API-only user.

Genera el ID y la clave de API

  1. En la lista Usuarios, selecciona el usuario recién creado.
  2. Selecciona Configuración y haz clic en Claves de API.
  3. Haz clic en Agregar clave de API.
  4. Completa los campos obligatorios:
    • Nombre: Ingresa un nombre descriptivo para la clave de API.
    • Opcional: Descripción: Proporciona una descripción opcional.
    • En la lista La clave de API vencerá en, selecciona Nunca.
    • Para habilitar la opción, selecciona Estado.
  5. 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.

Configura feeds

Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:

  • Configuración de SIEM > Feeds
  • Centro de contenido > Paquetes de contenido

Configura feeds en Configuración del SIEM > Feeds

Para configurar un feed, sigue estos pasos:

  1. Ve a Configuración del SIEM > Feeds.
  2. Haz clic en Agregar feed nuevo.
  3. En la siguiente página, haz clic en Configurar un solo feed.
  4. En el campo Nombre del feed, ingresa un nombre para el feed, por ejemplo, Registros del WAF de Imperva Incapsula.
  5. Selecciona API de terceros como el Tipo de origen.
  6. Selecciona Imperva como el Tipo de registro.
  7. Haz clic en Siguiente.
  8. Especifica valores para los siguientes parámetros de entrada:
    • Encabezado HTTP de autenticación: Ingresa el ID y la clave de la API de Imperva en dos líneas: apiId:<YOUR_API_ID> y apiKey:<YOUR_API_KEY>.
  9. Haz clic en Siguiente.
  10. Revisa la configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.

Configura feeds desde el Centro de contenido

Especifica valores para los siguientes campos:

  • Encabezado HTTP de autenticación: Ingresa el ID y la clave de la API de Imperva en dos líneas: apiId:<YOUR_API_ID> y apiKey:<YOUR_API_KEY>.

Opciones avanzadas

  • Nombre del feed: Es un valor completado previamente que identifica el feed.
  • Tipo de fuente: Es el método que se usa para recopilar registros en Google SecOps.
  • Espacio de nombres del activo: Es el espacio de nombres asociado con el feed.
  • Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.

Recopila registros del WAF de Imperva con Amazon S3

Configura IAM y S3 de AWS

  1. Crea un bucket de Amazon S3 siguiendo esta guía del usuario: Cómo crear un bucket
  2. Guarda el Nombre y la Región del bucket para usarlos más adelante.
  3. Crea un usuario siguiendo esta guía del usuario: Cómo crear un usuario de IAM.
  4. Selecciona el usuario creado.
  5. Selecciona la pestaña Credenciales de seguridad.
  6. Haz clic en Crear clave de acceso en la sección Claves de acceso.
  7. Selecciona Servicio de terceros como el Caso de uso.
  8. Haz clic en Siguiente.
  9. Opcional: Agrega una etiqueta de descripción.
  10. Haz clic en Crear clave de acceso.
  11. Haz clic en Descargar archivo .csv y guarda la clave de acceso y la clave de acceso secreta para usarlas más adelante.
  12. Haz clic en Listo.
  13. Selecciona la pestaña Permisos.
  14. Haz clic en Agregar permisos en la sección Políticas de permisos.
  15. Selecciona Agregar permisos.
  16. Selecciona Adjuntar políticas directamente.
  17. Busca y selecciona la política AmazonS3FullAccess.
  18. Haz clic en Siguiente.
  19. Haz clic en Agregar permisos.

Configura la conexión de Imperva WAF a Amazon S3

  1. Accede a la consola de Imperva con una cuenta con privilegios.
  2. Ve a Registros > Configuración de registros.
  3. Selecciona Amazon S3.
  4. Completa los campos obligatorios:
    • Clave de acceso
    • Clave secreta
    • Ruta de acceso: Ingresa la ruta de acceso con el siguiente formato: <Amazon S3 bucket name>/<log folder>; por ejemplo: MyBucket/MyIncapsulaLogFolder.
  5. Haz clic en Probar conexión para realizar un ciclo de prueba completo en el que se transfiera un archivo de prueba a la carpeta designada.
  6. Selecciona el formato de los archivos de registro como CEF.
  7. De forma predeterminada, los archivos de registro se comprimen. Establece la opción para no comprimir archivos.

Configura un feed en Google SecOps para transferir registros del WAF de Imperva desde Amazon S3

  1. Ve a SIEM Settings > Feeds.
  2. Haz clic en Agregar nueva.
  3. En el campo Nombre del feed, ingresa un nombre para el feed, por ejemplo, Imperva WAF Logs.
  4. Selecciona Amazon S3 como el Tipo de fuente.
  5. Selecciona Imperva como el Tipo de registro.
  6. Haz clic en Siguiente.
  7. Especifica valores para los siguientes parámetros de entrada:

    • Región: Es la región en la que se encuentra el bucket de Amazon S3.
    • URI de S3: Es el URI del bucket.
      • s3://your-log-bucket-name/
      • Reemplaza your-log-bucket-name por el nombre real del bucket.
    • El URI es un: Selecciona Directorio o Directorio que incluye subdirectorios.
    • Opciones de borrado de la fuente: Selecciona la opción de borrado según tu preferencia.
    • ID de clave de acceso: Es la clave de acceso del usuario con acceso al bucket de S3.
    • Clave de acceso secreta: Es la clave secreta del usuario con acceso al bucket de S3.
    • 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.
  8. Haz clic en Siguiente.

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

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
account_id target.user.userid Es el ID de la cuenta del objeto JSON.
actúa security_result.action Si act es allowed, alert, comienza con REQ_PASSED o comienza con REQ_CACHED, configúralo como ALLOW. Si act es deny, blocked, comienza con REQ_BLOCKED o comienza con REQ_CHALLENGE, configúralo como BLOCK. Si act coincide con la regex (?i)REQ_BAD, se establece en FAIL. De lo contrario, configúralo como UNKNOWN_ACTION.
app network.application_protocol Se cambió el nombre de kv.app. Se convirtió a mayúsculas.
calCountryOrRegion principal.location.country_or_region Se cambió el nombre de calCountryOrRegion.
gato security_result.action_details Si cat comienza con REQ_PASSED o REQ_CACHED, establece action en ALLOW y action_details en una descripción basada en el valor de cat. Si cat comienza con REQ_BAD, establece action en FAIL y action_details en una descripción basada en el valor de cat. Si cat comienza con REQ_BLOCKED o REQ_CHALLENGE, establece action en BLOCK y action_details en una descripción basada en el valor de cat.
cicode principal.location.city Se cambió el nombre de cicode.
classified_client security_result.detection_fields Si classified_client no está vacío, crea una entrada detection_fields nueva con la clave classified_client y el valor classified_client.
client.domain principal.hostname, principal.asset.hostname Se cambió el nombre de client.domain.
client.geo.country_iso_code principal.location.country_or_region Se cambió el nombre de client.geo.country_iso_code.
client.ip principal.ip, principal.asset.ip Se combinó con principal.ip y principal.asset.ip.
cn1 network.http.response_code Se cambió el nombre de cn1. Se convirtió en un número entero.
context_key target.resource.name Se cambió el nombre de context_key.
country principal.location.country_or_region Se cambió el nombre de country.
credentials_leaked security_result.detection_fields Se convirtió en una cadena. Si no está vacío, crea una entrada detection_fields nueva 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 newdetection_fieldsentry with keycs1Labeland valuecs1".
cs1Label security_result.detection_fields Se usa como clave para 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 nueva con la clave cs2Label y el valor cs2.
cs2Label security_result.detection_fields Se usa como clave para la entrada detection_fields creada a partir de cs2.
cs3 security_result.detection_fields Si cs3 no está vacío, - o `, create a newdetection_fieldsentry with keycs3Labeland valuecs3`.
cs3Label security_result.detection_fields Se usa como clave para 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 nueva con la clave cs4Label y el valor cs4.
cs4Label security_result.detection_fields Se usa como clave para 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 nueva con la clave cs5Label y el valor cs5.
cs5Label security_result.detection_fields Se usa como clave para la entrada detection_fields creada a partir de cs5.
cs6 principal.application Se cambió el nombre de cs6.
cs7 principal.location.region_latitude Si cs7Label es latitude, se cambia el nombre a principal.location.region_latitude. Se convirtió a número de punto 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 convirtió a número de punto 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, configúralo como security_result.rule_name y crea una entrada vulnerabilities nueva con el nombre cs9.
Cliente target.user.user_display_name Se cambió el nombre de Customer.
declared_client security_result.detection_fields Si declared_client no está vacío, crea una entrada detection_fields nueva con la clave declared_client y el valor declared_client.
descripción security_result.threat_name Se cambió el nombre de description.
deviceExternalId network.community_id Se cambió el nombre de deviceExternalId.
deviceReceiptTime metadata.event_timestamp Se analiza como una fecha y se establece en metadata.event_timestamp. Si está vacío, se usa log_timestamp o kv.start en su lugar.
dhost target.hostname Se cambió el nombre de kv.dhost.
dproc security_result.category_details Se cambió el nombre de dproc.
dpt target.port Se cambió el nombre de kv.dpt. Se convirtió en un número entero.
DST target.ip, target.asset.ip Si dst no está vacío, se combina en target.ip y target.asset.ip.
dstPort target.port Se cambió el nombre de dstPort. Se convirtió en un número entero.
duser target.user.userid Si duser no coincide con la expresión regular .*?Alert.* y no está vacío, se cambia el nombre a target.user.userid.
end security_result.detection_fields Si end no está vacío, crea una entrada detection_fields nueva con la clave event_end_time y el valor end.
event.id Es el ID del evento del objeto JSON.
event.provider principal.user.user_display_name Se cambió el nombre de event.provider.
failed_logins_last_24h security_result.detection_fields Se convirtió en una cadena. Si no está vacío, crea una entrada detection_fields nueva con la clave failed_logins_last_24h y el valor failed_logins_last_24h.
ID del archivo network.session_id Se cambió el nombre de fileId.
filePermission security_result.detection_fields Si filePermission no está vacío, crea una entrada detection_fields nueva con la clave filePermission y el valor filePermission.
fileType security_result.detection_fields Si fileType no está vacío, crea una entrada detection_fields nueva con la clave fileType y el valor fileType.
Fingerprint security_result.detection_fields Si fingerprint no está vacío, crea una entrada detection_fields nueva con la clave log_imperva_fingerprint y el valor fingerprint.
flexString1 network.http.response_code Se cambió el nombre de kv.flexString1. Se convirtió en un número entero.
http.request.body.bytes network.sent_bytes Se convirtió en un número entero sin signo. Se cambió el nombre de http.request.body.bytes.
http.request.method network.http.method Se cambió el nombre de http.request.method.
imperva.abp.apollo_rule_versions security_result.detection_fields Para cada entrada en imperva.abp.apollo_rule_versions, crea una nueva 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 Para cada entrada en imperva.abp.bot_behaviors, crea una nueva 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 Para cada entrada en imperva.abp.bot_deciding_condition_ids, crea una nueva 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 Para cada entrada en imperva.abp.bot_deciding_condition_names, crea una nueva 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 Para cada entrada en imperva.abp.bot_triggered_condition_ids, crea una nueva 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 Para cada entrada en imperva.abp.bot_triggered_condition_names, crea una nueva 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 Para cada entrada en imperva.abp.bot_violations, crea una nueva 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 cambió 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 nueva 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 nueva 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 nueva con la clave headers_connection y el valor imperva.abp.headers_connection.
imperva.abp.headers_referer network.http.referral_url Se cambió 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 nueva 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, establece security_action en ALLOW y severity en INFORMATIONAL. Si imperva.abp.monitor_action coincide con la regex (?i)captcha o (?i)block, establece security_action en BLOCK.
imperva.abp.pid principal.process.pid Se cambió 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 nueva 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 nueva 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 nueva 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 nueva 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 nueva 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 nueva con la clave selector_derived_id y el valor imperva.abp.selector_derived_id.
imperva.abp.tls_fingerprint security_result.description Se cambió el nombre de imperva.abp.tls_fingerprint.
imperva.abp.token_id target.resource.product_object_id Se cambió 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 nueva con la clave zuid y el valor imperva.abp.zuid.
imperva.additional_factors additional.fields Para cada entrada en imperva.additional_factors, crea una nueva 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 nueva 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 el 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 nueva 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 el valor de la entrada detection_fields creada a partir de imperva.audit_trail.event_context.
imperva.country principal.location.country_or_region Se cambió 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 nueva con la clave declared_client y el valor imperva.declared_client.
imperva.device_reputation additional.fields Para cada entrada en imperva.device_reputation, crea una nueva 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 nueva con la clave domain_risk y el valor imperva.domain_risk.
imperva.failed_logins_last_24h security_result.detection_fields Se convirtió en una cadena. Si no está vacío, crea una entrada detection_fields nueva 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 nueva con la clave log_imperva_fingerprint y el valor imperva.fingerprint.
imperva.ids.account_id metadata.product_log_id Se cambió el nombre de imperva.ids.account_id.
imperva.ids.account_name metadata.product_event_type Se cambió 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 nueva 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 nueva con la clave site_name y el valor imperva.ids.site_name.
imperva.referrer network.http.referral_url Se cambió el nombre de imperva.referrer.
imperva.request_session_id network.session_id Se cambió 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 nueva con la clave request_user y el valor imperva.request_user.
imperva.risk_level security_result.severity_details Se cambió el nombre de imperva.risk_level.
imperva.risk_reason security_result.description Se cambió 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 nueva con la clave significant_domain_name y el valor imperva.significant_domain_name.
imperva.violated_directives security_result.detection_fields Para cada entrada en imperva.violated_directives, crea una nueva entrada detection_fields con la clave violated_directives y el valor igual a la entrada.
en network.received_bytes Se cambió el nombre de in. Se convirtió en un número entero sin signo.
log_timestamp metadata.event_timestamp Si deviceReceiptTime está vacío y kv.start está vacío, se establece en 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 establece en metadata.description.
postbody security_result.detection_fields Si postbody no está vacío, crea una entrada detection_fields nueva con la clave post_body_info y el valor postbody.
protocolo network.application_protocol Se cambió 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 luego se cambian de nombre a network.tls.version y network.tls.cipher, respectivamente.
solicitud target.url Se cambió el nombre de kv.request.
requestClientApplication network.http.user_agent Se cambió el nombre de requestClientApplication.
requestMethod network.http.method Se cambió el nombre de requestMethod. Se convirtió a mayúsculas.
resource_id target.resource.id Se cambió el nombre de resource_id.
resource_type_key target.resource.type Se cambió el nombre de resource_type_key.
rt metadata.event_timestamp Se analizó para extraer deviceReceiptTime, que luego se analizó como una fecha y se estableció en metadata.event_timestamp.
security_result.action security_result.action Se combina con el valor del campo _action.
security_result.severity security_result.severity Si sevs es error o warning, configúralo como HIGH. Si sevs es critical, configúralo como CRITICAL. Si sevs es medium o notice, configúralo como MEDIUM. Si sevs es information o info, configúralo como LOW.
server.domain target.hostname, target.asset.hostname Se cambió el nombre de server.domain.
server.geo.name target.location.name Se cambió el nombre de server.geo.name.
gravedad, security_result.threat_id Se cambió el nombre de severity.
siteid security_result.detection_fields Si siteid no está vacío, crea una entrada detection_fields nueva con la clave siteid y el valor siteid.
sourceServiceName target.hostname Se cambió el nombre de kv.sourceServiceName.
spt principal.port Se cambió el nombre de kv.spt. Se convirtió en un número entero.
src principal.ip, principal.asset.ip Si src no está vacío, se combina en principal.ip y principal.asset.ip.
srcPort principal.port Se cambió el nombre de srcPort. Se convirtió en un número entero.
start security_result.detection_fields, metadata.event_timestamp Si start no está vacío, crea una entrada detection_fields nueva con la clave event_start_time y el valor start. También se analiza como una fecha y se establece en metadata.event_timestamp si deviceReceiptTime está vacío.
successful_logins_last_24h security_result.detection_fields Se convirtió en una cadena. Si no está vacío, crea una entrada detection_fields nueva con la clave successful_logins_last_24h y el valor successful_logins_last_24h.
suid target.user.userid Se cambió el nombre de suid.
hora metadata.event_timestamp Se convirtió en una cadena. Se analiza como una fecha y se establece en metadata.event_timestamp.
type_key metadata.product_event_type Se cambió el nombre de type_key.
url target.process.file.full_path Si url.path no está vacío o es /, se establece en target.process.file.full_path.
url target.url Se cambió el nombre de url. Si qstr no está vacío, se agrega a url con un separador ?.
user.email principal.user.email_addresses Si user.email no está vacío y coincide con la expresión regular ^.+@.+$, se combina en principal.user.email_addresses.
user_agent network.http.user_agent Se cambió el nombre de user_agent.
user_agent.original network.http.parsed_user_agent Si user_agent.original no está vacío o es *, se convierte en parseduseragent y se 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 expresión regular ^.+@.+$, se combina en principal.user.email_addresses.
user_id principal.user.userid Se cambió 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 luego se cambian de nombre a 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 se configuran como intermediary.hostname y intermediary.asset.hostname.

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