Betrieb in der Produktion (Open Source)
Produktiveinsatz (mit Docker Compose)
Die Datei docker-compose.yml in diesem Repository ist voll funktionsfähig, um DefectDojo in Ihrer lokalen Umgebung zu evaluieren.
Docker Compose ist zwar eine der unterstützten Installationsmethoden, um ein containerisiertes DefectDojo in einer Produktionsumgebung zu betreiben, die Datei docker-compose.yml ist jedoch nicht für den Produktiveinsatz gedacht, ohne sie zuvor an Ihre konkrete Situation anzupassen.
Weitere Informationen zum Betrieb von DefectDojo mit Docker Compose finden Sie unter Betrieb mit Docker Compose.
Systemanforderungen
Es wird empfohlen, einen dedizierten Datenbankserver zu verwenden und nicht die vorkonfigurierte PostgreSQL-Datenbank. Das verbessert die Performance von DefectDojo deutlich.
Instanzgröße
Mit einer separaten Datenbank gelten für den Betrieb von DefectDojo folgende Mindestempfehlungen:
- 2 vCPUs
- 8 GB RAM
- 10 GB Festplattenspeicher (denken Sie daran: Ihre Datenbank liegt nicht hier, was Sie für Ihr Betriebssystem vorgesehen haben, sollte also genügen). Für mögliche Performance-Verbesserungen können Sie eine andere Festplatte als die des Betriebssystems verwenden.
Sicherheit
Prüfen Sie die nginx-Konfiguration und weitere Laufzeitaspekte wie Security-Header, damit sie Ihre Compliance-Anforderungen erfüllen.
Ändern Sie den AES256-Schlüssel &91a*agLqesc*0DJ+2*bAbsUZfR*4nLw in docker-compose.yml in einen für Ihre Instanz einzigartigen Wert.
Dieser Schlüssel verschlüsselt API-Schlüssel und andere in Defect Dojo gespeicherte Zugangsdaten für die Verbindung zu externen Tools wie SonarQube. Ein Schlüssel kann auf verschiedene Weise erzeugt werden, zum Beispiel mit einem Passwortmanager oder openssl:
openssl rand -base64 32 DD_CREDENTIAL_AES_256_KEY: "${DD_CREDENTIAL_AES_256_KEY:-<PUT THE GENERATED KEY HERE>o}"Dateisicherung
In beiden Fällen (dedizierte DB oder containerisiert) wird beim Self-Hosting empfohlen, regelmäßige Backups Ihrer Daten einzurichten und zu erstellen.
Mediendateien
Mediendateien für hochgeladene Dateien, darunter Threat Models und Risikoakzeptanz, werden in einem Docker-Volume gespeichert. Dieses Volume muss regelmäßig gesichert werden.
Performance-Anpassungen
uWSGI
Standardmäßig (außer im ptvsd-Modus zum Debuggen) verarbeitet uWSGI
16 gleichzeitige Verbindungen.
Abhängig von Ihren Ressourceneinstellungen können Sie anpassen:
DD_UWSGI_NUM_OF_PROCESSESfür die Anzahl der gestarteten Prozesse. (Standard 4)DD_UWSGI_NUM_OF_THREADSfür die Anzahl der Threads in diesen Prozessen. (Standard 4)
Sie können zum Beispiel 4 Prozesse mit je 6 Threads betreiben, was 24 gleichzeitige Verbindungen ergibt.
Celery worker
Standardmäßig wird ein einzelner Celery-Worker mit nur einem Prozess gestartet. Beim Speichern großer Mengen von Befunden oder bei großen Importen kann es hilfreich sein, diese Parameter anzupassen, um Ressourcenengpässe zu vermeiden.
Die folgenden Variablen können geändert werden, um die Worker-Performance zu erhöhen und dabei einen einzelnen Celery-Container beizubehalten.
DD_CELERY_WORKER_POOL_TYPEerlaubt den Wechsel zuprefork. (Standardsolo)
Wenn Sie prefork aktivieren, müssen die folgenden
Variablen verwendet werden. Siehe die
Dockerfile.django-* für Verweise in den Dateien.
DD_CELERY_WORKER_AUTOSCALE_MINhat den Standardwert 2.DD_CELERY_WORKER_AUTOSCALE_MAXhat den Standardwert 8.DD_CELERY_WORKER_CONCURRENCYhat den Standardwert 8.DD_CELERY_WORKER_PREFETCH_MULTIPLIERhat den Standardwert 128.
Mit dem folgenden Befehl können Sie die Konfiguration einsehen:
docker compose exec celerybeat bash -c "celery -A dojo inspect stats"
und erkennen, welche Werte wirksam sind.
Asynchroner Import: Veraltet
Diese Funktion wurde in 2.47.0 entfernt