Maquerade - high-performance, real-time, multi-location data obfuscation tool

License Documentation Status
https://raw.githubusercontent.com/BBVA/masquerade/master/docs/source/_static/images/masquerade-logo-small.png

In a nutshell Masquerade can hide your sensible data. We use it to upload our data to Artificial Intelligence clouds safely.

Why Masquerade

Work with data are a real need, but we can export information with sensitive data. Masquerade help you to do that.

Contributions are welcome, see CONTRIBUTING.md or skim existing tickets to see where you could help out.

Documentation

You can find the complete documentation at: Documentation

Authors

Masquerade was made by Security BBVA-Labs Team members:

License

API-Check is Open Source and available under the Apache 2 license.

Contributions

Contributions are very welcome. See CONTRIBUTING.md or skim existing tickets to see where you could help out.

Contents

Overview

Masquerade has the power to read from many different locations as source, and export the obfuscated data to a different location in streaming and with a very high performance.

_images/masquerade_working_mode.png

Examples:

  1. You can read data from a S3 Bucket, obfuscate data, and export results to local file system.
  2. You can read data from a S3 Bucket, obfuscate data, and export results to HDFS File System.
  3. You can read data from a HDFS Filesystem, obfuscate data, and export results to Google Cloud Storage.
  4. You can read data from a S3 bucket, obfuscate data, and export results to another S3 Bucket.

Installation

To install Masquerade you need GoLang compilation tools.

Just make, it will put their binaries into $GOPATH/bin.

> make

Ensure that $GOPATH/bin it’s in your path:

> export PATH=$(go env GOPATH)/bin:$(go env GOROOT)/bin:$PATH

Overview

Masquerade allows different formats as input / output. Here you can find the complete list.

CSV

The simplest format.

There is two executables: maskcsvin and maskcsvout.

CSV -> MsgPack

> echo hello,World | maskcsvin > binary.out

Will return binary format of the csv.

From MsgPack -> CSV

> cat binary.out | maskcsvout

Will return “hello”,”World”.

A complete usage may be:

> echo hello,World | maskcsvin | maskcsvout

Will return “hello”,”World”. Notice that our process add quotes, thats because our binary don’t know how looks the original csv, so try to build the most “correct” one.

Custom separator

You can use another separator like ‘|’ or ‘@’. Just provide separator param.

> echo hello@World | maskcsvin -separator '@' | maskcsvout -separator '|'

Will return “hello”|”World”.

Overview

Masquerade allows different locations as sources / output. Here you can find the complete list.

RabbitMQ

To read from Rabbit use:

> maskrabbitin -dial amqp://guest:guest@localhost:5672/ -channel test

This command will consume the queue and output the content into Standard Output.

To write on Rabbit use:

> cat data | maskrabbitout -dial amqp://guest:guest@localhost:5672/ -channel test

This command will send lines from data file into RabbitMQ.

You can copy a queue using this commands together:

> maskrabbitin -dial amqp://guest:guest@localhost:5672/ -channel topicA | maskrabbitout -dial amqp://guest:guest@localhost:5672/ -channel topicB

HDFS

HDFS has stdio support, just use is as follows.

To read:

> hdfs dfs -cat data.csv

To write:

> cat data.csv | hdfs dfs -put - data.csv

S3

This services can be accesed with stdio support thru minio-cli

GCS (Google Cloud Storage)

This services can be accesed with stdio support thru minio-cli

Indices and tables