Anonymiser une base de données MySQL et PostgreSQL

Database Anonymizer est un outil écrit en GO et qui permet d'anonymiser ou supprimer des données d'une base de données MySQL ou PostgreSQL.

Il répond à plusieurs cas d'usage comme permettre de transférer une copie de base de données anonymisée à des développeurs et des développeuses ou répondre à la nécessité d'anonymiser ou supprimer des données dans le cadre du RGPD (Règlement général sur la protection des données) selon les durées de conservation définies dans le registre des traitements.

J'en profite d'ailleurs pour faire une parenthèse au sujet du RGPD. Avec mon associé Alexis Gabry, nous éditons une solution RGPD pour accompagner les DPO. ProDPO offre une solution complète pour gérer les missions de DPO de manière simple et collaborative 😁

Database Anonymizer inclue une grande quantité de générateurs de données aléatoires. Il permet également de générer des données via des modèles écrits en Twig. Vous pouvez spécifier des règles précises pour chaque table ou bien des règles globales appliquées sur chacunes des tables de votre configuration.

Pour faire fonctionner le projet, il suffit de définir un fichier de configuration comme suit :

Ensuite, il faut lancer database-anonymizer en spécifiant la chaine de connexion à la base de donnée et le chemin vers la configuration.

database-anonymizer --dsn "mysql://username:password@tcp(db_host)/db_name" --schema ./schema.yaml
database-anonymizer --dsn "postgres://username:password@db_host:5432/db_name" --schema ./schema.yaml

Vous trouverez la liste complète des générateurs sur la page Gitnet et vous pouvez bien sur télécharger la première version ici.

J'ai encore du travail à faire sur le projet mais il est en bonne voix ! Si vous désirez l'essayer et me faire des retours, j'en serai ravi ! 😀

Streaming Owncast et Twitch

Streaming Owncast et Twitch

Il y a quelques années de cela, j'avais commencé à streamer des sessions de développement su…

Changements importants avec Custom Menu 5

Changements importants avec Custom Menu 5

Custom menu est un projet que j'ai lancé il y a de nombreuses années. Il a été initialement …

Synchronisation de clients FreeTube

Synchronisation de clients FreeTube

FreeTube est un client lourd pour accéder aux contenus de YouTube. La protection de la vie p…


  • kwalnuts
  • Hello Simon, merci pour ce projet super intéressant. J'ai pu le tester sur des bases de données à forte volumétrie (de 500k à 1M d'entrée) et je me retrouve toujours avec des out of memory. Tu aurais une astuce pour contourner ce problème ? Merci :)

  • Simon
  • Hello et merci pour ce feedback!

    J'ai eu l'occasion de l'utiliser sur de grosses tables avec beaucoup d'enregistrement (de l'ordre du million) et je n'ai pas eu ce problème. C'est effectivement lié à la mémoire disponible sur la machine qui exécute le programme. On m'a soufflé une idée d'algo pour optimiser à la fois la difficulté de la mémoire mais aussi concernant le temps d'exécution mais je n'ai pas encore eu le temps de tester une implémentation.

    Pour gérer ta problématique, tu peux cependant exploiter les fonctionnalités existants en paginant manuellement tes données :

        - table: foo
          query: 'select * from foo limit 0, 100000'
        - table: foo
          query: 'select * from foo limit 100000, 200000'
       - [...]
    

    En espérant que ça puisse résoudre ton problème !

  • Simon
  • Un gros refactoring est en cours pour optimiser le processus d'anonymisation avec un travail important sur la mémoire nécessaire aux traitements.

Ajouter un commentaire

Votre commentaire - Vous pouvez utiliser du markdown

Renouveler