Security Roadmap Técnico (P0/P1/P2)¶
Objetivo¶
Traduzir o review de segurança em plano executável com critérios de aceite técnicos e verificáveis.
Data de referência: 2026-03-08
P0 — Hardening imediato¶
P0.1 CSP + headers de segurança no edge¶
Escopo
- Aplicar política de headers no edge (Cloudflare/proxy) para api e web.
Implementação mínima
- Content-Security-Policy
- X-Frame-Options: DENY (ou frame-ancestors 'none' na CSP)
- Referrer-Policy: strict-origin-when-cross-origin
- Permissions-Policy: camera=(), microphone=(), geolocation=()
CSP inicial sugerida (baseline)
Content-Security-Policy:
default-src 'self';
script-src 'self';
connect-src 'self' https://api.billings-ease.com.br;
img-src 'self' data:;
style-src 'self' 'unsafe-inline';
frame-ancestors 'none';
base-uri 'self';
form-action 'self'
Critérios de aceite
- curl -I no domínio web e api retorna os headers definidos.
- Navegação principal funciona sem bloqueios funcionais.
- Console do browser sem violações CSP críticas para fluxos de login/dashboard.
P0.2 Rotação de chaves JWT de autenticação¶
Escopo
- Substituir assinatura com segredo único por estratégia com kid e keyset.
Diretriz técnica
- Incluir kid no header do JWT.
- Manter keyset ativo (chave atual + anteriores em janela de transição).
- Verificação de token por lookup de chave via kid.
- Planejar rotação sem downtime.
Critérios de aceite
- Tokens novos saem com kid.
- Tokens emitidos com chave antiga permanecem válidos durante janela definida.
- Após janela, tokens de chave expirada são rejeitados.
- Runbook de rotação documentado (passo a passo + rollback).
P1 — Observabilidade e governança de segurança¶
P1.1 Audit trail unificado¶
Escopo
- Criar trilha transversal (audit_events) além dos logs específicos existentes.
Schema mínimo
- id
- timestamp
- user_id (nullable para eventos anônimos)
- action
- resource_type
- resource_id
- ip
- user_agent
- metadata (jsonb)
Eventos mínimos
- login_success, login_failure, logout
- password_reset_requested, password_reset_completed
- data_export_requested, data_export_downloaded
- account_deletion_requested, account_deletion_confirmed
- admin_action
Critérios de aceite
- Eventos acima persistidos com metadados mínimos.
- Query operacional disponível para investigação por user_id, ip, action, período.
- Retenção definida por política.
P1.2 Alertas de segurança focados em autenticação¶
Escopo - Adicionar regras de alerta específicas para abuso de auth.
Sinais recomendados
- falhas de login por usuário/minuto
- falhas de login por IP/minuto
- ocorrências de refresh_reuse_detected
- crescimento anômalo de 401/403 em endpoints sensíveis
Critérios de aceite - Regras versionadas em arquivo de alertas. - Alertas disparam em ambiente de teste com cenários simulados. - Procedimento de resposta documentado (runbook curto).
P2 — Defesa adicional¶
P2.1 Antivírus/CDR para upload sensível¶
Escopo - Avaliar scanning em pipeline de upload de documentos sensíveis (principalmente PDF).
Critérios de aceite - Arquivos suspeitos são bloqueados/quarentenados. - Evento registrado em auditoria. - Mensagem de erro segura ao usuário (sem vazar engine/assinatura).
Sequência recomendada¶
- P0.1 CSP + headers (rápido e de alto impacto).
- P0.2 Key rotation JWT.
- P1.1 Audit trail unificado.
- P1.2 Alertas de segurança.
- P2.1 Antivírus/CDR.
Referências internas¶
- Review base:
docs/01-arquitetura/governanca/security-review-saas.md - Alertas atuais:
billings-ease-backend/docs/prometheus.alerts.yml - Observabilidade atual:
billings-ease-backend/internal/observability/prometheus.go