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).

2026-05-31 7 min
Resposta curta

El modelo de seguridad de Studeia combina aislamiento por tenant (tenantId en toda query B2B + RLS Supabase), cifrado AES-256-GCM de secretos y tokens OAuth, OAuth state firmado HMAC-SHA256, bucket privado para entregas, saneamiento de HTML server-side y audit log. En privacidad, ofrece export LGPD (Art. 18 IV, 1/24h) y eliminación de cuenta (Art. 18 VI) que anonimiza PII manteniendo los datos de aprendizaje para retención fiscal, además de páginas públicas /privacy y /terms.

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 utiliza 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 todo connect y se valida contra la sesión en todo callback.
  • Las contraseñas de enlaces de medios compartidos se almacenan como salt:hash mediante 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 se rechaza con 422.
  • Las entregas de assignment se almacenan en un bucket privado con prefijo validado ({tenantId}/{courseId}/{lessonId}/{userId}/); las descargas utilizan URLs firmadas temporales con verificación de ownership.
  • El HTML de usuarios/LLMs se sanea server-side (DOMPurify) antes de cualquier dangerouslySetInnerHTML, incluido 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 safety no punitivo con recursos de crisis y notificación urgente al admin.

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 los datos conversacionales, pero mantiene los datos de aprendizaje (notas, finalizaciones, 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 utiliza Replay con texto enmascarado y medios bloqueados para 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 firmado HMAC) y nunca modifica el auth de Supabase.

¿El usuario puede 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 los datos conversacionales, manteniendo los datos de aprendizaje (notas, finalizaciones, 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 todo 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