Privacy by Design et by Default
La loi impose la protection par défaut (art. 9.1) et la désactivation par défaut des technologies de profilage (art. 8.1). En pratique, cela se traduit par des règles de conception.
Règles de conception
- Opt-in explicite : aucune case précochée; le refus est aussi simple que l'acceptation.
- Minimisation : chaque champ de formulaire et chaque colonne en base a une finalité documentée.
- Moindre privilège (RBAC) : un rôle ne voit que les données nécessaires à sa tâche; accès revus périodiquement.
- Séparation des environnements : pas de données réelles en dev/test sans anonymisation.
- Paramètres par défaut protecteurs : profil privé, télémétrie désactivée tant qu'il n'y a pas de consentement.
Données de test
Utiliser des données synthétiques (ex. bibliothèque Faker) ou des copies anonymisées (ex. extension PostgreSQL Anonymizer), jamais un dump de production brut.
from faker import Faker
fake = Faker("fr_CA")
user = {"nom": fake.name(), "courriel": fake.email(), "telephone": fake.phone_number()}
Consentement traçable
Enregistrer qui a consenti, à quoi, quand, avec quelle version du texte, et permettre le retrait :
CREATE TABLE consent_log (
id uuid PRIMARY KEY,
subject_id uuid NOT NULL,
purpose text NOT NULL,
policy_version text NOT NULL,
granted boolean NOT NULL,
recorded_at timestamptz NOT NULL DEFAULT now()
);
Checklist avant mise en production : champs minimisés ? opt-in ? logs sans RP ? données de test anonymisées ? rétention définie ? nouveau tiers validé par le RPRP ? Voir la boîte à outils.