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_byasignadoProduct 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)¶
Clona el repositorio en tu Raspberry Pi (el dump inicial ya está incluido)
Carga el dump inicial:
./scripts/load_defectdojo_db.sh
El script de inicialización detectará que hay datos y no creará findings duplicados.
Opción 2: Cargar dump personalizado¶
Exporta el dump en tu máquina de desarrollo:
./scripts/export_defectdojo_db.sh
Copia el dump a tu Raspberry Pi:
scp data/defectdojo_db_dump.sql usuario@raspberry-pi:/ruta/del/proyecto/data/
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:
Exporta el dump:
./scripts/export_defectdojo_db.sh
Copia el dump al directorio de inicialización de PostgreSQL:
cp data/defectdojo_db_dump.sql data/postgres/init.sql
Elimina el directorio de datos de PostgreSQL para forzar reinicialización:
rm -rf data/postgres/*
Reinicia los contenedores:
make up-defectdojoPostgreSQL 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