Aller au contenu
Démarrage rapide

Audit k-anonymat

La pseudonymisation remplace les identifiants directs (nom, email, ID). Mais une ligne peut rester ré-identifiable à travers une combinaison d’attributs indirects — date de naissance + code postal + genre, par exemple. La sous-commande brume audit --anonymity mesure ce risque résiduel.

Un dataset est k-anonyme par rapport à un ensemble de quasi-identifiants si chaque combinaison de ces valeurs apparaît dans au moins k lignes.

Introduite par Sweeney (2002), la métrique capture un risque spécifique : si votre ligne est unique sur (date_naissance, code_postal, genre), quiconque connaît ces trois valeurs sur vous peut vous extraire du dataset — même si votre nom a été remplacé.

Un quasi-identifiant est une colonne dont la valeur n’est pas un identifiant direct à elle seule, mais qui contribue à vous identifier quand elle est combinée à d’autres.

Exemples courants :

  • Démographiques : date_naissance, genre, nationalité, code_postal, ville
  • Comportementaux : plan_abonnement + created_at + last_login_at
  • Géographiques : coordonnées lat/lng arrondies

Vous les déclarez par table au moment de l’audit.

Une classe singleton est une combinaison de valeurs quasi-identifiantes qui apparaît dans exactement une ligne. Les singletons sont les lignes les plus ré-identifiables de votre dataset — celles que l’audit met en évidence en premier.

k = 1 signifie qu’au moins un singleton existe. Cibles courantes : k ≥ 5 (protection légère) jusqu’à k ≥ 50 (protection forte pour datasets sensibles).

Fenêtre de terminal
brume audit --anonymity \
--quasi-id "users:birth_date,zip_code,gender" \
--report-format markdown

Plusieurs tables peuvent être auditées en une seule exécution en répétant --quasi-id :

Fenêtre de terminal
brume audit --anonymity \
--quasi-id "users:birth_date,zip_code,gender" \
--quasi-id "patients:age_bucket,city,blood_type" \
--report-out audit-2026-t2.md

Le rapport a trois sections :

  1. Résumék_min, nombre de singletons, pourcentage de lignes dans des classes d’équivalence sous le seuil.
  2. Top des combinaisons exposées — les classes les plus petites, triées par k croissant.
  3. Recommandations — suggestions concrètes : généraliser cette colonne (date_naissanceannée_naissance), supprimer celle-là, ou changer sa stratégie dans brume.yml.

Le rapport est conçu pour être remis à votre DPO tel quel en aide à la décision.

L’audit ne mesure que le k-anonymat. Il ne mesure pas :

  • La l-diversité — si les attributs sensibles sont diversifiés au sein de chaque classe d’équivalence.
  • La t-closeness — si la distribution des attributs sensibles à l’intérieur d’une classe correspond à la distribution globale.
  • Le risque inter-tables — la ré-identification via des jointures entre deux de vos tables.

Ce sont des points de la Roadmap. Pour l’instant, le k-anonymat vous donne le chiffre unique le plus utile à discuter avec votre DPO.

L’audit se termine avec le code 3 si un seuil est dépassé, vous pouvez donc en faire un garde-fou :

Fenêtre de terminal
brume audit --anonymity \
--quasi-id "users:birth_date,zip_code,gender" \
--min-k 5 \
--report-out artifacts/k-anonymity.md

Utilisez ça pour maintenir les rafraîchissements de staging dans une enveloppe de risque acceptable.