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

Modèle de sécurité & RGPD/LGPD : isolation, chiffrement, droits des personnes concernées

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

Par Équipe Studeia 2026-05-31 7 min
Resposta curta

La sécurité de Studeia a été conçue pour permettre aux établissements d'opérer en toute confiance et conformité : isolation totale des données par établissement (LGPD), chiffrement AES-256-GCM des secrets et tokens, assainissement du HTML, bucket privé pour les soumissions et journal d'audit. La personne concernée peut exporter toutes ses données (Art. 18 IV) et supprimer son compte (Art. 18 VI, en anonymisant les PII et en conservant les données d'apprentissage pour la rétention légale), avec des pages publiques de confidentialité et de conditions d'utilisation.

Isolation par tenant

  • Toute requête B2B est filtrée par tenantId ; les policies de Row Level Security de Supabase garantissent l'isolation en base de données.
  • Les clés 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 constitue un overlay en mémoire — l'authentification Supabase n'est jamais modifiée. Chaque début/fin d'usurpation est consigné dans l'audit.

Secrets & OAuth

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

Uploads & sécurité du contenu

  • Le storageUrl d'upload doit commencer par le préfixe public de storage Supabase, sinon il est rejeté avec une erreur 422.
  • Les soumissions d'assignment sont stockées dans un bucket privé avec un 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 provenant des utilisateurs/LLM 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 IP 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, limite de débit de 1 req par 24h (cooldown Redis).
  • Suppression (Art. 18 VI) : DELETE /api/user/account anonymise les PII 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 le texte masqué et les médias bloqués pour la conformité LGPD.

Audit

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

Voir aussi

FAQ

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

Toute requête B2B est filtrée par tenantId, garantie au niveau de la couche de données et renforcée par les policies RLS de Supabase. Les clés 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 (limite de débit : 1 req/24h). DELETE /api/user/account anonymise les PII (e-mail, nom) et supprime les données conversationnelles, 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 Supabase, sinon il est rejeté (422) ; les soumissions d'assignment vont dans un bucket privé avec préfixe validé et URLs de téléchargement temporaires signées. Le 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

Modèle de sécurité & RGPD/LGPD : isolation, chiffrement, droits des personnes concernées