Ir para o conteúdo

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

  1. P0.1 CSP + headers (rápido e de alto impacto).
  2. P0.2 Key rotation JWT.
  3. P1.1 Audit trail unificado.
  4. P1.2 Alertas de segurança.
  5. 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