ADR 0013 — Credenciais de equipamentos criptografadas no banco¶
Status: Aceita · Data: 09/11/2026
Contexto¶
Para falar com as OLTs, o sistema guarda communities SNMP e, às vezes, senhas de linha de comando. Um backup do banco, um acesso indevido a ele ou a auditoria não podem expor esses segredos.
Decisão¶
- Campos de credencial usam
CampoCriptografado(backend/apps/core/criptografia.py): o valor é cifrado com Fernet (AES-128 + HMAC, bibliotecacryptography) antes de ir para o banco, guardado com o prefixoenc:. - A chave fica só no
.envdo servidor:DJANGO_CHAVE_CRIPTOGRAFIA. Nunca no Git, nunca no banco. - Troca de chave sem perder dados:
DJANGO_CHAVE_CRIPTOGRAFIA=nova,antiga(a primeira cifra, todas decifram); depois de regravar as credenciais, a antiga pode sair. - Credenciais nunca aparecem na auditoria (qualquer
CampoCriptografadoé ignorado), na API nem no formulário do admin (campo de senha em branco; em branco mantém o valor). - Acesso por chave SSH continua preferido; a chave privada fica no servidor, fora do banco.
- Sem a chave configurada o sistema avisa na verificação (
noc.W001); com a chave errada, a leitura de uma credencial falha com mensagem clara (nada é decifrado "pela metade").
Consequências¶
- Perder a chave = perder as credenciais guardadas (precisam ser digitadas de novo). Por isso a instalação manda guardar uma cópia da chave fora do servidor, junto do backup.
- O backup do banco sozinho não expõe as credenciais.