Pular para conteúdo

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, biblioteca cryptography) antes de ir para o banco, guardado com o prefixo enc:.
  • A chave fica só no .env do 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.