Documentação

Segurança e Isolamento

Como a Elohia protege dados de cada empresa, as decisões de arquitetura que suportam multi-tenancy e o que esta sob sua responsabilidade.

8 min de leitura

Isolamento por tenant

Cada empresa recebe um slug próprio no signup (acme, globex, ...). Todas as collections do tenant vivem no MongoDB prefixadas por esse slug — acme__agents, acme__conversations, acme__agent_memory, etc. O helper tenantCollection(slug, name) e o único caminho autorizado; getDb().collection(...) direto e proibido fora dos 2 arquivos de bootstrap.

Impossivel um endpoint aceitar tenant vindo do cliente. O slug sai sempre do JWT assinado no servidor (claim tslug). Nenhum body/query param sobrescreve isso — tentativas são silenciosamente ignoradas pelo backend.

Autenticação

  • Senha armazenada com bcryptjs (cost 12).
  • JWT HS256 com TTL de 24h — claims: sub (userId), email, tslug (tenant), role.
  • JWT_SECRET de 64 bytes, obrigatorio com >=32 chars no boot.
  • Tokens de reset de senha e verificacao de email TTL em auth_tokens (collection global).

Criptografia em repouso

Credenciais sensiveis armazenadas no Mongo (tokens Slack, OAuth Claude, secrets de webhooks) passam por AES-256-GCM com ENCRYPTION_KEY. A chave e configurada no boot — sem ela o backend falha rápido. Rotacao da chave invalida tokens salvos, então ela não deve ser trocada sem plano.

MCP allowlist por plano

Como a plataforma e aberta, MCPs são avaliados antes de virar processo. A policy combina (a) lista de comandos aceitos (npx, uvx, pipx, node, python3 conforme plano), (b) regex dos pacotes verificados e (c) limite de número de MCPs simultaneos. O que for rejeitado não entra em .mcp.json — o agente loga o motivo.

Observabilidade e auditoria

  • <slug>__agent_events: crashes, restarts, starts — dentro do tenant
  • <slug>__security_events: injection attempts, violacoes de escopo — dentro do tenant
  • audit_log global: eventos de signup, criação de tenant, etc — uso operacional
  • Endpoint /agents/:id/diagnose consolida sinais em healthScore + issues priorizadas

O que e sua responsabilidade

  • Dar acesso de owner/admin apenas a quem precisa dentro do tenant
  • Não compartilhar JWTs — eles são pessoais e expiram em 24h
  • Revisar os guardrails dos agentes antes de conectar a canais públicos
  • Tratar credenciais de MCP como secrets — armazene-as no envVars do AgentDoc, não em texto em CLAUDE.md

LGPD

A Elohia opera como operadora dos dados que você insere na plataforma, você continua como controlador. Para questões formais (exercício de direitos do titular, DPO, relatório de impacto), escreva para [email protected]. Detalhes na Política de Privacidade.