This repository contains comprehensive documentation for using PostgreSQL Anonymizer, a powerful extension for masking and anonymizing sensitive data in PostgreSQL databases.
• Step-by-step implementation of multiple anonymization techniques
• Practical examples of masking views, dynamic masking, and pseudonymization
• Real-world case studies from healthcare and financial sectors
• Performance optimization strategies
• Advanced features including differential privacy and data synthesis
With data breaches costing an average of $4.45M in 2023, protecting sensitive data while maintaining its utility is crucial. This guide provides practical solutions for:
GDPR, HIPAA, and CCPA compliance Secure development/testing environments Safe data sharing with third parties Privacy-preserving analytics
-
- Docker installation and setup
- Connection information
- Container management
-
- Creating tables with sensitive data
- Sample data for different scenarios
- Test data generation
-
- Basic anonymization functions
- Partial data masking
- Randomization functions
- Pseudonymization functions
- Generalization functions
- Noise addition
- Dummy data generation
- Text masking
-
- Masking views
- Dynamic masking with security labels
- Static masking
- Anonymous dumps
- Pseudonymization
- K-anonymity
-
- Creating roles with different access levels
- Granting permissions
- Implementing dynamic masking
- Creating role-specific views
- Using materialized views
- Testing access control
-
- Exporting anonymized data
- Importing anonymized data
- Creating anonymized copies
- Scheduled exports
- Data transfer between environments
- Selective data export
-
- Planning your anonymization strategy
- Implementation best practices
- Security considerations
- Performance optimization
- Monitoring and maintenance
-
- Installation issues
- Permission issues
- Function errors
- Performance issues
- Docker-specific issues
- Debugging tips
-
Advanced Anonymization Techniques
- Detailed pseudonymization implementation
- K-anonymity for statistical data
- L-diversity and T-closeness
- Security labels explained
- Cross-table anonymization
-
Blog Post: Securing Sensitive Data in PostgreSQL
- Comprehensive guide to data anonymization
- Real-world case studies
- Implementation examples
- Visual diagrams and explanations
All the SQL code examples from the documentation are also available as standalone SQL scripts in the sql directory:
- Setup and Initialization
- Sample Data Creation
- Masking Views
- Dynamic Masking
- Pseudonymization
- K-Anonymity
- Advanced Techniques
- Data Export
-
Start the PostgreSQL Anonymizer Docker container:
docker run -d --name pg-anon -e POSTGRES_PASSWORD=mysecretpassword -p 5433:5432 registry.gitlab.com/dalibo/postgresql_anonymizer:stable
-
Connect to the database:
PGPASSWORD=mysecretpassword psql -h localhost -p 5433 -U postgres -d postgres
-
Initialize the extension:
SELECT anon.init();
-
Test a basic anonymization function:
SELECT anon.partial_email('john.doe@example.com');
- Official PostgreSQL Anonymizer Documentation
- PostgreSQL Anonymizer GitHub Repository
- PostgreSQL Documentation
This documentation is provided under the MIT License. The PostgreSQL Anonymizer extension is licensed under the PostgreSQL License.
Contributions to improve this documentation are welcome. Please submit pull requests or open issues to suggest improvements or report errors.
-
Start the PostgreSQL Anonymizer Docker container:
docker run -d --name pg-anon -e POSTGRES_PASSWORD=mysecretpassword -p 5433:5432 registry.gitlab.com/dalibo/postgresql_anonymizer:stable
-
Connect to the database:
PGPASSWORD=mysecretpassword psql -h localhost -p 5433 -U postgres -d postgres
-
Initialize the extension:
SELECT anon.init();
-
Test a basic anonymization function:
SELECT anon.partial_email('john.doe@example.com');
- Official PostgreSQL Anonymizer Documentation
- PostgreSQL Anonymizer GitHub Repository
- PostgreSQL Documentation
This documentation is provided under the MIT License. The PostgreSQL Anonymizer extension is licensed under the PostgreSQL License.
Contributions to improve this documentation are welcome. Please submit pull requests or open issues to suggest improvements or report errors.