Resumo executivo dos controles em produção. Pra advogado/DPO ver o resumo LGPD → /legal/lgpd. Pra entender exatamente o que armazenamos e como tratamos → /legal/privacy.
Camada de aplicação
Criptografia em repouso
Chaves OpenAI/Anthropic dos customers são cifradas com AES-256-GCM antes de persistir em workspace_settings. Master key (32 bytes) em variável de ambiente, IV randômico de 12 bytes per-row, auth tag de 16 bytes pra anti-tampering. Plaintext apenas em memória, durante execução de request. Implementação em apps/web/lib/encryption.ts (Node stdlib, sem deps externas).
Criptografia em trânsito
TLS 1.3 obrigatório em toda comunicação cliente↔cloud. Railway provê HTTPS com cert auto-renewed Let's Encrypt + HSTS preload (max-age 1 ano + includeSubDomains). Comunicação interna entre app e Postgres/ClickHouse usa TLS mútuo nos drivers nativos.
API keys (ingest)
Keys no formato rg_pk_live_... (32 chars random). Apenas o hash bcrypt persiste no banco — o valor original é mostrado ao customer UMA vez na criação. Comparação na rota de ingest é constant-time. Cooldown de 1h por workspace pra evitar enumeração.
Auth via Supabase + RLS
Magic link / OAuth (Google + GitHub) sem armazenamento de senhas. Cada SELECT/INSERT respeita Row Level Security em Postgres: workspace_id deve match com auth.uid() do JWT. Service role key apenas em rotas server-side trusted (webhooks Stripe, cron jobs com Bearer secret).
Camada de dados
PII redaction antes da rede
aferiq.start() ativa redação BR por default — regex pra CPF/CNPJ/RG/CEP/email/telefone aplicados ANTES do POST de qualquer trace. Função pública redact_pii_br() também disponível pra uso direto. Implementação em packages/lib/src/rageval/cloud.py (DEFAULT_REDACTORS) — código auditável, 9 testes adversariais cobrindo formatos formatado/sem-pontuação/idempotência.
Residência de dados
Postgres (Supabase) em São Paulo (sa-east-1). ClickHouse Cloud em us-east-1 (N. Virginia) sob SCC + DPA assinado conforme LGPD Art. 33 — São Paulo é Private region só no Enterprise tier. Roadmap: residência exclusiva BR em planos Scale+ via ClickHouse Enterprise SP ou self-host. Backups seguem região do storage primário.
Retenção + direito de exclusão
Trace bodies expiram automaticamente conforme tier (30d/90d/1y). Audit logs idem. Após cancelamento de conta, dados são eliminados em até 30 dias (exceto dados de obrigação legal — fiscais 5 anos). Solicitação de exclusão imediata por DPO em até 15 dias úteis (LGPD Art. 18.6).
Processos & compliance
Sub-processadores & DPA
Lista pública e versionada de sub-processadores em /legal/lgpd: Supabase, ClickHouse Cloud, OpenAI (DPA assinado, SCC), Stripe Brasil, Resend, Sentry (opcional), PostHog (opcional). Mudanças comunicadas com 30 dias de antecedência. DPA template disponível pra customer enterprise.
Cookies estritamente necessários (sessão de auth) sem opt-in. PostHog (analytics) e Sentry (error tracking) gateados por banner de consentimento — SDK não inicializa até o user clicar Aceitar. localStorage flag permite revogar a qualquer momento. Sem cross-site tracking, sem dark patterns.
O que ainda não fazemos
Honestidade primeiro: a empresa é solo-founder pré-receita. Os controles abaixo estão no roadmap mas ainda não implementados:
SOC 2 Type II: sem auditoria formal. Documentação interna existe (CSP, headers, encryption). Programado pra Phase 17 quando primeiro customer enterprise fundar via plano Scale.
HSM / KMS gerenciado: chave mestra de encryption está em variável de ambiente (Railway). Migração pra AWS KMS ou HashiCorp Vault está no backlog.
SSO empresarial (SAML / Okta): disponível só no plano Scale (talk-to-sales). Free e Pro usam magic link + OAuth Google/GitHub.
Bug bounty público: sem programa formal ainda. Reportes responsáveis pra dpo@aferiq.com.br — respondemos em 48h e damos crédito em /security/researchers.
Penetration test: não contratamos pentest externo ainda. Tooling automatizado (pnpm audit, Sentry exception tracking) está em CI.
Tem outra pergunta?
Time de segurança ou DPO precisando de questionário CAIQ, SIG-Lite, ISO 27001 SOA, ou DPIA? Manda pra dpo@aferiq.com.br que respondemos em até 5 dias úteis com matriz preenchida.