Databases & Storage

Brume 2.1 adds deterministic FK-safe pseudonymization for PostgreSQL 12-18

Key Takeaway

Brume 2.1 produces referentially intact, pseudonymized PostgreSQL database copies using format-preserving encryption and deterministic transformations keyed by user secrets.

Summary

Brume 2.1, released under Apache 2.0, addresses a persistent operational problem for PostgreSQL teams: creating realistic test and debug datasets without exposing production personal data or breaking foreign key relationships. The tool reads from a source database and writes transformed output to either a target database or a .sql file, applying column-level pseudonymization strategies before any data is persisted.

The release supports PostgreSQL versions 12 through 18 and offers packages for Debian/Ubuntu, RHEL/Fedora, and macOS. Its deterministic output guarantees that identical inputs with the same secret produce identical pseudonyms across all releases within a major version, enabling stable test fixtures and reproducible debug sessions.

Pseudonymization strategies and referential integrity

  • Column-level transformation strategies: Brume provides FAKE for synthetic values, MASK for partial reveals, HASH for one-way hashing, NULLIFY for data removal, FPE_ID and FPE_UUID for format-preserving encryption of identifiers, and DATE_SHIFT for preserving date distributions while altering actual values.
  • Deterministic keyed output: All transformations use user-provided secrets as keys, ensuring that the same input consistently produces the same pseudonym across runs and releases within a major version.
  • Foreign key preservation: Format-preserving encryption rewrites primary keys and their corresponding foreign keys identically, maintaining referential integrity without disabling triggers or suspending constraints.
  • Cross-table consistency via linked_columns: Values shared across tables without formal foreign key relationships, such as an email appearing in both users and audit_logs, receive identical pseudonyms throughout the extract.
  • Declarative subsetting and configuration: Row-level filters with configurable foreign-key traversal depth produce self-contained extracts, controlled by a version-controllable brume.yml file supporting semantic types and JSONB path targeting.

Why it matters

For Linux-based PostgreSQL deployments in regulated industries, Brume offers a practical alternative to ad-hoc masking scripts that routinely corrupt database relationships. The tool's audit-friendly, code-reviewable configuration aligns with GDPR Articles 25 and 32 requirements for pseudonymization, reducing compliance overhead for data protection officers while preserving developer productivity in bug reproduction and testing workflows.

Original reference: www.postgresql.org →