Module Y5
Dalibo SCOP
24.09
29 août 2024
Formation | Module Y5 |
Titre | Masquage de données & postgresql_anonymizer |
Révision | 24.09 |
https://dali.bo/y5_pdf | |
EPUB | https://dali.bo/y5_epub |
HTML | https://dali.bo/y5_html |
Slides | https://dali.bo/y5_slides |
Cette formation est sous licence CC-BY-NC-SA. Vous êtes libre de la redistribuer et/ou modifier aux conditions suivantes :
PostgreSQL® Postgres® et le logo Slonik sont des marques déposées par PostgreSQL Community Association of Canada.
Ce document ne couvre que les versions supportées de PostgreSQL au moment de sa rédaction, soit les versions 12 à 16.
Nous allons découvrir :
Principe :
Principe :
Cet exemple nécessite :
anon
)
Au fil des années, Paul a accumulé des données sur ses clients et leurs achats dans une base de données très simple.
Il a récemment installé un nouveau logiciel de ventes, et l’ancienne base est obsolète.
Avant de l’archiver, il voudrait en supprimer toutes les données personnelles.
Nous allons voir :
Paul a 2 employés :
Nous allons voir :
Paul a un site web qui dispose d’une section commentaires où les utilisateurs peuvent partager leurs points de vue.
Paul a engagé un prestataire pour développer le nouveau design de son site web.
Le prestataire lui demande un export de la base de données.
Paul veut « nettoyer » le dump et y retirer toute information personnelle qui pourrait figurer dans la section commentaire.
Paul a embauché des dizaines de salariés au fil du temps.
Il conserve une trace sur la couleur de leurs cheveux, leurs tailles, et leurs conditions médicales.
Paul souhaite extraire des statistiques depuis ces détails.
Il fournit des vues généralisées à Pierre.
Nous allons voir :
DROP TABLE IF EXISTS employee CASCADE;
CREATE TABLE employee (
id INT PRIMARY KEY,
full_name TEXT,
first_day DATE, last_day DATE,
height INT,
hair TEXT, eyes TEXT, size TEXT,
asthma BOOLEAN,
CHECK(hair = ANY(ARRAY['bald','blond','dark','red'])),
CHECK(eyes = ANY(ARRAY['blue','green','brown'])) ,
CHECK(size = ANY(ARRAY['S','M','L','XL','XXL']))
);
\c boutique paul
DROP MATERIALIZED VIEW IF EXISTS v_staff_per_month ;
CREATE MATERIALIZED VIEW v_staff_per_month AS
SELECT
anon.generalize_daterange(first_day,'month') AS first_day,
anon.generalize_daterange(last_day, 'month') AS last_day
FROM employee ;
GRANT SELECT ON v_staff_per_month TO pierre ;
RTFM -> Fonctions de masquage
D’autres projets qui pourraient vous plaire :
Faker
.C’est un projet libre !
https://labs.dalibo.com/postgresql_anonymizer
Merci de vos retours sur la manière dont vous l’utilisez, comment il répond ou non à vos attentes, etc.
N’hésitez pas, c’est le moment !