/dbzar

🔁👻 Agnostic DB Anonymizer

Primary LanguageTypeScriptMIT LicenseMIT

DBZar

Agnostic DB Anonymizer

npm npm-beta Commitizen friendly XO code style semantic-release License: MIT GitHub Repo stars npm


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:

  1. Anonymizing production servers for local development.
  2. 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:

  1. Mask "firstName" in PostgresSQL
dbzar anon-col mask -u postgresql:/localhost -db test -t users -c firstName

// { "firstName": "John" } => { "firstName": "****" }
  1. 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
  1. 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
  1. Run the anonymizer
dbzar anon-db mongodb://example:example@localhost

Will:

  1. mask the firstName column in users table (replacing letters with default *).
  2. mask the lastName column in users table (replacing letters with #).
  3. fake the name column in products 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

  1. MongoDB
  2. PostgresSQL
  3. MariaDB
  4. MySQL

Future support:

  • Neo4J
  • SQLite
  • CSV
  • DynamoDB
  • Parquet
  • JSON
  • XML
  • XLSX