RGPD et Drupal, mes amours - Anonymisation des données en question

Mardi 28 Décembre 2021

Le RGPD a considérablement modifié notre relation aux données personnelles, et c'est tant mieux. Dans nos travaux quotidiens, comment faisons-nous pour traiter l'épineux problème de l'anonymisation des données des utilisateurs sur nos environnements de développement et de recette. La réponse en quelques lignes, avec drupal ou drush...

Photo illustrant des anonymes en promenade sous un pont

L'anonymisation des données, une contrainte forte exigée par le RGPD

Nous sommes configurons régulièrement, lors de projets de développement, de refonte ou de reprise de maintenance de sites Drupal de multiples environnements d'hébergement (en local pour le développement avec Lando, sur notre infrastructure dédiée pour les environnements de qualification et de production. 

Pour répondre aux exigences du RGPD, nous devons anonymiser les données personnelles présentes dans les bases de données Drupal (emails, adresses, noms, informations concernant les utilisateurs).

Les fonctions, les modules disponibles, les cas d'usages

La fonction Drush Sql Sanitize

Il existe une fonction SQL-SANITIZE qui peut être utilisée avec drush. Elle exécute des opérations de nettoyage sur la base de données d'un site. Elle est utilisée de la manière suivante :

drush sql-sanitize ou drush sqlsan

Vous trouverez la documentation ici - 
https://drushcommands.com/drush-9x/sql/sql:sanitize/

Des modules Drupal

Le module User Sanitize, basé sur cette fonction, peut être utile avec son interface utilisateur (UI) et sa page de configuration. Il n'est pas compatible avec Drupal 9 mais il est très facile de le rendre compatible - c'est un module très bref.
Le mainteneur du module cherche un relai ! Les opérations de mise à jour ont commencé mais se sont stoppées il y a 3 ans - https://www.drupal.org/project/user_sanitize/issues/3002688.

Ces deux méthodes ne résolvent pas le fait qu'il existe des copies de la base de données non cryptées sur vos environnements locaux ou vos serveurs. En effet, les bases de données ne sont cryptées qu'après leur import sur l'environnement de développement. Entre l'export de l'environnement de production et l'import, les données ne seront pas anonymisées. En d'autres termes, ces solutions peuvent être utiles pour des sites déjà existants sur les environnements cibles.

Module GDPR

Le module Mask User Data est aussi disponible et offrait à peu près les mêmes fonctionnalités que sql-sanitize sauf qu'il était basé sur la bibliothèque php Faker (https://github.com/fzaninotto/Faker) et ajoutait une fonction à Drush : drush mud. Il est désormais obsolète et remplacé par le module populaire "General Data Protection Regulation". Ce module, toujours en version Alpha, propose une commande Drush avec objectif principal d'empêcher les développeurs d'accéder à des données personnelles sensibles des utilisateurs du site en obscurcissant les champs configurés des décharges SQL.

drush gdpr-sql-dump

Le projet GDPR Dump

Un projet GDPR Dump a été lancé sur Github pour remplacer la fonction mysqldump par une alternative qui exporte la base de données déjà chiffrée -
https://github.com/machbarmacher/gdpr-dump.

Une extension est disponible pour une base de données Drupal. Exemple d'utilisation :

mysqldump drupal --host=xxxx --user=drupaluser --password=xxxxxxxx users_field_data --gdpr-expressions='{"users_field_data":{"name":"uid","mail":"uid","pass":"\"\""}}' --debug-sql

De même, un ticket est ouvert sur le projet Drupal Backup & Migrate pour anonymiser les données lors du backup : https://www.drupal.org/project/backup_migrate/issues/2975065.

C'est la raison pour laquelle il existe un projet en sand box - Backup And Migrate Sanitizer (GDPR).

Conclusion

  • Nous avons généralisé l'utilisation de la commande Drush sql-sanitize sur tous nos environnements de développement et de pré-production. Par défaut, elle intervient sur les tables utilisateurs (users_field_data), sur les champs (user__*), sessions et commentaires (comment_field_data). Les données sont remplacées par des valeurs aléatoires par type de données.
  • Si nécessaire, nous réfléchissons à porter le module User Sanitize en Drupal 9.
  • Nous avons généralisé l'utilisation de la commande sqldump avec les options de cryptage de données sur les nouveaux projets importés.