Eliminación de datos de la base de datos Ariel
La herramienta ACP (Ariel Copy) lee a través de una base de datos de Ariel, aplica criterios y, a continuación, vuelve a grabar los datos filtrados en otra ubicación. Esta herramienta es útil para el cumplimiento de GDPR (General Data Protection Regulation). Por ejemplo, desea eliminar todos los datos marcados con un nombre de usuario o dirección IP de origen determinado.
Utilización
Proporcione la herramienta con la base de datos (sucesos | flujos), las horas de inicio y finalización que deben filtrarse, la combinación de consulta AQL (-q) o la combinación de creador/valor (-k/-p) de claves a aplicar, el usuario que necesita ejecutarlo (-u) y el directorio de destino (-d).
La herramienta ACP lee la base de datos de Ariel para los tiempos especificados, aplica el filtro y coloca todos los registros que coinciden con el filtro en el directorio de destino especificado.
[root@m5arch06 templates]# /opt/qradar/bin/runjava.sh com.q1labs.ariel.io.ACP
data base name is required
Configured data bases:
flows
hc
simarc
events
simevent
usage: ACP -n events -d /store/new_ariel -b "2013/11/21 1:00:00" -e
"2013/11/21 4:00:00"
ACP -n events -d /store/new_ariel -b "2013/11/21 1:00:00" -e "2013/11/21
4:00:00" -q "username is not null and sourceip = '127.0.0.1'" -u admin
Options:
-n,--name data base name, for example -n events
-b,--begintime begin time, for example -t "2018/08/28 09:04",
optional, by default current system time
-e,--endtime end time, for example -t "2018/08/28 10:04",
optional, by default current system time
-d,--destination Destination directory i.e. /store/filtered_ariel/
-h,--help print this message
-k,--keycreator class for IKeyCreator
-p,--param optional parameter for IKeyCreator
-q,--query AQL 'where clause' to copy records
-u,--user username (default=admin)
-v,--testedvalue value to compare createKey with
[root@m5arch06 templates]#
Imprimación en la estructura de archivos de Ariel
Antes de ir más lejos, revisemos cómo los datos de Ariel son se ha establecido en el disco. Ariel es una base de datos basada en series temporales. Ariel no sabe qué datos hay en disco hasta que lo busca. Puede copiar datos de Ariel entre sistemas sin ninguna consecuencia o la base de datos de Ariel sabiendo de ello. Los datos de Ariel se almacenan en registros minuto a minuto en un formato similar al ejemplo siguiente:
/store/ariel/[events | flows ]/[records | payloads | md]/YYYY/MM/dd/hh/Acontecimientos o flujos es el nombre de la base de datos de Ariel
- registros es el registro de sucesos normalizado
- cargas útiles es la carga útil bruta asociada a los registros
- md son las firmas hash o los resúmenes de mensajes (opcionalmente cifrados HMAC) de los datos de Ariel
En general, los archivos de datos de Ariel tienen la siguiente estructura:
identifier~Minute#_File#~UUID~UUID~RetentionBucketNumber
- events~5_0~35c5c6bddcb24578~ad5711e8c1337858~0
Este registro representa el registro de sucesos normalizado para el minuto 5th y el grupo de retención de 0th (grupo predeterminado).
- SourceIP~5_0~35c5c6bddcb24578~ad5711e8c1337858~0
El índice sourceIP para el 5th minuto y el 0th grupo de retención (grupo predeterminado).
En el directorio payloads , veremos archivos como los siguientes:
payload_events~5_0~35c5c6bddcb24578~ad5711e8c1337858~0Las cargas de pago en bruto para el minuto 5th y el grupo de retención de 0th (grupo predeterminado).
En el directorio md , verá archivos como este archivo:
- events~5_0~35c5c6bddcb24578~ad5711e8c1337858~0.HMACSHA512
La firma HMAC-SHA512 para los registros de sucesos normalizados para el grupo de retención de 5th minuto y 0th .
- payload_events~5_0~35c5c6bddcb24578~ad5711e8c1337858~0.HMACSHA512
La firma HMAC-SHA512 para las cargas de pago en bruto para el minuto 5th y el grupo de retención de 0th .
Nota: La herramienta ACP crea un directorio denominado hashes en lugar de md. Si tiene el hash de archivos o el hash de integridad habilitado, tenga cuidado con este problema.
Ejemplo: eliminación de sucesos que tienen raíz como nombre de usuario
En este ejemplo, queremos eliminar todos los sucesos que tienen el nombre de usuario root de la base de datos de sucesos de Ariel durante un periodo de tiempo entre las 09:00 y las 10:00.
- En primer lugar, buscamos y mostramos lo que queremos eliminar.La siguiente captura de pantalla muestra todos los sucesos:
Figura 1. Todos los eventos 
- A continuación, ejecute la herramienta ACP:
[root@m5arch06 ~]# /opt/qradar/bin/runjava.sh com.q1labs.ariel.io.ACP -n events -b "2018/08/28 09:00:00" -e "2018/08/28 10:00:00" -q "username not like 'root'" -u admin -d /store/new_ariel AQL criteria: [username not like 'root'] User: admin Copying: [events] to /store/new_ariel Timeline from Tue Aug 28 09:00:00 NDT 2018 to Tue Aug 28 09:59:00 NDT 2018 Trying to copy dir: /store/ariel/events/records/2018/8/28/9[18-08-28,09:00:00] Reader started ... Processing interval /store/ariel/events/records/2018/8/28/9/events~59_0~13e6848042143d0~92f58da705b4b452~0[18-08-28,09:59:00] Processing interval /store/ariel/events/records/2018/8/28/9/events~58_0~23b0a632f1df4d10~bbe50149b34453d8~0[18-08-28,09:58:00] Processing interval /store/ariel/events/records/2018/8/28/9/events~57_0~745684fd0cca424c~a9857807a2952671~0[18-08-28,09:57:00] Processing interval /store/ariel/events/records/2018/8/28/9/events~56_0~89c02507d81940c3~a54edd654c2ce796~0[18-08-28,09:56:00] …. … ... Processing interval /store/ariel/events/records/2018/8/28/9/events~4_0~2c48501471734615~b8ca3cb590a16e05~0[18-08-28,09:04:00] Processing interval /store/ariel/events/records/2018/8/28/9/events~3_0~3e369b679aa64306~a97b95e8528a1a9b~0[18-08-28,09:03:00] Processing interval /store/ariel/events/records/2018/8/28/9/events~2_0~4e370db759d44bd2~81f695b0164b5a66~0[18-08-28,09:02:00] Processing interval /store/ariel/events/records/2018/8/28/9/events~1_0~cdbe9e25b9ee4dbd~982ef0da1ab7e85d~0[18-08-28,09:01:00] Processing interval /store/ariel/events/records/2018/8/28/9/events~0_0~ecd2e4bf6bbb425a~b2acfe04fda202a6~0[18-08-28,09:00:00] Reader stopped. Written 9507759 records, Skipped 2654 records Completed copying dir: /store/ariel/events/records/2018/8/28/9[18-08-28,09:00:00] [root@m5arch06 ~]#La siguiente captura de pantalla muestra todos los sucesos sin el nombre de usuario de Raíz :Figura 2. Todos los sucesos con nombre de usuario root
La siguiente captura de pantalla muestra todos los sucesos sin el nombre de usuario de Raíz .Figura 3. Todos los sucesos sin nombre de usuario root 
Como se ha explicado anteriormente, hemos eliminado todos los sucesos de 09:00 a 10:00 que coincidían con el username de root. Por lo tanto, con la herramienta ACP, especificamos en nuestros criterios que el username NO era raíz.
Además, hemos colocado los registros filtrados en el directorio /store/new_Ariel .
- Sustituya los datos de Ariel antiguos por los nuevos datos de Ariel.
Buscando en el directorio /store/new_ariel (el destino que elegimos en este ejemplo), podemos ver que hemos procesado una hora de datos:
[root@m5arch06 new_ariel]# find /store/new_ariel -maxdepth 6 /store/new_ariel /store/new_ariel/events /store/new_ariel/events/hashes /store/new_ariel/events/hashes/2018 /store/new_ariel/events/hashes/2018/8 /store/new_ariel/events/hashes/2018/8/28 /store/new_ariel/events/hashes/2018/8/28/9 /store/new_ariel/events/records /store/new_ariel/events/records/2018 /store/new_ariel/events/records/2018/8 /store/new_ariel/events/records/2018/8/28 /store/new_ariel/events/records/2018/8/28/9 /store/new_ariel/events/payloads /store/new_ariel/events/payloads/2018 /store/new_ariel/events/payloads/2018/8 /store/new_ariel/events/payloads/2018/8/28 /store/new_ariel/events/payloads/2018/8/28/9 [root@m5arch06 new_ariel]#En este ejemplo, los datos se han elegido para alinearse en los límites de hora para facilitar el archivado y las copias (se puede utilizar el mandatomv ). Si los datos no se alinean en los límites de hora, deberá migrar el archivo por archivo.
- Archive los datos antiguos del directorio ariel en el directorio ariel_archive escribiendo el mandato siguiente:
[root@m5arch06 store]# mv /store/ariel/events/records/2018/8/28/9 /store/ariel_archive/events/records/2018/8/28/ [root@m5arch06 store]# mv /store/ariel/events/payloads/2018/8/28/9 /store/ariel_archive/events/payloads/2018/8/28/ [root@m5arch06 store]# mv /store/ariel/events/md/2018/8/28/9 /store/ariel_archive/events/hashes/2018/8/28/ [root@m5arch06 store]#En este punto, esa hora de datos no se puede buscar. La base de datos de Ariel no podrá encontrarla porque los archivos ya no están en la base de datos de Ariel.
- Copie (o mueva) los nuevos datos del directorio new_ariel al directorio ariel escribiendo el mandato siguiente:
[root@m5arch06 store]# cp -a /store/new_ariel/events/records/2018/8/28/9 /store/ariel/events/records/2018/8/28 [root@m5arch06 store]# cp -a /store/new_ariel/events/payloads/2018/8/28/9 /store/ariel/events/payloads/2018/8/28 [root@m5arch06 store]# cp -a /store/new_ariel/events/hashes/2018/8/28/9 /store/ariel/events/md/2018/8/28 [root@m5arch06 store]#Nota: Hemos cambiado de hashes a md. Consulte la nota en la sección de cartilla de la estructura de archivos Ariel.Debido a que ejecutamos las búsquedas en contra de estos datos antes de empezar, eliminemos esas búsquedas para que no tengamos la memoria caché del cursor cuando ejecutamos búsquedas idénticas. Elimine las búsquedas de Gestionar resultados de búsqueda de la pestaña Actividad de registro .
- Ejecute las búsquedas de todos los datos de 09:00 a 10:00.
Figura 4. Nueva búsqueda
Nota: Los resultados totales son los mismos que el nombre de usuario root "no" de antes de ejecutar la herramienta ACP. - Busque el nombre de usuario root.
Figura 5. Nueva búsqueda de nombre de usuario root
Nota: Algunos de mis índices no se han regenerado. Los índices basados en la propiedad minuto a minuto se crean, pero los superíndices nunca se generan y la búsqueda de texto libre /Lucene tampoco se genera. (cuestión conocida). ¡Por suerte para nosotros, tenemos la herramienta /opt/qradar/bin/ariel_offline_indexer.sh !
Uso para el script de indexador fuera de línea
Utilice /opt/qradar/bin/ariel_offline_indexer.sh para generar los superíndices.
Usage is:
[root@m5arch06 store]# /opt/qradar/bin/ariel_offline_indexer.sh --help
usage: options
-R,--repair re-build corrupted super indices
-d,--duration time duration to look files for in minutes, for
example -d 5
-n,--name ariel data base name, for example -n events
-t,--endtime end time, for example -t "2018/08/28 11:00",
optional, by default current system time
-F,--renamefrom rename from (internal use)
-L,--light load minimal QRadar frameworks
-T,--renameto rename to (internal use)
-V,--validate validate super indices
-a,--auto backfill all active indexes
-b,--batchmode run in batch mode with options in a file
-f,--fts create free text search indices
-h,--help print this message
-k,--key property java class name
-l,--list list all enabled indices from the configuration
-p,--param optional paramiter for property (key creator
construction)
-r,--remove remove indices for a property
-s,--superindices create super indices from the minute indices
-v,--verbose verbose (optional, default = false)
-w,--threads maximum number of threads to produce minute indices
if requested, default is 48
[root@m5arch06 store]#
[root@m5arch06 store]# /opt/qradar/bin/ariel_offline_indexer.sh -n events -t "2018/08/28 10:00" -d 60 -f -s
2018/08/28 11:04 Running command [-n, events, -t, 2018/08/28 10:00, -d, 60, -f, -s] ...
Trying to index dir: /store/ariel/events/records/2018/8/28/9/lucene[18-08-28,09:00:00]
Completed indexing dir: /store/ariel/events/records/2018/8/28/9/lucene[18-08-28,09:00:00]
All done in 0:02:39.840
[root@m5arch06 store]#
Ahora nuestro índice de texto libre y súper índices están poblados.