Gestión de Base de Datos de DefectDojo

Este documento explica cómo exportar e importar la base de datos de DefectDojo para uso en Raspberry Pi o entornos donde no se quiere depender del script de inicialización.

Dump Inicial del Repositorio

El repositorio incluye un dump inicial de la base de datos en data/defectdojo_db_initial.sql. Este dump contiene:

  • Base de datos con todas las tablas creadas

  • Usuario admin (admin/admin)

  • 6 findings de CWE pre-configurados con found_by asignado

  • Product Type, Product, Engagement y Test configurados

  • Sin duplicados

Para usar el dump inicial:

./scripts/load_defectdojo_db.sh

O explícitamente:

./scripts/load_defectdojo_db.sh data/defectdojo_db_initial.sql

Exportar Base de Datos

Para exportar la base de datos actual de DefectDojo a un archivo SQL:

./scripts/export_defectdojo_db.sh

Esto creará un archivo data/defectdojo_db_dump.sql con todos los datos.

También puedes especificar una ruta personalizada:

./scripts/export_defectdojo_db.sh /ruta/personalizada/dump.sql

Importar Base de Datos

Para cargar un dump SQL en DefectDojo:

./scripts/load_defectdojo_db.sh

O especificando la ruta del dump:

./scripts/load_defectdojo_db.sh /ruta/al/dump.sql

Nota: Este script reiniciará automáticamente el contenedor de DefectDojo después de cargar el dump.

Uso en Raspberry Pi

Opción 1: Usar el dump inicial del repositorio (Más Simple)

  1. Clona el repositorio en tu Raspberry Pi (el dump inicial ya está incluido)

  2. Carga el dump inicial:

    ./scripts/load_defectdojo_db.sh
    
  3. El script de inicialización detectará que hay datos y no creará findings duplicados.

Opción 2: Cargar dump personalizado

  1. Exporta el dump en tu máquina de desarrollo:

    ./scripts/export_defectdojo_db.sh
    
  2. Copia el dump a tu Raspberry Pi:

    scp data/defectdojo_db_dump.sql usuario@raspberry-pi:/ruta/del/proyecto/data/
    
  3. En la Raspberry Pi, carga el dump:

    ./scripts/load_defectdojo_db.sh data/defectdojo_db_dump.sql
    

Opción 2: Usar el dump como datos iniciales

Si quieres que el dump se cargue automáticamente cuando se inicializa PostgreSQL por primera vez:

  1. Exporta el dump:

    ./scripts/export_defectdojo_db.sh
    
  2. Copia el dump al directorio de inicialización de PostgreSQL:

    cp data/defectdojo_db_dump.sql data/postgres/init.sql
    
  3. Elimina el directorio de datos de PostgreSQL para forzar reinicialización:

    rm -rf data/postgres/*
    
  4. Reinicia los contenedores:

    make up-defectdojo
    

    PostgreSQL cargará automáticamente el dump al inicializarse.

Comportamiento del Script de Inicialización

El script init_defectdojo_internal.py ahora verifica si la base de datos ya contiene datos:

  • Si hay datos: Salta la creación de findings para evitar duplicados

  • Si está vacía: Crea los findings normalmente

Esto permite usar el dump sin conflictos con el script de inicialización.

Estructura del Dump

El dump SQL contiene:

  • Todas las tablas de DefectDojo

  • Datos de usuarios, productos, engagements, tests

  • Todos los findings con sus configuraciones

  • Relaciones entre entidades

  • Configuraciones del sistema

Tamaño Típico

Un dump completo de DefectDojo con los 6 findings de ejemplo suele ocupar aproximadamente 1-2 MB.

Ventajas de Usar Dump

Independencia del script: No necesitas ejecutar el script de inicialización
Datos pre-configurados: Todos los findings y configuraciones ya están listos
Portabilidad: Fácil de mover entre entornos
Backup: Puedes usar el dump como respaldo
Raspberry Pi: Ideal para entornos con recursos limitados

Notas Importantes

⚠️ El dump incluye credenciales: Asegúrate de proteger el archivo si contiene datos sensibles
⚠️ Versión de PostgreSQL: El dump debe ser compatible con la versión de PostgreSQL en el destino
⚠️ Migraciones: Asegúrate de que las migraciones de Django estén aplicadas antes de cargar el dump