DefectDojo enregistre une piste d’audit des modifications apportées à ses données. Chaque objet suivi
enregistre automatiquement les événements de création, de mise à jour et de suppression, et les tables de relation
(many-to-many) enregistrent les événements d’ajout et de retrait.
Le suivi d’audit est piloté par des déclencheurs (triggers) de base de données enregistrés par modèle. Pour chaque
objet suivi, trois types d’événements peuvent se déclencher :
Type d’événement
Quand il se déclenche
Action
InsertEvent
Un nouvel enregistrement est créé
Création
UpdateEvent
Un enregistrement change — uniquement lorsqu’une valeur de champ change réellement
Mise à jour
DeleteEvent
Un enregistrement est supprimé
Suppression
Les tables de relation many-to-many (étiquettes, réviseurs, plages IP de pare-feu) suivent
uniquement l’ajout (InsertEvent) et le retrait (DeleteEvent) — il n’existe pas
de « mise à jour » pour une ligne de relation.
Who — l’utilisateur à l’origine de l’action, tiré du contexte de la requête.
When — un horodatage.
Source IP — l’adresse distante, en tenant compte des chaînes de proxy X-Forwarded-For.
Before/after snapshot — les valeurs complètes des champs de l’enregistrement.
Context / label — regroupe les événements provenant de la même requête. L’étiquette
initial_backfill marque les enregistrements historiques importés lors de l’activation initiale du
suivi.
Les événements produits par des tâches de fond sont rattachés au contexte de la requête
d’origine, de sorte qu’une action effectuée de manière asynchrone est tout de même attribuée à l’utilisateur qui l’a déclenchée.
Les secrets ne sont jamais capturés. Les mots de passe des utilisateurs et les valeurs d’en-tête des
webhooks de notification sont explicitement exclus des instantanés d’événements.
Les mises à jour ne sont enregistrées qu’en cas de changement réel. Un enregistrement qui ne modifie aucune
valeur de champ ne produit aucun événement de mise à jour ; les champs auto-gérés comme
last_updated ne déclenchent pas d’événement à eux seuls.
Les événements d’authentification ne sont pas capturés ici. Seules les
modifications de données le sont. Les connexions, déconnexions et tentatives de connexion échouées sont gérées séparément et ne font pas partie de ce journal d’audit.