Solução de problemas de erros do Jira (Legado)
Nesta página
- Não encontro nenhuma configuração do Jira no DefectDojo
- O DefectDojo não consegue acessar o Jira (ou outros serviços externos) de forma alguma
- Não é possível configurar o Jira no DefectDojo devido a erros 404, 401 ou 403
- Contas de Serviço do Jira Não São Suportadas
- Não encontro um Epic Name ID para o meu Space
- Achados em que uso ‘Push To Jira’ não aparecem no Jira
- Erro: Produto Mal Configurado ou sem permissões no Jira?
- Alterações feitas em issues do Jira não atualizam os Achados no DefectDojo
- Epics do Jira não estão sendo criados
- Configurando Retentativas e Timeouts de Conexão do JIRA
- Jira e DefectDojo estão fora de sincronia
Aqui estão alguns problemas comuns com a integração do Jira e formas de resolvê-los.
Não encontro nenhuma configuração do Jira no DefectDojo
Se não houver um menu do Jira na barra lateral, nenhuma seção do Jira nos formulários de Produto / Engajamento e nenhuma opção Push to Jira nos Achados, é provável que a integração do Jira ainda esteja desabilitada nas Configurações do Sistema. O DefectDojo oculta todos os controles do Jira até que ela seja ativada.
Marque Enable Jira Integration na página de Configurações do Sistema:
- Open Source: ⚙️ Configuration > System Settings, depois marque Enable JIRA integration. Um Jira webhook secret também é necessário antes que o formulário possa ser salvo, então clique no ícone 🔄 para gerar um. Veja o Guia de Integração com o Jira.
- Pro: <Your Edition> Settings > System Settings, depois marque Enable Jira Integration em Jira Integration Settings. Veja o Guia de Integração com o Jira.
Se a configuração já estiver habilitada e você ainda não conseguir ver o menu do Jira, pode ser que falte ao seu usuário a Permissão de Configuração View Jira Instance, que também é necessária para que o menu apareça. Ela pode ser atribuída diretamente na página do Usuário ou por meio de um Grupo de Usuários. Veja Sobre Permissões e Papéis.
O DefectDojo não consegue acessar o Jira (ou outros serviços externos) de forma alguma
Se a integração do Jira no DefectDojo falhar com erros de conexão do tipo “connection refused”, “no route to host” ou falhas genéricas no handshake TLS — e as credenciais em si forem válidas — sua instância do DefectDojo pode estar atrás de um firewall que exige que o tráfego de saída passe por um proxy HTTPS de encaminhamento (forward proxy).
Para implantações Pro on-prem, defina as variáveis de ambiente HTTPS_PROXY / HTTP_PROXY / NO_PROXY na implantação. O dojo-compose-cli propaga essas variáveis automaticamente para os containers uwsgi, celeryworker e Connector. Veja Executando o DefectDojo Atrás de um Proxy HTTPS de Encaminhamento para o passo a passo completo da configuração.
Nota: definir
HTTPS_PROXYconfigura apenas o tráfego de saída do DefectDojo. Isso não afeta a capacidade do Jira de entregar webhooks de entrada ao DefectDojo — veja Alterações feitas em issues do Jira não atualizam os Achados no DefectDojo abaixo para esse caso.
Não é possível configurar o Jira no DefectDojo devido a erros 404, 401 ou 403
Jira Cloud:
- Consulte a documentação da API REST do Jira Cloud sobre autenticação: https://developer.atlassian.com/cloud/jira/software/basic-auth-for-rest-apis/
- Verifique na linha de comando se as credenciais fornecidas conseguem acessar as issues necessárias no Jira:
curl -D- \
-u <emailaddress>:<personal_access_token> \
-X GET \
-H "Content-Type: application/json" \
https://<COMPANY>.atlassian.net/rest/api/latest/issue/<JIRA_ISSUE_KEY>/transitions?expand=transitions.fieldsPor exemplo:
curl -D- \
-u defectdojo@example.com:ATATT1234567890abcdefghijklmnopqrstuvwxyz \
-X GET \
-H "Content-Type: application/json" \
https://defectdojo.atlassian.net/rest/api/latest/issue/VULNERABILITY-1/transitions?expand=transitions.fieldsJira Data Center ou Server:
- Consulte a documentação da API REST do Jira Data Center sobre autenticação:
- https://developer.atlassian.com/server/jira/platform/basic-authentication/ (usuário + senha)
- https://confluence.atlassian.com/enterprise/using-personal-access-tokens-1026032365.html (token de acesso pessoal)
- Verifique na linha de comando se as credenciais fornecidas conseguem acessar as issues necessárias no Jira:
curl -u username:password -X GET -H "Content-Type: application/json" https://<COMPANY>.atlassian.net/rest/api/latest/issue/<JIRA_ISSUE_KEY>/transitions?expand=transitions.fieldsPor exemplo:
curl -u defectdojo@example.com:123456 -X GET -H "Content-Type: application/json" https://defectdojo.atlassian.net/rest/api/latest/issue/VULNERABILITY-1/transitions?expand=transitions.fieldsAo usar tokens de acesso pessoal:
curl -H "Authorization: Bearer <personal_access_token>" https://<COMPANY>.atlassian.net/rest/api/latest/issue/<JIRA_ISSUE_KEY>/transitions?expand=transitions.fieldsPor exemplo:
curl -H "Authorization: Bearer ATATT1234567890abcdefghijklmnopqrstuvwxyz" https://<COMPANY>.atlassian.net/rest/api/latest/issue/<JIRA_ISSUE_KEY>/transitions?expand=transitions.fieldsContas de Serviço do Jira Não São Suportadas
Contas de Serviço do Jira Cloud (criadas pelo console de administração da Atlassian) usam um host de API diferente das contas de usuário padrão e atualmente não são suportadas pela integração do Jira no DefectDojo. Tentar usar um token de API de Conta de Serviço ou credenciais OAuth 2.0 de uma Conta de Serviço resultará em erros HTTP 403.
Para configurar a integração do Jira, crie uma conta de usuário padrão do Jira (com um endereço de e-mail válido) e gere um token de API a partir dessa conta. Se quiser identificar claramente as issues criadas pelo DefectDojo, crie um usuário dedicado com um nome como “DefectDojo” e use o token de API dessa conta para a integração.
Não encontro um Epic Name ID para o meu Space
Determinados Spaces no Jira, como os Team-Managed Spaces, não usam Epics e, portanto, não terão um Epic Name ID. Nesse caso, defina o Epic Name ID como 0 no DefectDojo.
Achados em que uso ‘Push To Jira’ não aparecem no Jira
Usar o fluxo ‘Push To Jira’ dispara um processo assíncrono; no entanto, uma Issue deve ser criada no Jira bem rapidamente depois que ‘Push To Jira’ é acionado.
- Verifique suas notificações do DefectDojo para ver se o processo foi bem-sucedido. Se o push falhar, você receberá uma resposta de erro do Jira em suas notificações.
Motivos comuns pelos quais issues não são criadas:
- O Default Issue Type selecionado não é utilizável com o Space do Jira
- As issues no Space possuem atributos obrigatórios que impedem sua criação pelo DefectDojo (o que pode ser tratado por meio de Custom Fields no Jira)
Erro: Produto Mal Configurado ou sem permissões no Jira?
Essa mensagem de erro pode aparecer ao tentar adicionar uma configuração do Jira criada a um Produto. O DefectDojo tentará validar uma conexão com o Jira e, se essa conexão falhar, exibirá essa mensagem de erro.
- Verifique se suas credenciais do Jira têm permissão para criar issues no Space do Jira selecionado.
- O campo “Project Key” precisa ser um Space válido do Jira. As issues do Jira podem usar várias Keys diferentes dentro de um único Space; a forma mais fácil de confirmar sua Project Key é observar a URL daquele Space específico do Jira: em geral, ela será parecida com
https://xyz.atlassian.net/jira/core/projects/JTV/board. Nesse caso,JTVé a Space Key.
Alterações feitas em issues do Jira não atualizam os Achados no DefectDojo
Comece confirmando que o receptor de webhook do DefectDojo está configurado corretamente e consegue receber atualizações com sucesso.
Certifique-se de que o certificado SSL usado pelo Defect Dojo seja confiável para o JIRA. Para o JIRA Cloud, você deve usar um certificado SSL/TLS válido, assinado por uma autoridade certificadora globalmente confiável
Se você estiver tentando enviar alterações de status, confirme se os mapeamentos de transição do Jira estão configurados corretamente (Reopen / Close Transition IDs).
Teste seu webhook do JIRA usando um endpoint público como Pipedream ou Beeceptor:
Confirme se o Achado está realmente vinculado à issue do Jira. Se a issue não estiver vinculada a um Achado do DefectDojo, a requisição de webhook ainda é aceita (HTTP
200), mas nenhum Achado é atualizado.Lembre-se de que o endpoint sempre retorna HTTP
200, independentemente de uma atualização ter sido aplicada ou não. Um200do lado de quem envia (um webhook de sistema ou uma regra de Jira Automation) não confirma que a alteração chegou a um Achado — verifique o corpo da resposta e os logs do DefectDojo para ver o resultado real.Se você estiver usando o Jira Automation (Send web request) em vez de um webhook de sistema, verifique o seguinte:
- O Body da requisição está definido como Custom data e inclui um
webhookEventde nível superior igual a"jira:issue_updated"ou"comment_created". As opções de body Empty e Jira issue data omitem esse campo, e o DefectDojo ignora qualquer requisição cujowebhookEventnão reconheça. Content-Type: application/jsonestá definido na requisição — o DefectDojo rejeita qualquer outro content type.- Para atualizações de issue,
issue.idé o ID numérico da issue do Jira ({{issue.id}}), não a issue key, e os camposresolutioneupdatedestão ambos presentes (resolutionpode sernull). A ausência deresolution/updatedfaz com que a requisição seja ignorada silenciosamente. - Para comentários, a URL
comment.selfcontém o{{issue.id}}numérico no segmento.../issue/<id>/comment/..., e tantobodyquantoupdateAuthorestão presentes. - Se os comentários não estiverem aparecendo, verifique a prevenção de loop: o DefectDojo ignora um comentário quando seu autor corresponde à conta do Jira que o DefectDojo usa para publicar comentários. Execute a regra de Automation como um usuário diferente do Jira se quiser que esses comentários sejam ingeridos.
- Use a prévia de payload do Automation para confirmar que os smart values são resolvidos conforme esperado — seus nomes podem variar entre instâncias do Jira.
- O Body da requisição está definido como Custom data e inclui um
Epics do Jira não estão sendo criados
"Field 'customfield_xyz' cannot be set. It is not on the appropriate screen, or unknown."
A integração do Jira no DefectDojo precisa de um valor de customfield para ‘Epic Name’. No entanto, as configurações do seu Projeto podem não usar ‘Epic Name’ como campo ao criar Epics. A Atlassian fez uma alteração em agosto de 2023 que combinou os campos ‘Epic Name’ e ‘Epic Summary’.
Spaces mais novos do Jira podem não usar esse campo ao criar Epics por padrão, o que resulta nessa mensagem de erro.
Para corrigir esse problema, você pode adicionar o campo ‘Epic Name’ à tela de criação de issues do seu Projeto:
- Tente criar um Epic manualmente no Jira (pela interface do Jira).
- Abra o menu “…”
- Clique em ‘Find Your Field’
- Digite ‘Epic Name’
- Adicione Epic Name como campo a essa tela específica, seguindo as instruções do Jira.

Configurando Retentativas e Timeouts de Conexão do JIRA
A integração do JIRA no DefectDojo inclui configurações de retentativa (retry) e timeout configuráveis para lidar com limitação de taxa (rate limiting) e problemas de conexão. Essas configurações são importantes para manter a responsividade do sistema, especialmente ao usar workers do Celery.
Variáveis de Configuração Disponíveis
As seguintes variáveis de ambiente controlam o comportamento da conexão com o JIRA:
DD_JIRA_MAX_RETRIES(padrão:3): número máximo de tentativas de retentativa para erros recuperáveis. A integração tentará novamente automaticamente em caso de HTTP 429 (Too Many Requests), HTTP 503 (Service Unavailable) e erros de conexão. Veja a documentação de rate limiting do JIRA para mais informações.DD_JIRA_CONNECT_TIMEOUT(padrão:10segundos): timeout de conexão para estabelecer uma conexão com o servidor JIRA.DD_JIRA_READ_TIMEOUT(padrão:30segundos): timeout de leitura para aguardar uma resposta do servidor JIRA depois que a conexão é estabelecida.
Nota sobre Rate Limiting: a biblioteca jira tem um tempo máximo de espera embutido de 60 segundos para retentativas de rate limiting. Se o cabeçalho Retry-After do JIRA indicar um tempo de espera maior que 60 segundos, a requisição falhará e não será repetida. Essa é uma limitação da versão da biblioteca jira atualmente em uso.
Por que valores conservadores são importantes
Importante: recomenda-se usar valores conservadores (mais baixos) para essas configurações. Veja o motivo:
Bloqueio de Tarefas do Celery: as operações do JIRA no DefectDojo são executadas como tarefas assíncronas do Celery. Quando uma tarefa está aguardando um atraso de retentativa, ela bloqueia esse worker do Celery de processar outras tarefas.
Esgotamento do Pool de Workers: se várias operações do JIRA estiverem em retentativa com atrasos longos, você pode esgotar rapidamente o pool de workers do Celery, fazendo com que outras tarefas (não apenas as relacionadas ao JIRA) fiquem em fila de espera.
Responsividade do Sistema: atrasos de retentativa longos podem fazer o sistema parecer sem resposta, especialmente durante interrupções do JIRA ou eventos de rate limiting.
O rate limiting do JIRA é novo, então nos conte no Slack ou no GitHub o que funciona melhor para você.
Jira e DefectDojo estão fora de sincronia
Às vezes o Jira está fora do ar, ou o DefectDojo está fora do ar, ou houve um bug em um webhook. Nesse caso, o Jira pode ficar fora de sincronia com o DefectDojo. Se isso acontecer com muitas issues, a reconciliação manual pode não ser viável. Para esse cenário, existe o comando de gerenciamento ‘jira_status_reconciliation’.
Como esse comando exige acesso ao backend, ele não está disponível para usuários Cloud do DefectDojo Pro; nesse caso, entre em contato com nossa equipe de Suporte para obter ajuda com esse problema.
usage: manage.py jira_status_reconciliation [-h] [--mode MODE] [--product PRODUCT] [--engagement ENGAGEMENT] [--dryrun] [--version] [-v {0,1,2,3}]
Reconcile finding status with JIRA issue status, stdout will contain semicolon seperated CSV results.
Risk Accepted findings are skipped. Findings created before 1.14.0 are skipped.
optional arguments:
-h, --help show this help message and exit
--mode MODE - reconcile: (default)reconcile any differences in status between Defect Dojo and JIRA, will look at the latest status change
timestamp in both systems to determine which one is the correct status
- push_status_to_jira: update JIRA status for all JIRA issues
connected to a Defect Dojo finding (will not push summary/description, only status)
- import_status_from_jira: update Defect Dojo
finding status from JIRA
--product PRODUCT Only process findings in this product (name)
--engagement ENGAGEMENT
Only process findings in this product (name)
--dryrun Only print actions to be performed, but make no modifications.
-v {0,1,2,3}, --verbosity {0,1,2,3}
Verbosity level; 0=minimal output, 1=normal output, 2=verbose output, 3=very verbose outputIsso pode ser executado a partir do container docker uwsgi usando:
$ docker compose exec uwsgi /bin/bash -c 'python manage.py jira_status_reconciliation'A saída de DEBUG pode ser obtida via -v 3, mas apenas depois de aumentar o nível de log para DEBUG no seu arquivo settings.dist.py ou local_settings.py
$ docker compose exec uwsgi /bin/bash -c 'python manage.py jira_status_reconciliation -v 3'Ao final do comando, um resumo em CSV separado por ponto e vírgula será exibido. Isso pode ser capturado redirecionando a saída padrão (stdout) para um arquivo:
$ docker compose exec uwsgi /bin/bash -c 'python manage.py jira_status_reconciliation > jira_reconciliation.csv'