Saltar al contenido
Studeia Docs
AI-assisted translation — last updated 2026-05-31. For original (pt-BR or en-US), use the language switcher.

Modelo de seguridad & LGPD: aislamiento, cifrado, derechos del titular

Modelo de seguridad de Studeia: aislamiento por tenant, secretos AES-256-GCM, OAuth state firmado HMAC, bucket privado de entregas, audit log y export/delete LGPD (Art. 18).

Por Equipo Studeia 2026-05-31 7 min
Resposta curta

La seguridad de Studeia fue diseñada para que la institución opere con confianza y cumplimiento: aislamiento total de datos por institución (LGPD), cifrado AES-256-GCM de secretos y tokens, saneamiento de HTML, bucket privado para entregas y log de auditoría. El titular de los datos puede exportar todo (Art. 18 IV) y eliminar la cuenta (Art. 18 VI, anonimizando PII y manteniendo datos de aprendizaje por retención legal), con páginas públicas de privacidad y términos.

Aislamiento por tenant

  • Toda query B2B filtra por tenantId; las policies de Row Level Security de Supabase garantizan el aislamiento en la base de datos.
  • Las claves de API por tenant, las credenciales de proveedores de video/avatar y los tokens OAuth se cifran en reposo con AES-256-GCM.
  • La impersonación de soporte usa una cookie httpOnly firmada HMAC, de corta duración (1h), y es un overlay en memoria — el auth de Supabase nunca se modifica. Todo inicio/fin de impersonación queda auditado.

Secretos & OAuth

  • El OAuth state está firmado HMAC-SHA256 (OAUTH_STATE_SECRET) con nonce Redis (anti-replay, TTL 15min) en cada connect y se valida contra la sesión en cada callback.
  • Las contraseñas de links de medios compartidos se guardan como salt:hash vía scrypt, con rate limit en los intentos.

Uploads & seguridad de contenido

  • El storageUrl de upload debe comenzar con el prefijo público de storage de Supabase, de lo contrario es rechazado con 422.
  • Las entregas de assignment se almacenan en un bucket privado con prefijo validado ({tenantId}/{courseId}/{lessonId}/{userId}/); las descargas usan URLs firmadas temporales con verificación de ownership.
  • El HTML de usuarios/LLMs se sanea server-side (DOMPurify) antes de cualquier dangerouslySetInnerHTML, incluyendo el HTML servido a la app móvil.
  • El input se valida con Zod en las rutas POST/PATCH; la prevención de SSRF bloquea IPs privadas IPv4/IPv6 y metadata endpoints.

Moderación

Un supervisor de chat IA clasifica los turnos del tutor (severidad + categoría) en background y puede advertir o poner en cuarentena; las señales de autolesión activan un flujo de seguridad no punitivo con recursos de crisis y notificación urgente al administrador.

LGPD / privacidad

  • Export (Art. 18 IV): GET /api/user/data-export devuelve todos los datos del usuario en JSON, rate limit de 1 req por 24h (cooldown Redis).
  • Eliminación (Art. 18 VI): DELETE /api/user/account anonimiza PII y elimina datos conversacionales, pero mantiene los datos de aprendizaje (notas, conclusiones, intentos de quiz) por ~5 años de retención fiscal (Art. 16 I).
  • Páginas públicas /privacy y /terms accesibles sin autenticación.
  • La observabilidad vía Sentry usa Replay con texto enmascarado y medios bloqueados para cumplimiento LGPD.

Auditoría

Las acciones administrativas sensibles (impersonación, cambio de plan/configuración, pagos manuales, cambio de rol) se registran en un audit log administrativo inmutable con IP y user-agent.

Ver también

FAQ

¿Cómo aísla Studeia los datos entre instituciones?

Toda query B2B filtra por tenantId, garantizado en la capa de datos y reforzado por policies RLS de Supabase. Las claves de API por tenant, las credenciales de proveedores de video/avatar y los tokens OAuth se cifran en reposo con AES-256-GCM. La impersonación de soporte es breve (1h, cookie firmada HMAC) y nunca modifica el auth de Supabase.

¿Puede el usuario exportar o eliminar sus datos (LGPD)?

Sí. GET /api/user/data-export devuelve todos los datos del usuario en JSON (rate limit de 1 req/24h). DELETE /api/user/account anonimiza PII (email, nombre) y elimina datos conversacionales, manteniendo los datos de aprendizaje (notas, conclusiones, intentos de quiz) por ~5 años de retención fiscal (LGPD Art. 16).

¿Los uploads y flujos OAuth están reforzados?

Sí. El storageUrl de upload debe comenzar con el prefijo público de storage de Supabase o es rechazado (422); las entregas de assignment van a un bucket privado con prefijo validado y URLs de descarga temporales firmadas. El OAuth state está firmado HMAC-SHA256 con nonce Redis anti-replay en cada connect/callback. El HTML destinado a LLM se sanea server-side antes de cualquier dangerouslySetInnerHTML.

Veja tambem

Modelo de seguridad & LGPD: aislamiento, cifrado, derechos del titular