DBZar
Agnostic DB Anonymizer
DBZar (Database + "stranger" in Hebrew) let you mask/scramble/fake fields in any given database, just add a connection string and anonymize away!
Great for:
- Anonymizing production servers for local development.
- General utility to manipulate existing databases easily.
⭐ Highlights
- Anonymize single columns (
anon-col
) - Anonymize entire databases (
anon-db
) - Manipulate data by masking, scrambling, faking and more
- Built-in support to famous databases
- Use via CLI or API and Docker
- Configuration options
📃 Full Documentation
Available here: Documentation.
💻 Install
npm i --save-dev dbzar
// OR
yarn add -D dbzar
// OR
npx dbzar
👻 Usage
CLI
anon-col
Anonymize a single column
(⚠ Changes whichever db provided so use with caution)
Usage: dbzar anon-col [options] [command]
Anonymize a single column in a table
Options:
-skip --skip-confirm skip confirmation
-u --uri Connection string
-db --database Database name
-t --table Table name
-c --column Column name
-h, --help display help for command
Commands:
scramble [options] scramble a single column
fake [options] fake a single column
mask [options] mask a single column
help [command] display help for command
Examples:
- Mask "firstName" in PostgresSQL
dbzar anon-col mask -u postgresql:/localhost -db test -t users -c firstName
// { "firstName": "John" } => { "firstName": "****" }
- Scramble "lastName" in MongoDB
dbzar anon-col scramble -u mongodb://localhost -db test -t users -c lastName
// { "lastName": "Smith" } => { "lastName": "hSmti" }
anon-db
Anonymize entire database
Usage: dbzar anon-db [options] [uri]
Anonymize an entire database
Arguments:
uri connection string
Options:
-h, --help display help for command
- Create Configuration file (see Configuration)
Example:
// .dbzarrc
dbName: db1
tables:
- name: users
columns:
- name: firstName
provider: mask
- name: lastName
provider:
type: mask
options:
character: "#"
- name: products
columns:
- name: name
provider:
type: fake
options:
fakeValue: animal
- Run the anonymizer
dbzar anon-db mongodb://example:example@localhost
Will:
-
mask
thefirstName
column inusers
table (replacing letters with default*
). -
mask
thelastName
column inusers
table (replacing letters with#
). -
fake
thename
column inproducts
table (replacing it with a random animal name, for example: "Fish").
From:
// users table
{ "firstName": "John", "lastName": "Doe" }
// products table
{ "name": "Product1", "price": 100 }
To:
// users table
{ "firstName": "****", "lastName": "###" }
// products table
{ "name": "Fish", "price": 100 }
API
See usage/API
Docker
Docker Image: nitzano/dbzar
Usage:
// pull the image
docker pull nitzano/dbzar
// run command
docker run nitzano/dbzar anon-col ...
✅ Supported Databases
- MongoDB
- PostgresSQL
- MariaDB
- MySQL
Future support:
- Neo4J
- SQLite
- CSV
- DynamoDB
- Parquet
- JSON
- XML
- XLSX