Segredo e rotação¶
Para: Dev · Adm — Conferido em 2026-10-18.
O segredo de webhook (whsec_…) é a chave com que o Dracma assina cada entrega e com que o seu receptor a verifica. O primeiro segredo só existe depois que você clica em "Rotacionar segredo" no painel. A rotação mantém o segredo anterior por 7 dias, e "revogar" um segredo vazado é, na prática, rotacionar duas vezes.
O que é¶
| Propriedade | Valor |
|---|---|
| Formato | whsec_ seguido de 64 caracteres hexadecimais (32 bytes aleatórios de um gerador criptográfico). |
| Quem gera | O Dracma, ao rotacionar. Você não escolhe nem importa o valor. |
| Uso | Chave do HMAC-SHA256 que assina cada entrega. Veja Requisição e assinatura. |
| Quantos | No máximo 2 ativos por operação ao mesmo tempo. |
| Exibição | Uma única vez, na resposta da rotação. O painel nunca mostra o valor de novo; só o id, a data de criação, a expiração e o estado de cada segredo. |
| Em repouso | Guardado cifrado no Dracma. |
O segredo de webhook é outro segredo, diferente do segredo de chamada da API (sk_…). Guarde os dois no cofre, cada um separado, e nunca no navegador nem em código de frontend.
Quando usar¶
O primeiro segredo¶
O segredo não chega pronto
Ao cadastrar a URL, o Dracma não cria um segredo. O primeiro whsec_ só existe depois de "Rotacionar segredo" na tela de webhooks do painel, feito por quem tem permissão de gerenciar webhooks (no onboarding, o administrador do seu tenant). Não há envio do segredo por e-mail nem por canal fora do painel.
Sem segredo ativo, o Dracma não envia a entrega: a tentativa falha antes de sair, e o evento percorre o cronograma até a DLQ. Por isso:
- Cadastre a URL (Seu endpoint).
- Rotacione o segredo, copie o valor na hora e guarde-o no cofre do receptor.
- Só então gere eventos.
Rotação¶
A rotação exige:
- permissão de gerenciar webhooks na operação;
- confirmação de identidade adicional no painel (step-up);
- uma pessoa: diferente da mudança de URL, a rotação não precisa de aprovação de uma segunda pessoa nem de espera.
A rotação vale imediatamente. Todas as ações ficam na trilha de auditoria do painel, sem o valor do segredo.
Como funciona¶
Sobreposição de 7 dias¶
Quando você rotaciona:
- o segredo novo passa a assinar imediatamente;
- o segredo que era o mais novo até agora vira o anterior e continua assinando por 7 dias; depois ele expira;
- qualquer segredo mais antigo que o anterior expira na hora.
Enquanto os dois valem, cada entrega leva dois v1, o do segredo novo primeiro. O seu receptor mantém uma lista de segredos ativos (1 ou 2 itens) e aceita se qualquer v1 bater com qualquer segredo da lista, em tempo constante e sem sair do laço no primeiro acerto.
Procedimento sem perder entrega¶
- Rotacione no painel e copie o
whsec_novo. - Adicione o segredo novo à lista do receptor pelo cofre ou pelo pipeline de deploy, nunca à mão no servidor. O receptor passa a aceitar os dois.
- Confirme que os webhooks continuam sendo aceitos (o log de entregas do painel mostra
2xx). - Remova o segredo anterior da lista do receptor, depois de confirmar. O Dracma continua enviando dois
v1até o anterior expirar; o receptor com um segredo só ignora ov1que não conhece.
Você pode inverter os passos 2 e 3 sem risco: o receptor que só conhece o segredo novo aceita o 1º v1, e o que ainda só conhece o anterior aceita o 2º. Foi pensado para que a rotação nunca derrube a integração.
Quando rotacionar¶
Recomendação, não regra
O Dracma recomenda rotacionar o segredo de webhook periodicamente, por exemplo a cada 90 dias. Nenhuma regra do Dracma impõe isso: o segredo não expira sozinho e o painel não envia lembrete. A rotina de rotação é responsabilidade da sua equipe.
Rotacione também quando alguém que conhecia o segredo sair do projeto e sempre que houver suspeita de vazamento.
Exemplos¶
Linha do tempo de um segredo, com duas rotações seguidas (S1 é o segredo original):
| Momento | S1 |
S2 |
S3 |
Segredos que assinam |
|---|---|---|---|---|
| Antes da 1ª rotação | ativo | n/a | n/a | S1 |
| 1ª rotação (dia 0) | expira no dia 7 | ativo | n/a | S2, S1 (dois v1) |
| Dia 7 | expirado | ativo | n/a | S2 |
| 2ª rotação (no dia 0, logo depois da 1ª) | expira agora | expira no dia 7 | ativo | S3, S2 |
Estados que o painel mostra para cada segredo: o mais novo está active; um segredo anterior com data de expiração futura está expiring (a operação fica em "rotação" enquanto houver um). Segredos vencidos deixam de aparecer.
Erros e casos de borda¶
Segredo vazado: "revogar" é rotacionar duas vezes¶
Não disponível
O painel não tem uma ação "revogar segredo de webhook". Textos antigos falavam em "revogação de emergência no painel, com efeito em até cerca de 5 minutos"; isso não existe para webhooks.
O que protege o seu dinheiro quando o segredo vaza:
- O fetch-back. Quem tem o segredo consegue forjar um webhook com assinatura válida, mas o seu receptor só credita pelo estado que a API devolve para a sua credencial. Um webhook forjado não cria dinheiro. Veja Receptor passo a passo.
- A sua lista de segredos. O que decide se um webhook é aceito é a lista do seu receptor, não o relógio do Dracma.
Procedimento de emergência, nesta ordem:
- Rotacione no painel e obtenha o segredo novo. Como explicado acima, o segredo vazado continua assinando no Dracma por 7 dias; isso é irrelevante para a segurança, porque o que importa é o que o seu receptor aceita.
- Troque a lista do receptor: coloque o segredo novo e remova imediatamente o vazado. A partir daqui, nenhum webhook assinado só com o segredo vazado é aceito.
- Rotacione uma segunda vez se quiser que o Dracma pare de assinar com o segredo vazado agora: a 2ª rotação expira na hora o segredo mais antigo e deixa o anterior por mais 7 dias. Adicione o segredo da 2ª rotação ao receptor.
- Procure forjados: compare os eventos que o seu receptor processou com
GET /eventse com a reconciliação (Recuperação comGET /events). - Descubra a origem do vazamento (log, repositório, ferramenta de suporte) e corrija.
O passo 2 é o que fecha a janela de aceitação; o passo 1 sozinho não basta.
Outros casos¶
| Situação | O que acontece | O que fazer |
|---|---|---|
| Perdeu o valor do segredo | O painel não mostra o valor de novo. | Rotacione e atualize o receptor. |
| Receptor responde 401 logo depois da rotação | O receptor só conhece o segredo antigo ou só o novo e testa só o primeiro v1. |
Mantenha a lista de segredos e teste todos os pares. |
| Rotacionou duas vezes por engano | O segredo mais antigo expirou na hora. | Se o receptor só tinha o antigo, adicione os dois mais novos à lista. |
| Segredo usado em frontend ou em log | Exposição. | Trate como vazado (procedimento acima). |
| Rotação feita por quem não tem permissão | O painel recusa. | Peça ao administrador do tenant. |
Veja também¶
- Requisição e assinatura: como o segredo entra no HMAC.
- Receptor passo a passo: lista de segredos e fetch-back.
- Webhooks no painel: a tela de rotação.
- Segredos e vazamento: política geral de segredos.