Recopila registros de WAF de Imperva
En este documento, se explica cómo recopilar registros del firewall de aplicaciones web (WAF) de Imperva en Google Security Operations con una API (extracción) o Amazon S3 (envío). 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 campos relevantes, los normaliza en atributos de la UDM y enriquece los datos con información contextual para mejorar el análisis de seguridad.
Antes de comenzar
- Selecciona el tipo de transferencia (API o Amazon S3) que mejor se adapte a tus requisitos de configuración.
- Asegúrate de tener una instancia de Google SecOps.
- Asegúrate de tener acceso con privilegios a AWS.
- Asegúrate de tener acceso con privilegios al WAF de Imperva.
Recopila registros de la WAF de Imperva con la API
Configura un usuario de solo lectura para la WAF de Imperva
- Accede a la consola de Imperva con una cuenta con privilegios.
- Ve a Configuración > Usuarios y roles.
- Haz clic en Agregar usuario.
- 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.
- Haz clic en Guardar para crear el usuario con acceso de solo lectura.
Opcional: Configura el usuario de Reader como solo API
- En la lista Usuarios, busca el usuario recién creado.
- Haz clic en el botón Acciones (tres puntos) junto al nombre del usuario.
- Selecciona el usuario Set as API-only.
Genera 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 Agregar clave de API.
- 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 habilitarlo, selecciona Estado.
- Haz clic en Guardar.
El sistema muestra el ID y la clave de API. Copia y guarda estas credenciales, ya que no se volverán a mostrar.
Configura un feed en Google SecOps para transferir registros de WAF de Imperva a través de una API de terceros
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar nueva.
- En el campo Nombre del feed, ingresa un nombre para el feed, por ejemplo, Registros de WAF de Imperva.
- Selecciona API de terceros como el Tipo de origen.
- Selecciona Imperva como el Tipo de registro.
- Haz clic en Siguiente.
- 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>
yapiKey:<YOUR_API_KEY>
. - Espacio de nombres del recurso: Es el espacio de nombres del recurso.
- Etiquetas de transferencia: Es la etiqueta que se aplica a los eventos de este feed.
- Encabezado HTTP de autenticación: Ingresa el ID y la clave de la API de Imperva en dos líneas:
- Haz clic en Siguiente.
- Revisa la configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Recopila registros de WAF de Imperva con Amazon S3
Configura AWS IAM y S3
- Crea un bucket de Amazon S3 siguiendo esta guía del usuario: Cómo crear un bucket
- Guarda el Nombre y la Región del bucket para usarlos más adelante.
- Crea un usuario siguiendo esta guía del usuario: Cómo crear un usuario de IAM.
- Selecciona el Usuario creado.
- Selecciona la pestaña Credenciales de seguridad.
- Haz clic en Crear clave de acceso en la sección Claves de acceso.
- Selecciona Servicio de terceros como Caso de uso.
- Haz clic en Siguiente.
- Opcional: Agrega 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 tarde.
- Haz clic en Listo.
- Selecciona la pestaña Permisos.
- Haz clic en Agregar permisos en la sección Políticas de permisos.
- Selecciona Agregar permisos.
- Selecciona Adjuntar políticas directamente.
- Busca y selecciona la política AmazonS3FullAccess.
- Haz clic en Siguiente.
- Haz clic en Agregar permisos.
Configura la conexión de Amazon S3 de Imperva WAF
- Accede a la consola de Imperva con una cuenta con privilegios.
- Ve a Registros > Configuración de registros.
- Selecciona Amazon S3.
- 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
.
- 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.
- Selecciona CEF como el formato de los archivos de registro.
- 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 de WAF de Imperva desde Amazon S3
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar nueva.
- En el campo Nombre del feed, ingresa un nombre para el feed, por ejemplo,
Imperva WAF Logs
. - Selecciona Amazon S3 como el Tipo de fuente.
- Selecciona Imperva como el Tipo de registro.
- Haz clic en Siguiente.
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 eliminación de fuentes: Selecciona la opción de eliminación según tus preferencias.
- 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.
Haz clic en Siguiente.
Revisa la configuración de tu nuevo 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 | El ID de la cuenta del objeto JSON |
actuar | 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 , configúralo como FAIL . De lo contrario, configúralo como UNKNOWN_ACTION . |
app | network.application_protocol | Se cambió el nombre de kv.app . Se convirtió en 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 combinaron en principal.ip y principal.asset.ip . |
cn1 | network.http.response_code | Se cambió el nombre de cn1 . Se convirtió en 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 new detection_fieldsentry with key cs1Labeland value cs1". |
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 nueva entrada detection_fields 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 new detection_fieldsentry with key cs3Labeland value cs3". |
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 nueva entrada detection_fields 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 nueva entrada detection_fields 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 , cámbialo a principal.location.region_latitude . Se convirtió en 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 , cámbialo a principal.location.region_longitude . Se convirtió en 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 nueva entrada vulnerabilities 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 . |
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 número entero. |
DST | target.ip, target.asset.ip | Si dst no está vacío, se fusiona en target.ip y target.asset.ip . |
dstPort | target.port | Se cambió el nombre de dstPort . Se convirtió en número entero. |
ducha | target.user.userid | Si duser no coincide con la regex .*?Alert.* y no está vacío, cámbiale el nombre a target.user.userid . |
end | security_result.detection_fields | Si end no está vacío, crea una nueva 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 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 nueva 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 nueva con la clave fileType y el valor fileType . |
Fingerprint | security_result.detection_fields | Si fingerprint no está vacío, crea una nueva entrada detection_fields 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 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 entrada detection_fields nueva 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 entrada detection_fields nueva 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 entrada detection_fields nueva 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 entrada detection_fields nueva 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 nueva 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 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 nueva entrada detection_fields 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 nueva 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 , 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 nueva 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 nueva 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 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 nueva 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 nueva 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 nueva 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 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 nueva entrada additional.fields con la clave zuid y el valor imperva.abp.zuid . |
imperva.additional_factors | additional.fields | Para cada entrada en imperva.additional_factors , crea una entrada additional.fields nueva 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 nueva 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 para 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 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 de imperva.device_reputation , crea una entrada additional.fields nueva 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 nueva entrada detection_fields 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 nueva entrada detection_fields 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 nueva entrada additional.fields 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 nueva entrada detection_fields 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 entrada detection_fields nueva 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 y kv.start están vacíos, configúralos como 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, configúralo como metadata.description . |
cuerpo de la publicación | 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ó en 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 analiza para extraer deviceReceiptTime , que luego se analiza como una fecha y se establece en metadata.event_timestamp . |
security_result.action | security_result.action | Se fusiona 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 número entero. |
src | principal.ip, principal.asset.ip | Si src no está vacío, se fusiona en principal.ip y principal.asset.ip . |
srcPort | principal.port | Se cambió el nombre de srcPort . Se convirtió en número entero. |
start | security_result.detection_fields, metadata.event_timestamp | Si start no está vacío, crea una nueva entrada detection_fields 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 / , configúralo como 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 regex ^.+@.+$ , se fusiona 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 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 fusiona 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 establecen en intermediary.hostname y intermediary.asset.hostname . |
Cambios
2025-01-16
Mejora:
- Se asignó
log.imperva.audit_trail.resource_name
atarget.resource.name
.
2024-11-14
Mejora:
- Se agregó compatibilidad para controlar el nuevo formato de registro.
2024-10-10
Mejora:
- Se asignó
metadata.vendor_name
aImperva Cloud WAF
.
2024-10-03
Mejora:
- Se asignó
cn1
anetwork.http.response_code
.
2024-09-05
Mejora:
- Se agregó compatibilidad para controlar el nuevo formato de registro.
2024-08-27
Mejora:
- Se cambió la asignación de
log.imperva.ids.account_name
demetadata.product_event_type
atarget.user.user_display_name
.
2024-06-25
Mejora:
- Se agregó compatibilidad para controlar registros JSON.
2024-04-02
Mejora:
- Se asignó
log.imperva.request_user
asecurity_result.detection_fields
. - Se asignó
log.imperva.classified_client
asecurity_result.detection_fields
.
2024-02-26
Mejora:
- Se asignó
log.imperva.request_session_id
anetwork.session_id
. - Se asignaron
log.imperva.successful_logins_last_24h
,log.imperva.path
ylog.imperva.failed_logins_last_24h
asecurity_result.detection_fields
. - Se asignó
log.imperva.risk_reason
asecurity_result.severity_details
ysecurity_result.severity
. - Se asignaron
additional_factor
,log.imperva.device_reputation
ylog.imperva.credentials_leaked
aadditional.fields
. - Se asignó
log.imperva.fingerprint
asecurity_result.description
. - Se asignó
log.imperva.referrer
anetwork.http.referral_url
. - Se asignó
log.imperva.classified_client
aprincipal.process.file.full_path
2024-02-06
Mejora:
- Se inicializaron
accept_encoding_label
,site_name_label
,random_id_label
,request_type_label
,accept_language_label
,headers_connection_label
,zuid_labels
,site_id_label
,policy_id
,policy_name
,selector_derived_id
,hsig
,selector
,detection_fields_event_action
,detection_fields_event_context
,detection_fields_significant_domain_name
ydetection_fields_domain_risk
a nulo dentro defor loop
para json_array.
2024-01-27
Mejora:
- Se asignó
description
asecurity_result.threat_name
. - Se asignó
severity
asecurity_result.threat_id
. - Se asignaron
kv.src
,src
ylog.client.ip
aprincipal.asset.ip
. - Se asignaron
kv.dst
ydst
atarget.asset.ip
. - Se asignó
kv.dvc
aabout.asset.ip
. - Se asignaron
kv.cs9
ycs9
asecurity_result.rule_name
. - Se asignaron
kv.fileType
yfileType
asecurity_result.rule_type
. - Se asignó
dst
atarget.asset.ip
. - Se asignaron
xff
yforwardedIp
aintermediary.asset.ip
. - Se asignó
log.client.domain
aprincipal.asset.hostname
. - Se asignó
log.server.domain
atarget.asset.hostname
.
2023-10-16
Corrección de errores:
- Se inicializaron
security_result
ysecurity_action
como nulos dentro defor loop
para json_array. - Se agregó una verificación nula antes de combinar
security_action
consecurity_result.action
. - Cuando
log.imperva.abp.monitor_action
seablock
, asignasecurity_action
aBLOCK
.
2023-09-26
Mejora:
- Se asignaron
significant_domain_name
,domain_risk
yviolated_directives
asecurity_result.detection_fields
en los registros del CSP.
2023-08-07
Corrección de errores:
- Se agregó compatibilidad para analizar el array de registros JSON.
- Se agregó un patrón de Grok para verificar el nombre de host antes de asignar
xff
aintermediary.hostname
.
16-06-2023
Corrección de errores:
- Se asignó
imperva.audit_trail.event_action
asecurity_result.detection_fields
. - Se asignó
imperva.audit_trail.event_action_description
asecurity_result.detection_fields
. - Se asignó
imperva.audit_trail.event_context
asecurity_result.detection_fields
. - Se asignó
imperva.audit_trail.event_context_description
asecurity_result.detection_fields
. - Se corrigieron problemas de análisis de marcas de tiempo.
- Se descartaron los registros con formato incorrecto.
16-06-2023
Corrección de errores:
- Se asignó
imperva.audit_trail.event_action
asecurity_result.detection_fields
. - Se asignó
imperva.audit_trail.event_action_description
asecurity_result.detection_fields
. - Se asignó
imperva.audit_trail.event_context
asecurity_result.detection_fields
. - Se asignó
imperva.audit_trail.event_context_description
asecurity_result.detection_fields
. - Se corrigieron problemas de análisis de marcas de tiempo.
- Se descartaron los registros con formato incorrecto.
2023-06-08
Mejora:
- Se asignó
imperva.abp.apollo_rule_versions
asecurity_result.detection_fields
. - Se asignó
imperva.abp.bot_violations
asecurity_result.detection_fields
. - Se asignó
imperva.abp.bot_behaviors
asecurity_result.detection_fields
. - Se asignó
imperva.abp.bot_deciding_condition_ids
asecurity_result.detection_fields
. - Se asignó
imperva.abp.bot_deciding_condition_names
asecurity_result.detection_fields
. - Se asignó
imperva.abp.bot_triggered_condition_ids
asecurity_result.detection_fields
. - Se asignó
imperva.abp.bot_triggered_condition_names
asecurity_result.detection_fields
.
26-04-2023
Mejora:
- Se definió el campo
kv.src
en statedata. - Se asignó
kvdata.ver
anetwork.tls.version
y network.tls.cipher. - Se asignó
kvdata.sip
aprincipal.ip
. - Se asignó
kvdata.spt
aprincipal.port
. - Se asignó
kvdata.act
a "security_result.action_details". - Se asignó
kvdata.app
a "network.application_protocol". - Se asignó
kvdata.requestMethod
anetwork.http.method
.
2023-02-04
Mejora:
- Para el campo
deviceReceiptTime
, se agregó rebase = true enevent.timestamp
.
2023-01-19
Mejora:
- Se agregó compatibilidad con los registros del analizador agregando las siguientes asignaciones.
- Se asignó
event.provider
aprincipal.user.userid
. - Se asignó
client.ip
aprincipal.ip
. - Se asignó
client.domain
aprincipal.hostname
. - Se asignó
imperva.abp.request_type
aprincipal.labels
. - Se asignó
imperva.abp.pid
aprincipal.process.pid
. - Se asignó
client.geo.country_iso_code
aprincipal.location.country_or_region
. - Se asignó
server.domain
atarget.hostname
. - Se asignó
server.geo.name
atarget.location.name
. - Se asignó
url.path
atarget.process.file.full_path
. - Se asignó
imperva.abp.customer_request_id
atarget.resource.id
. - Se asignó
imperva.abp.token_id
atarget.resource.product_object_id
. - Se asignó
imperva.abp.random_id
aadditional.fields
. - Se asignó
http.request.method
anetwork.http.method
. - Se asignó
user_agent.original
anetwork.http.parsed_user_agent
. - Se asignó
imperva.abp.headers_referer
anetwork.http.referral_url
. - Se asignó
imperva.abp.zuid
aadditional.fields
. - Se asignó
imperva.ids.site_name
aadditional.fields
. - Se asignó
imperva.ids.site_id
aadditional.fields
. - Se asignó
imperva.ids.account_name
ametadata.product_event_type
. - Se asignó
imperva.ids.account_id
ametadata.product_log_id
. - Se asignó
imperva.abp.headers_accept_encoding
asecurity_result.detection_fields
. - Se asignó
imperva.abp.headers_accept_language
asecurity_result.detection_fields
. - Se asignó
imperva.abp.headers_connection
asecurity_result.detection_fields
- Se asignó
imperva.abp.policy_id
asecurity_result.detection_fields
. - Se asignó
imperva.abp.policy_name
asecurity_result.detection_fields
. - Se asignó
imperva.abp.selector_derived_id
asecurity_result.detection_fields
. - Se asignó
imperva.abp.monitor_action
asecurity_result.action
.
2022-06-28
Mejora:
- Se asignó vendor.name = Imperva y product.name = Firewall de aplicación web para todos los registros
- Se cambió
metadata.event_type
dondesrc
esDistributed
deGENERIC_EVENT
aUSER_UNCATEGORIZED
- Se cambió
metadata.event_type
porUSER_UNCATEGORIZED
aUSER_STATS
2022-06-20
- Se modificó el patrón de Grok para el campo
rt
. - Se corrigieron errores y se realizaron mejoras en security_result.action.
- REQ_PASSED: Si la solicitud se enrutó al servidor web del sitio (security_result.action = "ALLOW").
- REQ_CACHED_X: Si se devolvió una respuesta de la caché del centro de datos (security_result.action = "ALLOW").
- REQ_BAD_X: Si se produjo un error de protocolo o de red (security_result.action = "FAIL").
- REQ_CHALLENGE_X: Si se devolvió un desafío al cliente (security_result.action = "BLOCK").
- REQ_BLOCKED_X: Si la solicitud se bloqueó (security_result.action = "BLOCK").
2022-06-14
Corrección de errores:
- Se agregó gsub y se modificó el filtro kv para evitar la asignación incorrecta de los campos "cs1Label", "cs2Label" y "cs3Label" asignados al campo de la AUA "security_result.detection_fields".
2022-05-26
Corrección de errores:
- Se quitaron el nombre de clave y el carácter de dos puntos del valor de los campos de detección.
2022-05-10
Mejora:
- Asigna los siguientes campos:
- 'cs1', 'cs2', 'cs3', 'cs4', 'cs5', 'fileType', 'filePermission' a 'security_result.detection_fields'.
- 'cs7' a 'principal.location.region_latitude'.
- De 'cs8' a 'principal.location.region_longitude'.
- 'cn1' y 'cn2' a 'security_result.detection_fields' para los registros en formato CEF.
- "act" a "security_result.action" y "security_result.action_details" para los registros en formato CEF.
- "app" a "network.application_protocol" para los registros en formato CEF.
- "requestClientApplication" a "network.http.user_agent" para los registros en formato CEF.
- De "dvc" a "about.ip" para los registros en formato CEF.
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.