Politique de journalisation des actions sensibles
Version : 1.1 (issue #138 — audit d'exactitude + Lots 1-4) Dernière mise à jour : 29 mai 2026 Responsable du traitement : Loomya SAS Référentiels : CNIL Délibération 2021-122, OWASP Top 10 A09:2025, OWASP Logging Cheat Sheet, ISO 27001 A.12.4, NIS2
1. Finalité
Loomya enregistre les actions sensibles effectuées par les utilisateurs sur la plateforme pour :
- Conformité légale — RGPD article 5.1.f (intégrité et confidentialité), Délibération CNIL 2021-122 (traçabilité des accès et opérations sur données personnelles), NIS2 (incident traçable).
- Sécurité opérationnelle — détection des comportements anormaux, investigation post-incident, preuve d'imputabilité (OWASP A09).
- Audit interne et externe — questionnaires DSI, audits sécurité périodiques, due diligence contractuelle (Spartner UCI 2027 et clients similaires).
2. Données collectées
Pour chaque action sensible :
| Donnée | Exemple | Caractère personnel |
|---|---|---|
| Action | admin.delete_user, accommodation.update_allocation | Non |
| Catégorie | admin, accommodation, auth | Non |
| Sévérité | info, warning, critical | Non |
| Type d'entité affectée | user, event, allocation | Non |
| Identifiant d'entité affectée | UUID interne | Indirect |
| Identifiant de l'événement | UUID interne | Indirect |
| Identifiant utilisateur déclencheur | UUID Supabase Auth | Oui (RGPD article 4.1) |
| Email utilisateur déclencheur | prenom.nom@org.fr | Oui |
| Adresse IP | 192.0.2.1 | Oui |
| Identifiant d'équipement (User-Agent) | Mozilla/5.0 (...) Chrome/126.0 | Indirect (CNIL Délibération 2021-122) |
| Données contextuelles (metadata JSON) | { deletedUserId: '...', changes: {...} } | Variable selon l'action |
| Horodatage UTC | 2026-05-11T15:32:01Z | Non |
Données NON capturées dans l'audit log : mots de passe, jetons d'authentification, contenus de communications privées, données médicales, données financières détaillées (uniquement les références transactionnelles).
3. Périmètre
3.1 Actions tracées
- Toutes les mutations (POST/PUT/PATCH/DELETE) sur les ressources sensibles : participants, événements, allocations, équipes, hébergement, sites, comptes utilisateurs, paramètres administrateurs.
- Consultations privilégiées : accès super-administrateur au tableau de bord d'audit, imports/exports massifs, opérations d'anonymisation RGPD.
3.2 Actions NON tracées (limitations assumées)
Conformément à l'article RGPD 25 (minimisation des données) :
- Lectures simples paginées (listes de participants, dashboard, calendrier). Les consultations en lecture seule de données personnelles ne sont pas tracées exhaustivement pour éviter une saturation contre-productive du journal d'audit. Cette limitation est documentée comme un compromis assumé entre la conformité CNIL stricte (qui exige le tracé des accès) et la pérennité opérationnelle du système.
- Métadonnées techniques : appels de santé (
/health), géocodage, calculs de trajet, vérifications de notifications lues. - Authentifications natives Supabase : les événements d'authentification réussis (connexion, déconnexion, rafraîchissement de jeton, inscription, demande de réinitialisation de mot de passe) sont enregistrés par Supabase Auth dans la table
auth.audit_log_entries(PostgreSQL, UEeu-west-3Paris), avec une rétention pluri-mensuelle constatée (supérieure à 6 mois). Les tentatives de connexion échouées (mauvais mot de passe) ne sont en revanche pas enregistrées par le service d'authentification dans cette table — elles n'apparaissent que dans les journaux de plateforme Supabase (rétention ~7 jours sur le plan Pro), en deçà de la recommandation CNIL de 6 mois à 1 an. Limitation résiduelle assumée et documentée : la recommandation CNIL (Délibération 2021-122) admet un écart dès lors qu'il est documenté. Voies de remédiation possibles si un audit DSI l'exige : ingestion des échecs depuis l'API de journaux Supabase vers le journal d'audit, ou mise en place d'une route serveur de connexion dédiée — non implémentées à ce stade pour ne pas fragiliser le flux d'authentification, robuste en l'état. Voir §8. - Uploads de fichiers (photos sites, avatars, exports CSV/PDF) : non tracés en Phase 0. Adressé en Phase 2.
4. Rétention
| Couche | Stockage | Durée | Référentiel |
|---|---|---|---|
| Hot | Base de données opérationnelle (PostgreSQL, EU eu-west-3 Paris) | 6 mois | CNIL Délibération 2021-122 (minimum recommandé) |
| Cold | Stockage objet chiffré (Supabase Storage, EU eu-west-3 Paris) | 30 mois | Couvre cycle événement client (3 ans) |
| Suppression | Effacement définitif après 36 mois cumulés | À définir | RGPD article 5.1.e (limitation de la conservation) |
Format archive : fichier CSV compressé gzip (YYYY-MM.csv.gz), 1 fichier par mois, stockage racine du bucket privé adm-audit-archives.
Immutabilité : aucune ligne du journal d'audit ne peut être modifiée ou supprimée individuellement, même par un administrateur. La seule purge autorisée est l'archivage mensuel automatique, exécuté par une procédure cryptographiquement liée au compte de service interne. Conforme OWASP A09:2025 (audit infalsifiable).
5. Accès
| Rôle | Droits |
|---|---|
| Utilisateur courant | Aucun accès direct. Peut demander un export de ses propres traces via RGPD article 15 (droit d'accès) — délai 30 jours. |
| Administrateur d'événement | Aucun accès direct. Les opérations de leur événement génèrent des traces visibles uniquement par les super-administrateurs. |
| Super-administrateur Loomya | Accès en lecture seule via /admin/platform/audit. Toute consultation est elle-même tracée (conformément OWASP). |
| Système (compte de service interne) | Insertion en lot via procédure dédiée. Aucune permission de modification ou suppression individuelle. |
6. Alertes
Toute action de sévérité critical (suppression d'utilisateur, bannissement, impersonification, suppression d'événement, anonymisation RGPD) déclenche automatiquement une notification interne pour les super-administrateurs en moins d'une seconde après l'événement. Latence cible : SLA de détection < 5 secondes.
7. Sous-traitants concernés
| Sous-traitant | Rôle | Localisation | Conformité |
|---|---|---|---|
| Supabase (PostgreSQL + Storage) | Hébergement BDD et archives | UE eu-west-3 Paris | DPA signé, SCC, RGPD |
| Scalingo | Hébergement applicatif Loomya | UE osc-fr1 Île-de-France | DPA signé, SCC, RGPD |
| Sentry | Télémétrie applicative (errors only, pas d'audit log) | UE de.sentry.io | DPA signé, SCC, RGPD |
8. Limitations techniques connues
- Perte maximale en cas de panne : le tampon mémoire applicatif peut perdre jusqu'à 50 lignes d'audit par instance applicative au moment d'un arrêt brutal non-prévu (crash). Cette caractéristique est documentée et tolérée pour préserver la performance opérationnelle. Mécanisme de récupération : flush synchrone à l'arrêt normal, supervision Sentry sur les anomalies.
- Lectures simples non tracées : voir §3.2 limitation assumée.
- Échecs de connexion non conservés 6 mois : le service d'authentification (Supabase Auth / GoTrue) ne journalise pas les tentatives de connexion échouées dans la table
auth.audit_log_entries(vérifié : seules les actions réussies y figurent —login,logout,token_refreshed,user_signedup, etc.). Les échecs ne sont disponibles que dans les journaux de plateforme (~7 jours, plan Pro). Écart CNIL documenté et assumé — voir §3.2 pour les voies de remédiation.
9. Droits des utilisateurs
Conformément au RGPD :
- Article 15 — Droit d'accès : demande écrite à
dpo@loomya.fr(ou contact équivalent). Délai 30 jours. - Article 17 — Droit à l'effacement : non applicable au journal d'audit (motif légitime : obligation légale de conservation, intérêt légitime de sécurité). L'effacement intervient automatiquement après 36 mois.
- Article 21 — Droit d'opposition : non applicable au journal d'audit (motif légitime : intérêt impérieux à des fins de sécurité).
- Article 33-34 — Notification de violation : voir procédure dédiée
docs/legal/incident-response.md. Notification CNIL < 72 heures.
10. Évolution
| Phase | Périmètre | Disponibilité | |---|---|---| | Phase 0 (actuel) | Infrastructure + 2 routes pilotes | Issue #138, mai 2026 | | Phase 1 | Routes critiques compliance : suppression de compte, consentement, anonymisation RGPD, gestion super-administrateurs. Échecs de connexion = limitation documentée (§3.2), pas de route proxy. | en cours | | Phase 2 | 28 routes high-traffic (participants, allocation, équipes, exports) | Q4 2026 | | Phase 3 | Couverture 80% routes mutantes + alerte temps réel Sentry | Q1 2027 |
Cette politique est versionnée sur le dépôt de code public et peut évoluer avec les modifications légales ou techniques. Toute modification matérielle fera l'objet d'une mise à jour datée et d'une notification aux utilisateurs si nécessaire.