Configuración de DefectDojo

Resumen

DefectDojo está configurado principalmente con valores estándar, con algunas personalizaciones necesarias para integrar el servicio Nginx oficial.


Configuraciones ESTÁNDAR (Por Defecto)

Servicios Base

  • Imagen oficial: defectdojo/defectdojo-django:latest

  • Base de datos: PostgreSQL 15 (estándar de DefectDojo)

  • Cache/Broker: Redis 7 (estándar de DefectDojo)

  • Celery Worker: Para tareas asíncronas (estándar)

  • Celery Beat: Para tareas programadas (estándar)

Variables de Entorno Estándar

  • ✅ Variables de entorno de DefectDojo (DD_*) con valores estándar

  • ✅ Configuración de base de datos estándar

  • ✅ Configuración de Celery estándar

  • DD_DEBUG: "True" (estándar para desarrollo)

  • DD_ALLOWED_HOSTS: "*" (estándar para desarrollo)

Configuración de Django

  • ✅ Configuraciones de Django por defecto de DefectDojo

  • ✅ Sistema de auditoría (django-auditlog) estándar

  • ✅ API habilitada por defecto

  • ✅ Sin modificaciones en el código fuente de DefectDojo


Configuraciones PERSONALIZADAS (Modificadas)

1. Servicio Nginx Oficial

Razón: Servir archivos estáticos de forma eficiente y hacer proxy a uwsgi

defectdojo-nginx:
  image: defectdojo/defectdojo-nginx:latest
  ports:
    - "8080:8080"

Estado: ✅ Estándar de DefectDojo - Es el servicio Nginx oficial recomendado

2. Deshabilitación de WhiteNoise

Razón: Nginx sirve los archivos estáticos, no es necesario WhiteNoise

DD_WHITENOISE: "False"

Estado: ⚠️ Personalizado - Necesario cuando se usa Nginx oficial

3. Puerto Interno 8081

Razón: Nginx expone el puerto 8080, Django corre internamente en 8081

expose:
  - "8081"  # No se expone directamente

Estado: ⚠️ Personalizado - Arquitectura con Nginx como proxy

4. Alias de Red ‘uwsgi’

Razón: El Nginx oficial busca el servicio Django por el nombre ‘uwsgi’

networks:
  defectdojo-network:
    aliases:
      - uwsgi

Estado: ⚠️ Personalizado - Requerido por la configuración del Nginx oficial

5. Volumen Compartido para Estáticos

Razón: Nginx y Django necesitan acceso a los archivos estáticos

volumes:
  - defectdojo_static:/app/static

Estado: ⚠️ Personalizado - Necesario para la integración con Nginx

6. Healthchecks Personalizados

Razón: Verificar que los servicios funcionen correctamente

healthcheck:
  test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8081/')"]

Estado: ⚠️ Personalizado - Adaptado a nuestra arquitectura


Configuraciones de Desarrollo (No para Producción)

⚠️ IMPORTANTE: Estas configuraciones son para desarrollo y deben cambiarse en producción:

  1. DD_DEBUG: "True" → Cambiar a "False" en producción

  2. DD_ALLOWED_HOSTS: "*" → Restringir a dominios específicos en producción

  3. DD_SECRET_KEY → Cambiar por una clave segura en producción

  4. Contraseñas de base de datos → Cambiar todas las contraseñas en producción


Conclusión

DefectDojo está configurado principalmente con valores estándar, con las siguientes personalizaciones necesarias para la integración del servicio Nginx oficial:

  • ✅ Uso del servicio Nginx oficial de DefectDojo (recomendado)

  • ✅ Configuración adaptada para que Nginx sirva estáticos

  • ✅ Arquitectura con proxy reverso (Nginx → Django)

  • ✅ Healthchecks adaptados a la arquitectura

No hay modificaciones inusuales o problemáticas. Todas las personalizaciones son estándar cuando se usa el servicio Nginx oficial de DefectDojo.


Referencias