Suppression de données de la base de données Ariel
L'outil ACP (Ariel Copy) lit une base de données Ariel, applique des critères, puis réécrit les données filtrées à un autre endroit. Cet outil est utile pour la conformité au RGPD. Par exemple, vous souhaitez retirer toutes les données repérées avec un nom d'utilisateur spécifique ou une adresse IP source particulière.
Utilisation
Fournissez à l'outil la base de données (events | flows), les heures de début et de fin qui doivent être filtrées, la requête AQL (-q) ou la combinaison créateur de clé/valeur (-k/-p) à appliquer, l'utilisateur qui doit l'exécuter (-u) et le répertoire de destination (-d).
L'outil ACP parcourt la base de données Ariel en quête des heures spécifiées, applique le filtre et place tous les enregistrements correspondant au filtre dans le répertoire de destination spécifié.
[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]#
Introduction à la structure de fichier Ariel
Avant d'aller plus loin, voyons comment les données Ariel sont disposées sur le disque. Ariel est une base de données basée sur des séries chronologiques. Ariel ne sait pas quelles données sont sur le disque tant qu'il ne le recherche pas. Vous pouvez copier des données Ariel entre des systèmes sans aucune conséquence et sans que la base de données Ariel en ait connaissance. Les données Ariel sont stockées dans des enregistrements minute par minute, dans un format similaire à l'exemple suivant :
/store/ariel/[events | flows ]/[records | payloads | md]/YYYY/MM/dd/hh/events ou flows est le nom de la base de données Ariel
- records est l'enregistrement d'événement normalisé
- payloads est la charge utile brute associée aux enregistrements
- md sont les signatures de hachage ou les condensés de message (éventuellement chiffrés HMAC) des données Ariel
En général, les fichiers de données Ariel ont la structure suivante :
identifier~Minute#_File#~UUID~UUID~RetentionBucketNumber
- events~5_0~35c5c6bddcb24578~ad5711e8c1337858~0
Cet enregistrement représente l'enregistrement d'événement normalisé pour la 5ème minute et le 0ème compartiment de conservation (compartiment, ou "bucket", par défaut).
- SourceIP~5_0~35c5c6bddcb24578~ad5711e8c1337858~0
L'index sourceIP pour la 5ème minute et le 0ème compartiment de conservation (compartiment par défaut).
Dans le répertoire payloads, nous verrons des fichiers comme les suivants :
payload_events~5_0~35c5c6bddcb24578~ad5711e8c1337858~0Les charges utiles brutes pour la 5ème minute et le 0ème compartiment de conservation (compartiment par défaut).
Dans le répertoire md, vous voyez des fichiers comme celui-ci :
- events~5_0~35c5c6bddcb24578~ad5711e8c1337858~0.HMACSHA512
La signature HMAC-SHA512 pour les enregistrements d'événement normalisé de la 5ème minute et du 0ème compartiment de conservation.
- payload_events~5_0~35c5c6bddcb24578~ad5711e8c1337858~0.HMACSHA512
La signature HMAC-SHA512 pour les charges utiles brutes de la 5ème minute et du 0ème compartiment de conservation.
Remarque: l'outil ACP crée un répertoire appelé hashes à la place de md. Si vous avez activé le hachage des fichiers ou le hachage d'intégrité, prenez garde à ce problème.
Exemple - Suppression des événements ayant root comme nom d'utilisateur
Dans cet exemple, nous voulons retirer tous les événements dont le nom d'utilisateur est root de la base de données d'événements Ariel pour une période comprise entre 09:00 et 10:00.
- Commençons par chercher et voir ce que nous voulons retirer.La capture d'écran suivante montre tous les événements :
Figure 1 : Tous les événements 
- Ensuite, on exécute l'outil 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 capture d'écran suivante montre tous les événements sans le nom d'utilisateur root :Figure 2. Tous les événements avec le nom d'utilisateur root
La capture d'écran suivante montre tous les événements sans le nom d'utilisateur root.Figure 3. Tous les événements sans le nom d'utilisateur root 
Comme expliqué précédemment, nous avons supprimé tous les événements de 09:00 à 10:00 qui correspondaient au username root. Ainsi, avec l'outil ACP, nous avons spécifié dans nos critères que le username n'était PAS root.
De plus, nous avons placé les enregistrements filtrés dans le répertoire /store/new_Ariel .
- Remplaçons les anciennes données Ariel par les nouvelles données Ariel.
En examinant le répertoire /store/new_ariel (la destination que nous avons choisie dans cet exemple), nous pouvons voir que nous avons traité une heure de données :
[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]#Dans cet exemple, les données ont été choisies pour s'aligner sur des limites d'heure pleine afin de faciliter l'archivage et les copies (la commande mv peut être utilisée). Si vos données ne sont pas alignées sur des limites d'heure pleine, vous devrez migrer fichier par fichier.
- Archivez les anciennes données du répertoire ariel dans le répertoire ariel_archive en entrant la commande suivante :
[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]#À ce stade, cette heure de données n'est plus cherchable. La base de données Ariel ne pourra pas la trouver car elle ne contient plus les fichiers.
- Copiez (ou déplacez) les nouvelles données du répertoire new_ariel dans le répertoire ariel en entrant la commande suivante :
[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]#Remarque: Nous sommes passés de hashes à md. Voir la remarque dans la section d'amorce de structure de fichier Ariel.Parce que nous avons mené des recherches sur ces données avant de commencer, supprimons ces recherches afin de ne pas obtenir le cache du curseur, si nous exécutons des recherches identiques. Supprimez les recherches de Gérer les résultats de la recherche dans l'onglet Activité du journal.
- Exécutez les recherches pour toutes les données de 09:00 à 10:00.
Figure 4. Nouvelle recherche
Remarque: Les résultats totaux sont identiques à ceux du nom d'utilisateur "non" root avant l'exécution de l'outil ACP. - Recherchez le nom d'utilisateur root.
Figure 5. Nouvelle recherche sur le nom d'utilisateur root
Remarque: Certains de mes index n'ont pas été régénérés. Les index normaux, basés sur la propriété minute par minute, sont créés, mais les super-index ne sont jamais générés et la recherche en texte libre /Lucene n'est pas générée non plus. (Problème connu). Heureusement pour nous, nous avons l'outil /opt/qradar/bin/ariel_offline_indexer.sh !
Utilisation du script de l'indexeur hors ligne
Utilisez le script /opt/qradar/bin/ariel_offline_indexer.sh pour générer les super-index.
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]#
Maintenant, notre index de recherche en texte libre et nos super-index sont remplis.