Registro de auditoría

DefectDojo registra un rastro de auditoría de los cambios en sus datos. Cada objeto rastreado registra automáticamente eventos de creación, actualización y eliminación, y las tablas de relación (muchos a muchos) registran eventos de agregado y eliminación.

Cómo funciona

El rastreo de auditoría está impulsado por disparadores de base de datos registrados por modelo. Para cada objeto rastreado, pueden dispararse tres tipos de eventos:

Tipo de eventoCuándo se disparaAcción
InsertEventSe crea un nuevo registroCreación
UpdateEventUn registro cambia — solo cuando el valor de un campo real realmente cambiaActualización
DeleteEventSe elimina un registroEliminación

Las tablas de relación muchos a muchos (etiquetas, revisores, rangos de IP de firewall) rastrean solo agregado (InsertEvent) y eliminación (DeleteEvent) — no existe una “actualización” para una fila de relación.

Qué se captura con cada evento

  • Quién — el usuario que realiza la acción, tomado del contexto de la solicitud.
  • Cuándo — una marca de tiempo.
  • IP de origen — la dirección remota, respetando las cadenas de proxy X-Forwarded-For.
  • Instantánea antes/después — los valores completos de los campos del registro.
  • Contexto / etiqueta — agrupa los eventos originados en la misma solicitud. La etiqueta initial_backfill marca los registros históricos importados cuando se habilitó el rastreo por primera vez.

Los eventos producidos por trabajos en segundo plano se vuelven a vincular al contexto de la solicitud de origen, de modo que una acción completada de forma asíncrona sigue atribuyéndose al usuario que la originó.

Core (Open Source) — acciones rastreadas

ObjetoCreaciónActualizaciónEliminaciónNotas
Usuariopassword excluido de las instantáneas
Tipo de producto
Producto
Compromiso
Test
Hallazgo
Grupo de hallazgos
Plantilla de hallazgo
Aceptación de riesgo
Endpoint
Ubicación
URL
Webhook de notificaciónheader_name / header_value excluidos (secretos)

Core — eventos de relación (agregado / eliminación)

RelaciónAgregadoEliminación
Hallazgo → Revisores
Hallazgo → Etiquetas
Hallazgo → Etiquetas heredadas
Producto → Etiquetas
Compromiso → Etiquetas
Compromiso → Etiquetas heredadas
Test → Etiquetas
Test → Etiquetas heredadas
Endpoint → Etiquetas
Endpoint → Etiquetas heredadas
Plantilla de hallazgo → Etiquetas
Análisis de aplicaciones (Tecnología) → Etiquetas
Objetos/Producto → Etiquetas

Pro — acciones rastreadas

ObjetoCreaciónActualizaciónEliminaciónNotas
Hallazgo mejoradoComplemento Pro de Hallazgo
ReglaMotor de reglas
Acción de regla
Condición de acción de regla
Entrada de filtro de regla
Operación del motor de reglas
Mensaje de operación del motor de reglas
Tarea programada
Ejecución de tarea programada
Política de mitigación
Ajuste configurableCambios de configuración del sistema
Estado de indicador de funciónActivaciones/desactivaciones + fijaciones del sistema
Definición de indicador de funciónMetadatos / sincronización de registro
Firewall en la nubeCampo locked excluido
Máscara de IP de firewall

Pro — RBAC / permisos

ObjetoCreaciónActualizaciónEliminación
Grupo
Rol
Membresía de grupo
Rol global
Asignación de grupo a producto
Asignación de grupo a tipo de producto
Miembro de producto
Miembro de tipo de producto

Pro — eventos de relación (agregado / eliminación)

RelaciónAgregadoEliminación
Firewall en la nube → Rangos de IP

Configuración y retención (controles on-premise)

AjusteVariable de entornoPredeterminadoEfecto
Habilitar el registro de auditoríaDD_ENABLE_AUDITLOGTrueCuando es False, todos los disparadores de historial se deshabilitan y no se registra ningún evento
Período de retenciónDD_AUDITLOG_FLUSH_RETENTION_PERIOD-1 (nunca purgar)Meses de historial a conservar; los eventos más antiguos se eliminan por lotes mediante el trabajo de purga
Tamaño de lote de purgaDD_AUDITLOG_FLUSH_BATCH_SIZE1000Filas eliminadas por lote durante la limpieza
Máximo de lotes de purgaDD_AUDITLOG_FLUSH_MAX_BATCHES100Límite en la cantidad de lotes por ejecución de purga

Notas y limitaciones

  • Los secretos nunca se capturan. Las contraseñas de usuario y los valores de encabezado de los webhooks de notificación se excluyen explícitamente de las instantáneas de eventos.
  • Las actualizaciones solo se registran ante un cambio real. Un guardado que no altera ningún valor de campo no genera ningún evento de actualización; los campos autogestionados, como last_updated por sí solo, no disparan uno.
  • Los eventos de autenticación no se capturan aquí. Solo cambios de datos. El inicio de sesión, el cierre de sesión y los intentos fallidos de inicio de sesión se gestionan por separado y no forman parte de este registro de auditoría.