Pular para o conteúdo principal

Autenticação e Controle de Acesso

Para quem é esta página

Engenheiros back-end e revisores de segurança. Para o fluxo OAuth2, veja API — Autenticação.

JWT — Segurança

ParâmetroValor
AlgoritmoRS256 (RSA 2048-bit)
Expiração do access token1 hora
Expiração do refresh token30 dias (com rotação)
BlacklistRedis — SET jwt:blacklist:{jti} com TTL = expiração
Rotação de chavesA cada 24h via HashiCorp Vault

Refresh Rotation: A cada uso do refresh token, um novo é emitido e o anterior é invalidado. Isso detecta uso paralelo (indicativo de roubo).

RBAC — Matriz de Permissões

OperaçãoProdutorResp. Técnico (RT)AnalistaSupervisorAdmin
Criar processo✓*
Submeter processo (assinar)✓* (assina como RT)
Ver próprio processo✓*
Ver processos autorizados✓*
Ver processo de terceiro
Aprovar / Aprovar com PRA
Rejeitar processo
Criar pendência
Acessar audit logs
Configurar sistema

* RT acessa apenas processos com autorização explícita do proprietário.

Responsável Técnico — obrigações adicionais

O RT deve ter registro CREA/CONFEA/CFBio verificado no cadastro. Toda submissão por RT gera registro de assinatura em historico_processos com ator_id do RT e indicação de responsabilidade técnica. Isso é necessário para eventual fiscalização do conselho profissional.

OWASP Top 10 — Principais Mitigações

OWASPMitigação no CARla
A01 Broken Access ControlRBAC + ownership check + retorno 404 (não 403) + testes de autorização
A02 Cryptographic FailuresTLS 1.3, AES-256, RS256, pgcrypto, sem MD5/SHA-1
A03 InjectionPydantic v2 valida todos os inputs; ORM parametrizado; sem raw SQL com input do usuário
A07 Auth FailuresGov.br cuida da senha; JWT RS256; lockout após 5 tentativas; blacklist Redis
A09 Logging FailuresAudit log imutável; logs estruturados JSON; SIEM integration
A10 SSRFWhitelist de URLs externas; egress network policy no Kubernetes

Lockout de Autenticação

  • 5 tentativas falhas em 15 minutos por IP → bloqueio 15 minutos
  • 5 tentativas falhas em 15 minutos por CPF → bloqueio 15 minutos + e-mail de aviso
  • Delay progressivo: 1s → 2s → 5s → 10s → bloqueio