Vous êtes dans : Accueil > Tribunes libres >

Anonymisation : comparatif de trois outils (partie I)

Cédric Cartau , MARDI 03 MARS 2020

Les données nominatives de production (RH, patients, étudiants, etc.) sont accessibles aux professionnels qui les traitent (services RH, praticiens, enseignants, etc.), mais pas seulement. Qui n’a jamais eu besoin de mettre en place une base de formation, à partir d’un jeu de données réelles, qui n’a jamais eu besoin de transmettre à son éditeur un extract d’une DB pour analyser un bug tenace ? Il n’est pas question de rendre inintelligible des données de production aux adminsys eux-mêmes (qui de toute manière ont accès à tout, sauf à mettre en œuvre des moyens financièrement délirants), mais bien de pseudonymiser (remplacer les identités par des codes, la table de correspondance étant séparée) ou d’anonymiser une base (rendre quasi impossible le fait de remonter aux individus physiques avec des moyens « normaux »), pour la transmettre à des tiers. Petit comparatif de trois solutions.  

A priori, on se dit que les meilleurs pour anonymiser une DB sont les éditeurs de DB eux-mêmes. Je suis donc allé faire un petit tour sur le site d’Oracle et rapidement on tombe sur une solution de « Data Masking and Subsetting » (la fiche descriptive n’est pas datée, je ne suis pas en mesure de dire si elle est récente ou pas, mais elle est en tout cas postérieure à 2016). Le concept de « data masking » est simple : il s’agit de supprimer des colonnes ou des lignes dans une table. Il existe depuis au moins la version 92 de SQL sous la forme de vues (Create View). On se demande ce qui a bien pu passer par la tête des rédacteurs de la fiche pour en faire un produit marketing (un élève de 3e en stage de découverte à occuper peut-être ?). À noter que si le masquage de colonnes est statique, celui des lignes peut être dynamique par l’insertion d’une clause « Where ». Le « data subsetting » est plus intéressant car il consiste à remplacer des données réelles par des substituts, le tout en live sur une base de production (le requêteur ne voyant que ce que le Data Subsetting lui laisse voir) ou sur une seconde base dédiée à l’interrogation. Le remplacement peut être réalisé par des outils plus ou moins sophistiqués : remplacement en un pour un, remplacement conditionnel avec algorithmes de calcul, appel à une procédure stockée, etc. Cette solution correspond à une approche purement technique de l’anonymisation, est totalement propriétaire et ne doit pas être en tête de gondole de l’éditeur : en dix ans de poste de RSSI et après deux années de RGPD, pas une seule fois je n’ai vu de communication Oracle sur ce sujet (qui a peut-être d’autres outils en magasin mais que je n’ai pas trouvés) ni entendu parler d’une implémentation dans le monde de la santé (mais bon, je n’ai pas la prétention d’être en ligne directe avec les 3 000 établissements du pays). Bref, on est dans l’entrée de gamme.

Plus intéressante est l’approche d’Arcad Software. Fondamentalement, les mêmes principes de base sont adoptés, à savoir triturer de la donnée pour la rendre anonyme. Mais, première différence, l’outil est totalement agnostique et fonctionne a priori avec tous les moteurs SGBD. Deuxième différence, même si, comme dans la solution Oracle, une plateforme d’administration centralisée permet de construire les processus d’anonymisation, il existe un moteur de simulation pour visualiser le résultat potentiel : pour des algorithmes d’anonymisation simple, on ne voit pas l’utilité, mais dès que cela se complique, c’est bien de pouvoir visualiser le résultat avant de filer toute la base RH à l’éditeur. À noter que le produit fonctionne sur la base d’une création de DB bis : contrairement au concept de vue, il ne peut pas fonctionner « à la volée » pour tout type de SGBD ; c’est le prix de l’agnosticisme. Troisième différence, et elle est de taille, le produit propose une bibliothèque d’API pour les classiques tels les numéros de sécu, de CB, d’immatriculation de véhicules, etc. Bref, un gros toolkit bien utile et qui peut couvrir un bon paquet d’usages, d’autant que la solution met à disposition des outils de scripting qui permettent de construire ses propres algorithmes internes spécifiques au métier. La plupart des besoins d’anonymisation sont couverts, sauf des cas très précis qui relèvent essentiellement de la recherche ou de besoins très spécifiques, voir plus loin.

Prenons plutôt un exemple d’usage, qui correspond à un cas réel. Imaginons qu’il faille transmettre aux services Transport de la Ville la liste des agents de l’établissement de santé (qui est souvent le premier employeur) pour redéfinir la carte des bus et des trams. Ce qui intéresse le service Transport est évidemment les adresses physiques (rue et numéro de rue) et, bien entendu, il est hors de question de transmettre ces deux colonnes qui sont totalement identifiantes. Ne transmettre que la colonne « Rue » sans les numéros n’est pas utile puisque, dans des rues très longues, habiter au numéro 10 ou au numéro 510 n’a pas le même impact sur l’emplacement de l’arrêt de bus. Les approches algorithmiques classiques conduisent à transmettre le nom de la rue en première colonne, et une plage de numéros (par exemple « 01-50 », ou « 51-100 ») en seconde colonne, ce qui permet d’anonymiser a minima le fichier. Le produit d’Arcad Software permet de le faire très facilement. Attention cependant : cette approche algorithmique peut rendre complexe dans certains cas l’anonymisation des données avec un niveau de sécurité suffisant, et peut devenir un projet à part entière dans le projet.

Et puis, je suis tombé sur WeData.

À suivre…

#production##formation#software#RGPD