how-to/9-conclusion
Conclusion
Clean up !
DROP EXTENSION anon CASCADE;REASSIGN OWNED BY jack TO postgres;
REVOKE ALL ON SCHEMA public FROM jack;
REASSIGN OWNED BY paul TO postgres;
REASSIGN OWNED BY pierre TO postgres;DROP DATABASE IF EXISTS boutique;DROP ROLE IF EXISTS jack;
DROP ROLE IF EXISTS paul;
DROP ROLE IF EXISTS pierre;Many Masking Strategies
- Static
Masking
- perfect for \“once-and-for-all\” anonymization
 
 - Dynamic
Masking
- useful when one user is untrusted
 
 - Anonymous
Dumps
- can be used in CI/CD workflows
 
 - Generalization
- good for statistics and data science
 
 
Many Masking Functions
- Destruction and partial destruction
 - Adding Noise
 - Randomization
 - Faking and Advanced Faking
 - Pseudonymization
 - Generic Hashing
 - Custom masking
 
RTFM -> Masking Functions
Advantages
- Masking rules written in SQL
 - Masking rules stored in the database schema
 - No need for an external ETL
 - Works with all current versions of PostgreSQL
 - Multiple strategies, multiple functions
 
Drawbacks
- Does not work with other databases (hence the name)
 - Lack of feedback for huge tables (> 10 TB)
 
Also…
Other projects you may like
- pg_sample : extract a small dataset from a larger PostgreSQL database
 - PostgreSQL Faker : An advanced faking extension based on the python Faker lib
 
Help Wanted!
This is a free and open project!
labs.dalibo.com/postgresql_anonymizer
Please send us feedback on how you use it, how it fits your needs (or not), etc.
This is a 4 hour workshop!
Sources are here: gitlab.com/dalibo/postgresql_anonymizer
Download the PDF Handout
Questions?
- :::
 
- :::
 
- :::
 
- :::
 
- :::
 
- :::
 
- :
 
::: {.cell .code}
:::