Pular para o conteúdo

Modelo de segurança & LGPD: isolamento, cifragem, direitos do titular

Modelo de seguranca do Studeia: isolamento por tenant, segredos AES-256-GCM, OAuth state assinado HMAC, bucket privado de submissoes, audit log e export/delete LGPD (Art. 18).

2026-05-31 7 min
Resposta curta

O modelo de seguranca do Studeia combina isolamento por tenant (tenantId em toda query B2B + RLS Supabase), cifragem AES-256-GCM de segredos e tokens OAuth, OAuth state assinado HMAC-SHA256, bucket privado para submissoes, sanitizacao de HTML server-side e audit log. Em privacidade, oferece export LGPD (Art. 18 IV, 1/24h) e delecao de conta (Art. 18 VI) que anonimiza PII mantendo dados de aprendizado para retencao fiscal, alem de paginas publicas /privacy e /terms.

Isolamento por tenant

  • Toda query B2B filtra por tenantId; policies de Row Level Security do Supabase garantem o isolamento no banco.
  • Chaves de API por tenant, credenciais de provedores de video/avatar e tokens OAuth sao cifrados em repouso com AES-256-GCM.
  • A impersonacao de suporte usa cookie httpOnly assinado HMAC, curto (1h), e e um overlay em memoria — o auth do Supabase nunca e modificado. Todo start/stop de impersonacao e auditado.

Segredos & OAuth

  • O OAuth state e assinado HMAC-SHA256 (OAUTH_STATE_SECRET) com nonce Redis (anti-replay, TTL 15min) em todo connect e validado contra a sessao em todo callback.
  • Senhas de links de midia compartilhada sao guardadas como salt:hash via scrypt, com rate limit nas tentativas.

Uploads & seguranca de conteudo

  • O storageUrl de upload precisa comecar com o prefixo publico de storage do Supabase, senao e rejeitado com 422.
  • Submissoes de assignment ficam em bucket privado com prefixo validado ({tenantId}/{courseId}/{lessonId}/{userId}/); downloads usam URLs assinadas temporarias com checagem de ownership.
  • HTML de usuarios/LLMs e sanitizado server-side (DOMPurify) antes de qualquer dangerouslySetInnerHTML, incluindo o HTML servido ao app mobile.
  • Input e validado com Zod nas rotas POST/PATCH; prevencao de SSRF bloqueia IPs privados IPv4/IPv6 e metadata endpoints.

Moderacao

Um supervisor de chat IA classifica os turnos do tutor (severidade + categoria) em background e pode advertir ou colocar em quarentena; sinais de self-harm disparam um fluxo de safety nao-punitivo com recursos de crise e notificacao urgente ao admin.

LGPD / privacidade

  • Export (Art. 18 IV): GET /api/user/data-export retorna todos os dados do usuario em JSON, rate limit de 1 req por 24h (cooldown Redis).
  • Delecao (Art. 18 VI): DELETE /api/user/account anonimiza PII e apaga dados conversacionais, mas mantem dados de aprendizado (notas, conclusoes, tentativas de quiz) por ~5 anos de retencao fiscal (Art. 16 I).
  • Paginas publicas /privacy e /terms acessiveis sem autenticacao.
  • Observabilidade via Sentry usa Replay com texto mascarado e midia bloqueada para LGPD.

Auditoria

Acoes administrativas sensiveis (impersonacao, mudanca de plano/config, pagamentos manuais, mudanca de role) sao registradas num audit log administrativo imutavel com IP e user-agent.

Veja tambem

FAQ

Como o Studeia isola os dados entre instituicoes?

Toda query B2B filtra por tenantId, garantido na camada de dados e reforcado por policies RLS do Supabase. Chaves de API por tenant, credenciais de provedores de video/avatar e tokens OAuth sao cifrados em repouso com AES-256-GCM. A impersonacao de suporte e curta (1h, cookie assinado HMAC) e nunca modifica o auth do Supabase.

O usuario pode exportar ou apagar seus dados (LGPD)?

Sim. GET /api/user/data-export retorna todos os dados do usuario em JSON (rate limit de 1 req/24h). DELETE /api/user/account anonimiza PII (email, nome) e apaga dados conversacionais, mantendo os dados de aprendizado (notas, conclusoes, tentativas de quiz) por ~5 anos de retencao fiscal (LGPD Art. 16).

Uploads e fluxos OAuth sao endurecidos?

Sim. O storageUrl de upload precisa comecar com o prefixo publico de storage do Supabase ou e rejeitado (422); submissoes de assignment vao para bucket privado com prefixo validado e URLs de download temporarias assinadas. O OAuth state e assinado HMAC-SHA256 com nonce Redis anti-replay em todo connect/callback. HTML destinado a LLM e sanitizado server-side antes de qualquer dangerouslySetInnerHTML.

Veja tambem

Modelo de segurança & LGPD: isolamento, cifragem, direitos do titular | Studeia Docs