Protéger les données sensibles avec PostgreSQL Anonymizer

Par Sabra Picaud & Ludovic Chapellière. Publié le 24/04/2026

Dans un contexte où la protection des données personnelles est devenue une obligation légale et éthique incontournable (RGPD en tête), les équipes de développement sont de plus en plusconfrontées à une question concrète : comment manipuler des données réalistes en environnement de développement ou de test sans exposer les données de production ? C'est précisément là qu'intervient PostgreSQL Anonymizer, une extension open source qui intègre nativement un moteur de masquage directement dans PostgreSQL.

Qu'est-ce que PostgreSQL Anonymizer ?

 

PostgreSQL Anonymizer ( anon) est une extension PostgreSQL open source qui permet de masquer, brouiller ou anonymiser des données sensibles directement au niveau de la base de données. Contrairement à des solutions tierces qui opèrent en dehors du SGBD, cette extension s'intègre nativement à PostgreSQL via le système de Security Labels, ce qui la rend particulièrement transparente et maintenable.

 

Installation et initialisation

L'activation de l'extension se fait en quelques lignes SQL :

 

 

Une fois installée, vous pouvez définir des règles de masquage sur vos colonnes sensibles à l'aide de Security Labels :

 

 

Ensuite, il ne reste plus qu'à appliquer ces règles :

 

Les stratégies de masquage disponibles

 

PostgreSQL Anonymizer propose plusieurs approches pour transformer les données sensibles, adaptées à différents contextes :

Destruction : remplace la valeur par une constante, par exemple 'CONFIDENTIEL'. Simple et radical.

Randomisation : génère une valeur aléatoire du bon type, par exemple anon.random_date() pour une date ou anon.random_int_ between(0, 100) pour un entier.

Faking : produit des données fausses mais cohérentes et réalistes, avec support des locales. Exemples : anon.fake_last_name(), anon.dummy_last_name_locale('fr_FR'), anon.fake_email()...

Partial Scrambling : masque partiellement une valeur en conservant quelques caractères visibles. Exemple : anon.partial('abcdefgh', 1, 'xxxx', 3) produit axxxxfgh. Utile pour les numéros de téléphone ou les IBAN.

 

Les méthodes d'anonymisation

 

Au-delà des stratégies de transformation, l'extension propose quatre méthodes d'application selon le cas d'usage :
 

Static Masking

Les données sont modifiées directement en base, de façon irréversible. Adapté à une anonymisation définitive d'un jeu de données archivé ou exporté.
 


Dynamic Masking

Les données réelles restent en base, mais certains rôles PostgreSQL ne voient que les données masquées via des vues. Parfait pour donner un accès restreint à des tiers sans toucher aux données originales.

 

Generalization

Plutôt que de supprimer une information, on la généralise. Par exemple, un âge précis devient une tranche d'âge, une adresse devient une ville. Utile pour des besoins statistiques ou analytiques.

 

Anonymous Dumps

C'est probablement la méthode la plus utilisée en contexte de développement. Elle permet de générer un dump PostgreSQL dont les données sensibles sont déjà anonymisées, que ce soit directement depuis une base de production ou via une image Docker dédiée.

Le flux typique ressemble à ceci :

  1. Le Database Owner définit les règles de masquage en production
  2. Un pg_dump est lancé, produisant un dump anonymisé
  3. Ce dump est restauré dans l'environnement de test ou de développement
  4. Les développeurs travaillent avec des données réalistes, sans jamais accéder aux données réelles

 

 

Une variante utilise l'image Docker PostgreSQL Anonymizer : on lui fournit le dump SQL brut et les règles de masquage, et elle produit un dump anonymisé en sortie — sans même avoir besoin d'une instance PostgreSQL dédiée.

 

Avantages et limites

 

Ce qu'on apprécie :

  • Intégration native à PostgreSQL, sans couche applicative supplémentaire
  • Règles déclaratives directement en SQL, versionnables avec le schéma
  • Multiples stratégies couvrant la majorité des cas d'usage
  • Support des locales pour des fausses données cohérentes avec le contexte métier


Ce qu'il faut garder en tête :

  • L'extension est exclusivement dédiée à PostgreSQL : pas question de l'utiliser avec MySQL, MariaDB ou Oracle
  • Les performances peuvent varier selon la méthode choisie et le volume de données, notamment pour le masquage statique sur de grandes tables

En résumé


PostgreSQL Anonymizer est un outil solide et pragmatique pour tout projet qui manipule des données personnelles. Sa force réside dans sa proximité avec PostgreSQL : les règles de masquage vivent avec le schéma, les transformations sont lisibles et maintenables, et les différentes méthodes couvrent la quasi-totalité des scénarios rencontrés en entreprise. Si vous utilisez PostgreSQL et que vous cherchez une solution simple pour sécuriser vos pipelines de données entre production et développement, cette extension mérite clairement une place dans vos process.