Prerequisites
🚀 Feature Proposal
Add an optional anonymization step to the file export: in the export dialog, let the user assign a per-column rule before writing the file. Proposed rules for a v1:
- Null / fixed value — replace with
NULL or ***
- Partial masking — e.g.
j***@***.com, keep first/last chars
- Deterministic hash (pseudonymization) — HMAC with a per-export key: the same input always produces the same output, so joins on anonymized keys (e.g.
user_id) still work across exported tables
Possible follow-ups: synthetic data (seeded faker for names/emails/addresses), generalization (birth date → year, zip → region), name-based heuristics to pre-suggest rules for columns like email, phone, name, ip.
Technically this fits nicely in the existing streaming export pipeline: a transform layer between the row stream and the CSV/JSON sinks, so it would work for all drivers (including plugins) with no driver changes. The database dump could adopt it later as a second step.
Motivation
Very common need: sharing production data with staging environments, external developers, support tickets or analytics without leaking personal data (GDPR / privacy). Today users have to post-process exports manually.
Note on wording: this should be presented as column anonymization / pseudonymization, not "GDPR compliance" — true anonymization under GDPR is a legal assessment (quasi-identifiers etc.) that no tool can guarantee by itself.
Example
Export dialog → "Anonymize columns" (optional) → per-column rule selector → file is written with transformed values, e.g. email → a3f9…@masked, name → ***, user_id → HMAC hash (stable across tables).
Happy to work on a PR if there's interest — opening this first to discuss scope and UX.
Prerequisites
🚀 Feature Proposal
Add an optional anonymization step to the file export: in the export dialog, let the user assign a per-column rule before writing the file. Proposed rules for a v1:
NULLor***j***@***.com, keep first/last charsuser_id) still work across exported tablesPossible follow-ups: synthetic data (seeded faker for names/emails/addresses), generalization (birth date → year, zip → region), name-based heuristics to pre-suggest rules for columns like
email,phone,name,ip.Technically this fits nicely in the existing streaming export pipeline: a transform layer between the row stream and the CSV/JSON sinks, so it would work for all drivers (including plugins) with no driver changes. The database dump could adopt it later as a second step.
Motivation
Very common need: sharing production data with staging environments, external developers, support tickets or analytics without leaking personal data (GDPR / privacy). Today users have to post-process exports manually.
Note on wording: this should be presented as column anonymization / pseudonymization, not "GDPR compliance" — true anonymization under GDPR is a legal assessment (quasi-identifiers etc.) that no tool can guarantee by itself.
Example
Export dialog → "Anonymize columns" (optional) → per-column rule selector → file is written with transformed values, e.g.
email→a3f9…@masked,name→***,user_id→ HMAC hash (stable across tables).Happy to work on a PR if there's interest — opening this first to discuss scope and UX.