Journalisation d'audit

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.

Fonctionnement

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énementQuand il se déclencheAction
InsertEventUn nouvel enregistrement est crééCréation
UpdateEventUn enregistrement change — uniquement lorsqu’une valeur de champ change réellementMise à jour
DeleteEventUn 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.

Ce qui est capturé à chaque événement

  • 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.

Core (Open Source) — actions suivies

ObjetCréationMise à jourSuppressionRemarques
Utilisateur✅✅✅password exclu des instantanés
Type de produit✅✅✅
Produit✅✅✅
Engagement✅✅✅
Test✅✅✅
Constatation✅✅✅
Groupe de constatations✅✅✅
Modèle de constatation✅✅✅
Acceptation du risque✅✅✅
Point de terminaison✅✅✅
Emplacement✅✅✅
URL✅✅✅
Webhook de notification✅✅✅header_name / header_value exclus (secrets)

Core — événements de relation (ajout / retrait)

RelationAjoutRetrait
Constatation → Réviseurs✅✅
Constatation → Étiquettes✅✅
Constatation → Étiquettes héritées✅✅
Produit → Étiquettes✅✅
Engagement → Étiquettes✅✅
Engagement → Étiquettes héritées✅✅
Test → Étiquettes✅✅
Test → Étiquettes héritées✅✅
Point de terminaison → Étiquettes✅✅
Point de terminaison → Étiquettes héritées✅✅
Modèle de constatation → Étiquettes✅✅
Analyse d’application (Technologie) → Étiquettes✅✅
Objets/Produit → Étiquettes✅✅

Pro — actions suivies

ObjetCréationMise à jourSuppressionRemarques
Constatation enrichie✅✅✅Équivalent Pro de Finding
Règle✅✅✅Moteur de règles
Action de règle✅✅✅
Condition d’action de règle✅✅✅
Entrée de filtre de règle✅✅✅
Opération du moteur de règles✅✅✅
Message d’opération du moteur de règles✅✅✅
Tâche planifiée✅✅✅
Exécution de tâche planifiée✅✅✅
Politique d’atténuation✅✅✅
Paramètre ajustable✅✅✅Modifications de configuration système
État du feature flag✅✅✅Activation/désactivation du flag + épinglages système
Définition du feature flag✅✅✅Métadonnées / synchronisation du registre
Pare-feu cloud✅✅✅champ locked exclu
Masque IP de pare-feu✅✅✅

Pro — RBAC / permissions

ObjetCréationMise à jourSuppression
Groupe✅✅✅
Rôle✅✅✅
Appartenance au groupe✅✅✅
Rôle global✅✅✅
Affectation de groupe à un Produit✅✅✅
Affectation de groupe à un Type de produit✅✅✅
Membre du Produit✅✅✅
Membre du Type de produit✅✅✅

Pro — événements de relation (ajout / retrait)

RelationAjoutRetrait
Pare-feu cloud → Plages IP✅✅

Configuration et rétention (contrôles on-premise)

ParamètreVariable d’environnementValeur par défautEffet
Activer la journalisation d’auditDD_ENABLE_AUDITLOGTrueLorsque défini sur False, tous les déclencheurs d’historique sont désactivés et aucun événement n’est enregistré
Période de rétentionDD_AUDITLOG_FLUSH_RETENTION_PERIOD-1 (jamais purgé)Nombre de mois d’historique à conserver ; les événements plus anciens sont supprimés par lots par la tâche de purge
Taille des lots de purgeDD_AUDITLOG_FLUSH_BATCH_SIZE1000Lignes supprimées par lot pendant le nettoyage
Nombre maximal de lots de purgeDD_AUDITLOG_FLUSH_MAX_BATCHES100Limite du nombre de lots par exécution de purge

Remarques et limites

  • 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.