Esecuzione in produzione (Open Source)
Utilizzo in produzione (con Docker compose)
Il file docker-compose.yml in questo repository è pienamente funzionale per valutare DefectDojo nel tuo ambiente locale.
Sebbene Docker Compose sia uno dei metodi di installazione supportati per distribuire un DefectDojo containerizzato in un ambiente di produzione, il file docker-compose.yml non è pensato per l’uso in produzione senza prima personalizzarlo in base alla tua situazione specifica.
Consulta Esecuzione con Docker Compose per maggiori informazioni su come eseguire DefectDojo con Docker Compose.
Requisiti di sistema
Si consiglia di utilizzare un server di database dedicato e non il database PostgreSQL preconfigurato. Questo migliorerà significativamente le prestazioni di DefectDojo.
Dimensione dell’istanza
Con un database separato, i requisiti minimi consigliati per eseguire DefectDojo sono:
- 2 vCPU
- 8 GB di RAM
- 10 GB di spazio su disco (ricorda, il tuo database non è qui -- quindi ciò che hai per il tuo S/O dovrebbe bastare). Potresti allocare un disco diverso da quello del tuo SO per potenziali miglioramenti delle prestazioni.
Sicurezza
Verifica la configurazione di nginx e altri aspetti di runtime, come gli header di sicurezza, per rispettare i tuoi requisiti di conformità.
Modifica la chiave di crittografia AES256 &91a*agLqesc*0DJ+2*bAbsUZfR*4nLw in docker-compose.yml con un valore univoco per la tua istanza.
Questa chiave di crittografia viene utilizzata per crittografare le chiavi API e altre credenziali memorizzate in Defect Dojo per connettersi a strumenti esterni come SonarQube. Una chiave può essere generata in vari modi, ad esempio utilizzando un password manager o openssl:
openssl rand -base64 32 DD_CREDENTIAL_AES_256_KEY: "${DD_CREDENTIAL_AES_256_KEY:-<PUT THE GENERATED KEY HERE>o}"Backup dei file
In entrambi i casi (DB dedicato o containerizzato), se stai facendo self-hosting, si consiglia di implementare e creare backup periodici dei tuoi dati.
File multimediali
I file multimediali per i file caricati, inclusi i modelli di minaccia e le accettazioni del rischio, sono memorizzati in un volume docker. Questo volume deve essere sottoposto a backup regolarmente.
Regolazioni delle prestazioni
uWSGI
Per impostazione predefinita (tranne in modalità ptvsd per scopi di debug), uWSGI
gestirà 16 connessioni simultanee.
In base alle tue impostazioni di risorse, puoi regolare:
DD_UWSGI_NUM_OF_PROCESSESper il numero di processi generati. (predefinito 4)DD_UWSGI_NUM_OF_THREADSper il numero di thread in questi processi. (predefinito 4)
Ad esempio, potresti avere 4 processi con 6 thread ciascuno, ottenendo 24 connessioni simultanee.
Celery worker
Per impostazione predefinita, viene generato un singolo celery worker mono-processo. Quando si memorizzano grandi quantità di riscontri o si eseguono importazioni di grandi dimensioni, può essere utile regolare questi parametri per evitare la carenza di risorse.
Le seguenti variabili possono essere modificate per aumentare le prestazioni del worker, mantenendo un singolo container celery.
DD_CELERY_WORKER_POOL_TYPEti permette di passare aprefork. (predefinitosolo)
Quando abiliti prefork, è necessario utilizzare
le variabili seguenti. Consulta il
file Dockerfile.django-* per i riferimenti al suo interno.
DD_CELERY_WORKER_AUTOSCALE_MINha come valore predefinito 2.DD_CELERY_WORKER_AUTOSCALE_MAXha come valore predefinito 8.DD_CELERY_WORKER_CONCURRENCYha come valore predefinito 8.DD_CELERY_WORKER_PREFETCH_MULTIPLIERha come valore predefinito 128.
Puoi eseguire il seguente comando per visualizzare la configurazione:
docker compose exec celerybeat bash -c "celery -A dojo inspect stats"
e verificare cosa è effettivamente in vigore.
Importazione asincrona: deprecata
Questa funzionalità è stata rimossa nella versione 2.47.0