Segurança
Segurança como invariante, não como recurso.
Fronteira de multi-tenancy aplicada no nível de AST. Agentes mTLS com rotação automática. Um audit log imutável. Detalhes abaixo.
Invariantes de arquitetura
- Toda consulta ao TSDB recebe um organization_id injetado. composeQuery e rewritePromQL adicionam organization_id como matcher obrigatório. Não há caminho bruto para entrada do usuário — vazamento de dados entre tenants é estruturalmente impossível.
- Modelo de embed JWT. Chaves de API emitem JWTs de vida curta com filtros obrigatórios embutidos nas claims. Os handlers leem os filtros das claims, nunca da URL. Spoofing via URL forjada é impossível.
- Segredos via SecretBox (AES-256-GCM). Tokens OAuth, chaves de assinatura de canal e chaves de embed são armazenados criptografados com uma master key. Texto em claro nunca chega aos logs.
- Identidade do agente = certificado de cliente verificado. Não um header, não o corpo. A validação mTLS acontece na configuração TLS do servidor, não no código da aplicação.
- Chaves JWT rotacionam com header kid. Várias chaves de assinatura ficam em memória durante a rotação. O KeyRevocator invalida tokens emitidos antecipadamente quando necessário.
- Tokens de dashboards públicos nunca pegam org_id da URL. O org_id é resolvido no servidor a partir da linha do token — uma URL forjada não troca de organização.
Autenticação
- Sessões por cookie com CSRF double-submit
- Senha + bcrypt
- TOTP 2FA (RFC 6238)
- WebAuthn / passkeys
- OAuth: GitHub, Google, Apple
- Magic link para passwordless
- SCIM 2.0 para auto-provisionamento via IdP
Segurança de transporte
- Painel via HTTPS — TLS 1.2+, HSTS em produção
- Ingest mTLS — listener dedicado, autenticação de cliente obrigatória
- Certificados de agente — TTL de 24h, rotação automática
- CA de agentes embutida, não pública
Dados em repouso
- Postgres — criptografia no nível de disco (gerenciado) ou de aplicação (SecretBox para segredos)
- TSDB — criptografia no nível de disco (LUKS / cloud KMS)
- Backups — criptografados com a sua própria chave, não uma compartilhada
Política de divulgação
Encontrou uma vulnerabilidade? Escreva para [email protected]. Fingerprint PGP sob pedido. Respondemos em até 48 horas.
- Critical / RCE / vazamento de dados / bypass de auth — patch em até 7 dias
- High — patch em até 30 dias
- Medium — patch em até 90 dias
- Low — no próximo release
A divulgação pública vem após o release da correção, creditando você se quiser. Pagamos recompensa por achados sérios.
Subprocessadores
A oferta gerenciada usa os subprocessadores abaixo. A lista completa com finalidade e escopo de dados está no documento de DPA.
- Hospedagem em nuvem — infraestrutura (regiões US, EU)
- Provedor de pagamento global — processamento de pagamentos
- E-mail transacional
- CDN + proteção contra DDoS