Executando em produção (Open Source)
Uso em produção (com Docker compose)
O arquivo docker-compose.yml neste repositório é totalmente funcional para avaliar o DefectDojo no seu ambiente local.
Embora o Docker Compose seja um dos métodos de instalação suportados para implantar um DefectDojo em containers em um ambiente de produção, o arquivo docker-compose.yml não se destina ao uso em produção sem antes ser personalizado para sua situação específica.
Veja Executando com Docker Compose para mais informações sobre como executar o DefectDojo com Docker Compose.
Requisitos do sistema
É recomendado usar um servidor de banco de dados dedicado, e não o banco de dados PostgreSQL pré-configurado. Isso melhorará significativamente a performance do DefectDojo.
Tamanho da instância
Com um banco de dados separado, as recomendações mínimas para executar o DefectDojo são:
- 2 vCPUs
- 8 GB de RAM
- 10 GB de espaço em disco (lembre-se, seu banco de dados não está aqui -- então o que você tiver para o seu S.O. deve ser suficiente). Você poderia alocar um disco diferente do seu S.O.'s para possíveis melhorias de performance.
Segurança
Verifique a configuração do nginx e outros aspectos de runtime, como cabeçalhos de segurança, para atender aos seus requisitos de compliance.
Altere a chave de criptografia AES256 &91a*agLqesc*0DJ+2*bAbsUZfR*4nLw em docker-compose.yml para algo único para sua instância.
Esta chave de criptografia é usada para criptografar chaves de API e outras credenciais armazenadas no Defect Dojo para se conectar a ferramentas externas como o SonarQube. Uma chave pode ser gerada de várias formas, por exemplo usando um gerenciador de senhas ou openssl:
openssl rand -base64 32 DD_CREDENTIAL_AES_256_KEY: "${DD_CREDENTIAL_AES_256_KEY:-<PUT THE GENERATED KEY HERE>o}"Backup de arquivos
Em ambos os casos (banco de dados dedicado ou em container), se você estiver fazendo self-hosting, é recomendado que você implemente e crie backups periódicos dos seus dados.
Arquivos de mídia
Os arquivos de mídia para arquivos enviados, incluindo modelos de ameaça e aceitação de risco, são armazenados em um volume docker. Esse volume precisa ser copiado (backup) regularmente.
Ajustes de performance
uWSGI
Por padrão (exceto no modo ptvsd para fins de depuração), o uWSGI irá
lidar com 16 conexões simultâneas.
Com base nas suas configurações de recursos, você pode ajustar:
DD_UWSGI_NUM_OF_PROCESSESpara o número de processos gerados. (padrão 4)DD_UWSGI_NUM_OF_THREADSpara o número de threads nesses processos. (padrão 4)
Por exemplo, você pode ter 4 processos com 6 threads cada, resultando em 24 conexões simultâneas.
Celery worker
Por padrão, um único celery worker mono-processo é gerado. Ao armazenar uma grande quantidade de achados ou executar importações grandes, pode ser útil ajustar esses parâmetros para evitar a falta de recursos.
As variáveis a seguir podem ser alteradas para aumentar a performance do worker, mantendo um único container celery.
DD_CELERY_WORKER_POOL_TYPEpermite alternar paraprefork. (padrãosolo)
Ao habilitar o prefork, as variáveis abaixo devem
ser usadas. Veja o
Dockerfile.django-* para referências no arquivo.
DD_CELERY_WORKER_AUTOSCALE_MINtem como padrão 2.DD_CELERY_WORKER_AUTOSCALE_MAXtem como padrão 8.DD_CELERY_WORKER_CONCURRENCYtem como padrão 8.DD_CELERY_WORKER_PREFETCH_MULTIPLIERtem como padrão 128.
Você pode executar o seguinte comando para ver a configuração:
docker compose exec celerybeat bash -c "celery -A dojo inspect stats"
e veja o que está em vigor.
Import assíncrono: descontinuado
Este recurso foi removido na versão 2.47.0