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

Sécurité & RGPD/LGPD : isolation, chiffrement, droits des données

Modèle de sécurité de Studeia : isolation par tenant, secrets AES-256-GCM, OAuth state signé HMAC, bucket privé de soumissions, audit log et export/suppression LGPD (Art. 18).

2026-05-31 7 min
Resposta curta

Le modèle de sécurité de Studeia combine l'isolation par tenant (tenantId dans toute requête B2B + RLS Supabase), le chiffrement AES-256-GCM des secrets et tokens OAuth, l'OAuth state signé HMAC-SHA256, un bucket privé pour les soumissions, la sanitisation HTML côté serveur et un audit log. En matière de confidentialité, il propose l'export LGPD (Art. 18 IV, 1/24h) et la suppression de compte (Art. 18 VI) qui anonymise les données personnelles tout en conservant les données d'apprentissage pour la rétention fiscale, ainsi que des pages publiques /privacy et /terms.

Isolation par tenant

  • Toute requête B2B filtre par tenantId ; les policies Row Level Security de Supabase garantissent l'isolation au niveau de la base de données.
  • Les clés d'API par tenant, les identifiants des fournisseurs vidéo/avatar et les tokens OAuth sont chiffrés au repos avec AES-256-GCM.
  • L'usurpation d'identité pour le support utilise un cookie httpOnly signé HMAC, de courte durée (1h), et est un overlay en mémoire — l'authentification Supabase n'est jamais modifiée. Chaque démarrage/arrêt d'usurpation est audité.

Secrets & OAuth

  • L'OAuth state est signé HMAC-SHA256 (OAUTH_STATE_SECRET) avec un nonce Redis (anti-replay, TTL 15min) à chaque connect et validé par rapport à la session à chaque callback.
  • Les mots de passe des liens de médias partagés sont stockés sous forme de salt:hash via scrypt, avec un rate limit sur les tentatives.

Uploads & sécurité du contenu

  • Le storageUrl d'upload doit commencer par le préfixe public de storage de Supabase, sinon il est rejeté avec un 422.
  • Les soumissions d'assignment sont stockées dans un bucket privé avec préfixe validé ({tenantId}/{courseId}/{lessonId}/{userId}/) ; les téléchargements utilisent des URLs signées temporaires avec vérification de propriété.
  • Le HTML des utilisateurs/LLMs est assaini côté serveur (DOMPurify) avant tout dangerouslySetInnerHTML, y compris le HTML servi à l'application mobile.
  • Les entrées sont validées avec Zod sur les routes POST/PATCH ; la prévention SSRF bloque les IPs privées IPv4/IPv6 et les endpoints de métadonnées.

Modération

Un superviseur de chat IA classe les tours du tuteur (sévérité + catégorie) en arrière-plan et peut avertir ou mettre en quarantaine ; les signaux d'automutilation déclenchent un flux de sécurité non-punitif avec des ressources de crise et une notification urgente à l'administrateur.

LGPD / confidentialité

  • Export (Art. 18 IV) : GET /api/user/data-export retourne toutes les données de l'utilisateur en JSON, rate limit de 1 req par 24h (cooldown Redis).
  • Suppression (Art. 18 VI) : DELETE /api/user/account anonymise les données personnelles et supprime les données conversationnelles, mais conserve les données d'apprentissage (notes, complétions, tentatives de quiz) pendant ~5 ans de rétention fiscale (Art. 16 I).
  • Pages publiques /privacy et /terms accessibles sans authentification.
  • L'observabilité via Sentry utilise Replay avec texte masqué et médias bloqués pour la conformité LGPD.

Audit

Les actions administratives sensibles (usurpation d'identité, modification de plan/configuration, paiements manuels, changement de rôle) sont enregistrées dans un audit log administratif immuable avec adresse IP et user-agent.

Voir aussi

FAQ

Comment Studeia isole-t-il les données entre les établissements ?

Toute requête B2B filtre par tenantId, garanti au niveau de la couche de données et renforcé par les policies RLS de Supabase. Les clés d'API par tenant, les identifiants des fournisseurs vidéo/avatar et les tokens OAuth sont chiffrés au repos avec AES-256-GCM. L'usurpation d'identité pour le support est de courte durée (1h, cookie signé HMAC) et ne modifie jamais l'authentification Supabase.

L'utilisateur peut-il exporter ou supprimer ses données (LGPD) ?

Oui. GET /api/user/data-export retourne toutes les données de l'utilisateur en JSON (rate limit de 1 req/24h). DELETE /api/user/account anonymise les données personnelles (email, nom) et supprime les données conversationnelles, tout en conservant les données d'apprentissage (notes, complétions, tentatives de quiz) pendant ~5 ans de rétention fiscale (LGPD Art. 16).

Les uploads et les flux OAuth sont-ils sécurisés ?

Oui. Le storageUrl d'upload doit commencer par le préfixe public de storage de Supabase, sinon il est rejeté (422) ; les soumissions d'assignment sont stockées dans un bucket privé avec préfixe validé et URLs de téléchargement temporaires signées. L'OAuth state est signé HMAC-SHA256 avec un nonce Redis anti-replay sur chaque connect/callback. Le HTML destiné aux LLM est assaini côté serveur avant tout dangerouslySetInnerHTML.

Veja tambem

Sécurité & RGPD/LGPD : isolation, chiffrement, droits des données