Initial commit
This commit is contained in:
227
features/rgpd-compliance/cookies-analytics.feature
Normal file
227
features/rgpd-compliance/cookies-analytics.feature
Normal file
@@ -0,0 +1,227 @@
|
||||
# language: fr
|
||||
|
||||
@rgpd @cookies @analytics
|
||||
Fonctionnalité: Cookies et analytics avec Matomo self-hosted
|
||||
|
||||
# 13.7 - Matomo self-hosted, zéro cookie tiers (souveraineté données)
|
||||
|
||||
Contexte:
|
||||
Étant donné que je suis un utilisateur de l'application web RoadWave
|
||||
|
||||
# Liste des cookies utilisés
|
||||
|
||||
Scénario: Cookies strictement nécessaires - pas de consentement requis
|
||||
Étant donné que j'accède à l'application web
|
||||
Quand je me connecte
|
||||
Alors les cookies techniques suivants sont déposés:
|
||||
| cookie | type | durée | finalité | consentement |
|
||||
| session | Technique | 30j | Authentification | Non requis |
|
||||
| refresh_token | Technique | 30j | Session persistante | Non requis |
|
||||
Et ces cookies sont essentiels au fonctionnement de l'application
|
||||
Et ils sont exemptés de consentement selon l'article 82 de la loi Informatique et Libertés
|
||||
|
||||
Scénario: Cookie analytique Matomo - consentement requis
|
||||
Étant donné que j'ai accepté le consentement "Analytique"
|
||||
Quand je navigue sur l'application web
|
||||
Alors le cookie `_pk_id` est déposé
|
||||
Et la durée de conservation est de 13 mois
|
||||
Et ce cookie sert à Matomo pour analytics
|
||||
Et mon IP est automatiquement anonymisée (2 derniers octets)
|
||||
|
||||
Scénario: Refus du consentement analytique - pas de cookie Matomo
|
||||
Étant donné que j'ai refusé le consentement "Analytique"
|
||||
Quand je navigue sur l'application web
|
||||
Alors aucun cookie `_pk_id` n'est déposé
|
||||
Et aucune donnée d'usage n'est collectée
|
||||
Et l'application fonctionne normalement sans analytics
|
||||
|
||||
# Matomo self-hosted
|
||||
|
||||
Scénario: Matomo hébergé sur les serveurs RoadWave
|
||||
Étant donné que RoadWave utilise Matomo pour les analytics
|
||||
Quand on analyse l'infrastructure
|
||||
Alors Matomo est installé sur les serveurs RoadWave (Docker)
|
||||
Et aucune donnée n'est envoyée à un service tiers
|
||||
Et toutes les données restent dans l'UE
|
||||
Et l'accès à Matomo est restreint à l'équipe RoadWave
|
||||
|
||||
Scénario: IP anonymisées automatiquement
|
||||
Étant donné que Matomo collecte des données d'usage
|
||||
Quand une requête est enregistrée
|
||||
Alors l'adresse IP est automatiquement anonymisée
|
||||
Et les 2 derniers octets sont remplacés par des zéros
|
||||
Et une IP 192.168.1.100 devient 192.168.0.0
|
||||
Et cette anonymisation est irréversible
|
||||
Et elle est conforme aux recommandations CNIL
|
||||
|
||||
Scénario: Configuration Matomo conforme RGPD
|
||||
Étant donné que Matomo est configuré pour RoadWave
|
||||
Quand on vérifie les paramètres
|
||||
Alors les configurations suivantes sont activées:
|
||||
| paramètre | valeur |
|
||||
| Anonymisation IP (2 octets) | activé |
|
||||
| Respect Do Not Track | activé |
|
||||
| Suppression auto anciens logs (25 mois)| activé |
|
||||
| Géolocalisation IP désactivée | activé |
|
||||
| User ID anonymisé | activé |
|
||||
Et la configuration est RGPD-compliant
|
||||
|
||||
# Trackers interdits
|
||||
|
||||
Scénario: Aucun tracker tiers utilisé
|
||||
Étant donné que j'accède à l'application web
|
||||
Quand j'inspecte les requêtes réseau avec les DevTools
|
||||
Alors aucune requête n'est envoyée vers les domaines suivants:
|
||||
| domaine tiers interdit |
|
||||
| google-analytics.com |
|
||||
| facebook.com (Pixel) |
|
||||
| hotjar.com |
|
||||
| mixpanel.com |
|
||||
| segment.io |
|
||||
| amplitude.com |
|
||||
Et toutes les requêtes analytics vont uniquement vers matomo.roadwave.fr
|
||||
|
||||
Scénario: Conformité zéro cookie tiers
|
||||
Étant donné que j'analyse les cookies déposés sur roadwave.fr
|
||||
Quand je consulte la liste des cookies
|
||||
Alors tous les cookies sont first-party (domaine roadwave.fr)
|
||||
Et aucun cookie tiers (third-party) n'est présent
|
||||
Et cette politique respecte les recommandations CNIL 2020
|
||||
|
||||
# Alternative: Plausible (si besoin)
|
||||
|
||||
Scénario: Alternative Plausible SaaS (EU-hosted)
|
||||
Étant donné que RoadWave pourrait utiliser Plausible au lieu de Matomo
|
||||
Quand on compare les deux solutions
|
||||
Alors Plausible a les caractéristiques suivantes:
|
||||
| caractéristique | valeur |
|
||||
| Hébergement | UE (Allemagne) |
|
||||
| Conformité RGPD | Natif (pas de cookie) |
|
||||
| Coût | 9€/mois (50K pageviews) |
|
||||
| IP anonymisées | Automatique |
|
||||
| Consentement requis | Non (selon CNIL 2020) |
|
||||
Mais Matomo self-hosted reste le choix prioritaire (0€, contrôle total)
|
||||
|
||||
# Souveraineté des données
|
||||
|
||||
Scénario: Aucun transfert de données hors UE
|
||||
Étant donné que Matomo est self-hosted
|
||||
Quand on analyse les flux de données
|
||||
Alors aucune donnée d'analytics n'est transférée hors de l'UE
|
||||
Et les serveurs sont localisés en France
|
||||
Et aucun transfert vers les US (pas de Privacy Shield / DPF requis)
|
||||
Et la souveraineté des données est garantie
|
||||
|
||||
# Coût de la solution
|
||||
|
||||
Scénario: Matomo self-hosted - coût estimé
|
||||
Étant donné que Matomo est hébergé sur l'infrastructure RoadWave
|
||||
Quand on calcule le coût mensuel
|
||||
Alors le coût est d'environ 5€/mois:
|
||||
| composant | coût |
|
||||
| Serveur supplémentaire | 0€ (mutualisé) |
|
||||
| Base de données MySQL | 0€ (mutualisé) |
|
||||
| Stockage logs (25 mois) | ~5€/mois |
|
||||
| License Matomo | 0€ (opensource) |
|
||||
Et ce coût est marginal comparé à un SaaS tiers (9-50€/mois)
|
||||
|
||||
# Respect Do Not Track
|
||||
|
||||
Scénario: Respect du signal Do Not Track (DNT)
|
||||
Étant donné que mon navigateur envoie le header "DNT: 1"
|
||||
Quand j'accède à l'application web
|
||||
Alors Matomo détecte le signal DNT
|
||||
Et aucune donnée d'usage n'est collectée
|
||||
Et aucun cookie `_pk_id` n'est déposé
|
||||
Et l'application fonctionne normalement
|
||||
Et un message discret s'affiche: "Vos préférences de confidentialité sont respectées (DNT activé)"
|
||||
|
||||
# Suppression automatique des anciens logs
|
||||
|
||||
Scénario: Logs Matomo supprimés après 25 mois
|
||||
Étant donné que Matomo collecte des données d'usage
|
||||
Quand les logs atteignent 25 mois d'ancienneté
|
||||
Alors un job automatique supprime les anciens logs
|
||||
Et seules les données agrégées (rapports) sont conservées
|
||||
Et les données brutes (logs) sont supprimées définitivement
|
||||
Et cette politique respecte le principe de minimisation RGPD
|
||||
|
||||
# Métriques collectées par Matomo
|
||||
|
||||
Scénario: Données collectées par Matomo
|
||||
Étant donné que j'ai accepté le consentement "Analytique"
|
||||
Quand je navigue sur l'application web
|
||||
Alors Matomo collecte les données suivantes:
|
||||
| donnée collectée | anonymisée |
|
||||
| Pages visitées | non |
|
||||
| Durée de visite | non |
|
||||
| Navigateur / OS | non |
|
||||
| Résolution écran | non |
|
||||
| Provenance (referrer) | non |
|
||||
| IP (2 derniers octets) | oui |
|
||||
| User ID (hashé) | oui |
|
||||
Et aucune donnée personnelle identifiable n'est collectée
|
||||
|
||||
Scénario: User ID hashé pour analytics
|
||||
Étant donné que je suis connecté à l'application
|
||||
Et que j'ai accepté le consentement "Analytique"
|
||||
Quand Matomo enregistre mes actions
|
||||
Alors mon user_id est hashé (SHA-256)
|
||||
Et le hash est 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
|
||||
Et il est impossible de retrouver mon user_id original depuis ce hash
|
||||
Et ce processus garantit l'anonymat
|
||||
|
||||
# Conformité CNIL 2020
|
||||
|
||||
Scénario: Conformité recommandations CNIL sur les cookies
|
||||
Étant donné que RoadWave utilise Matomo self-hosted
|
||||
Quand un auditeur CNIL vérifie la conformité
|
||||
Alors le système respecte les recommandations CNIL 2020:
|
||||
| recommandation CNIL | respecté |
|
||||
| Consentement requis pour cookies analytics | oui |
|
||||
| IP anonymisées | oui |
|
||||
| Pas de transfert hors UE | oui |
|
||||
| Durée conservation limitée (25 mois) | oui |
|
||||
| Respect Do Not Track | oui |
|
||||
| Transparence (liste cookies dans CGU) | oui |
|
||||
|
||||
# Tarteaucitron.js - gestion du consentement
|
||||
|
||||
Scénario: Intégration Tarteaucitron.js pour gérer Matomo
|
||||
Étant donné que Tarteaucitron.js gère les consentements
|
||||
Quand je personnalise mes consentements
|
||||
Alors je vois l'option "Analytique (Matomo)"
|
||||
Et une description est affichée:
|
||||
"""
|
||||
Matomo nous aide à comprendre comment vous utilisez l'application pour l'améliorer.
|
||||
Vos données restent anonymes et ne sont jamais partagées avec des tiers.
|
||||
"""
|
||||
Et je peux activer ou désactiver Matomo indépendamment
|
||||
Et si je désactive, le cookie `_pk_id` est supprimé immédiatement
|
||||
|
||||
# Application mobile - analytics
|
||||
|
||||
Scénario: Analytics sur application mobile
|
||||
Étant donné que j'utilise l'application mobile
|
||||
Quand j'accepte le consentement "Analytique"
|
||||
Alors l'app utilise le SDK Matomo Mobile
|
||||
Et les données sont envoyées à la même instance Matomo self-hosted
|
||||
Et les mêmes règles d'anonymisation s'appliquent
|
||||
Et aucun SDK tiers (Google Analytics, Firebase) n'est utilisé
|
||||
|
||||
Scénario: Refus analytics sur mobile
|
||||
Étant donné que j'ai refusé le consentement "Analytique" sur mobile
|
||||
Quand j'utilise l'application
|
||||
Alors aucune donnée d'usage n'est collectée
|
||||
Et le SDK Matomo est désactivé
|
||||
Et l'application fonctionne normalement sans différence d'UX
|
||||
|
||||
# Opensource et auditabilité
|
||||
|
||||
Scénario: Matomo opensource et auditable
|
||||
Étant donné que Matomo est opensource
|
||||
Quand on consulte le code source
|
||||
Alors le code est disponible publiquement sur GitHub
|
||||
Et le code peut être audité par des experts indépendants
|
||||
Et aucune backdoor ou collecte cachée n'est possible
|
||||
Et cette transparence renforce la confiance utilisateur
|
||||
Reference in New Issue
Block a user