Secure SDK/vault for personal records/PII built to comply with GDPR

Databunker solution

Databunker

Databunker is a network-based, self-hosted, GDPR compliant, secure vault for personal data or PII: https://databunker.org/

Join Databunker Slack channel

npm install @databunker/store npm install @databunker/session-store

Project demo is available at: https://demo.databunker.org/. Please add a star if you like our project.

We live in a world where the privacy of our information is nonexistent. The EU has been working to remediate this fallacy with GDPR, and the US (California) follows with a first sparrow called CCPA.

Databunker project is intended to ease the GDPR and CPRA compliance. It gives organizations easy-to-implement APIs and secure vault to store PII, and a privacy portal.

Databunker gives all of us, the real data owners, control of our data. Databunker allows us to know who is using our data, what is happening with our personal data and gives us the freedom to decide if we agree to that or not.

Databunker, when deployed correctly, replaces all the customer's personal records (PII) scattered in the organization's different internal databases and log files with a single randomly generated token managed by the Databunker service.

By deploying this project and moving all personal information to one place, you will comply with the following GDPR statement: Personal data should be processed in a manner that ensures appropriate security and confidentiality of the personal data, including for preventing unauthorized access to or use of personal data and the equipment used for the processing.

Diagram of old-style solution.

picture

Diagram of Solution with Databunker

picture

Getting started guide: https://databunker.org/doc/start/

Databunker installation guide: https://databunker.org/doc/install/

Demo

Project demo is available at: https://demo.databunker.org/

You can access the demo UI using the following account credentials:

Phone: 4444
Captcha: type as displayed
Access code: 4444
Email: [email protected]
Captcha: type as displayed
Access code: 4444

Demo root token: DEMO


Node.js Examples

  1. Node.js example implementing passwordless login using Databunker: https://github.com/securitybunker/databunker-nodejs-passwordless-login

  2. Node.js example with Passport.js, Magic.Link and Databunker: https://github.com/securitybunker/databunker-nodejs-example

  3. Secure Session Storage for Node.js apps: https://databunker.org/use-case/secure-session-storage/#databunker-support-for-nodejs

Node.JS modules

  1. @databunker/store from https://github.com/securitybunker/databunker-store

  2. @databunker/session-store from https://github.com/securitybunker/databunker-session-store

Databunker benchmark results:

https://databunker.org/doc/benchmark/

Production deployments

Send us a note if you are running Databunker in production mode.

This project resolves most** of the GDPR requirements for you including:

NOTE: Implementing this project does not make you fully compliant with GDPR requirements and you still need to consult with an attorney specializing in privacy.

NOTE: When we use the term "Customer" we mean the data of the end-user that his information is being stored, shared, and deleted.

Right of access

Databunker extracts customer emailcustomer phone values out of the customers' personal records. It gives your customer passwordless access to his data stored under his account. This is done by generating a random access key send by email or by SMS. Your customer can sign in into Databunker, view information stored by Databunker, and make changes in compliance with a company's policy.

login form login with email verify login with code

Right to restrict processing / Consent withdrawal

Databunker can manage all of the customer's consents and agreements in one place. Your customer can withdraw consent and as a result restrict processing in his personal portal at Databunker. For example, your customer can block newsletter service. Your backend system can use Databunker as a collection of all agreements collected using the Databunker API.

Consent management Consent withdrawal

NOTE: Data bunker can call your backend script on a consent withdrawal (callback). You will have to handle these requests and remove the customer records from other 3rd party processing companies. For example web recording services, email gateways, etc...

Privacy by design

This product, from the architecture level and down to code was built to comply with strict privacy laws such as GDPR and CCPA. Deploying this project can make your architecture privacy by design compliant. For more info, check out the following article:

https://databunker.org/use-case/privacy-by-design-default/

Transparency and Accountability principle

Any system or customer connecting to Databunker must provide an access token to authorize any operation, otherwise, the operation will be aborted. An end customer can login to his profile with a random authorization code sent by email or SMS.

All operations with personal records are saved in the audit log.

Any customer can log in to his account at Data Bunker and view the full audit of activities performed on his profile.

Forget me

Right to be forgotten / Right to erasure

When your customer requests to exercise his right to be forgotten, his private records will be wiped out of the Data Bunker database, giving you the possibility to leave all internal databases intact while not impacting any of your other systems.

Upon customer removal request, Data bunker can call your backend script (callback) with the customer details. You will have to handle these requests and remove other customer records from 3rd party processing companies. For example from web recording services, email gateways, etc...

Forget me

NOTE: You will need to make sure that you do not have any customer identifiable information (PII) in your other databases, logs, files, etc...

Right to rectification/ Data Accuracy

Your customer can sign in to his personal account at Databunker and change his records, for example, change his name. Databunker can fire a callback operation with customer's details when a customer operation takes place.

Change profile

Right to data portability

Your customer can sign in to his personal account at Databunker and view and extract all his records stored at Databunker.

NOTE: You will need to provide your customers with a way to extract data from other internal databases.

Integrity and confidentiality

All personal data is encrypted. An audit log is written for all operations with personal records. Any request using Databunker API is done with HTTPS SSL certificate. The enterprise version supports Shamir's Secret Sharing algorithm to split the master key into a number of keys. A number of keys (that can be saved in different hands in the organization) are required to bring the system up.

NOTE

Implementing this project does not make you fully compliant with GDPR requirements and you still need to consult with an attorney specializing in privacy.


Databunker use cases

Detailed information can be found at https://databunker.org/use-case/


Blog posts, articles, or other resources that talk about Databunker:

  1. https://privacybunker.io/blog/gdpr-guide-for-startup-founders/
  2. https://dbweekly.com/issues/348
  3. https://www.freecodecamp.org/news/how-to-stay-gdpr-compliant-with-access-logs/
  4. https://news.ycombinator.com/item?id=26690279
  5. https://stackshare.io/databunker
  6. https://hackernoon.com/data-leak-prevention-with-databunker-xnn33u9
  7. https://anchor.fm/techandmain/episodes/Huawei--Microsoft-and-DataBunker--Yuli-Stremovsky-evl385
  8. https://github.com/expressjs/session
  9. https://databunker.org/

If you published an article about Databunker send us a link at [email protected]


Databunker quick start guide

Follow this article.


Contact us

If you have any questions, you can contact the development team at [email protected]

Join the project slack channel to talk with developers: https://databunker.slack.com/

Comments
  • Bump github.com/tidwall/gjson from 1.5.0 to 1.6.5 in /src

    Bump github.com/tidwall/gjson from 1.5.0 to 1.6.5 in /src

    Bumps github.com/tidwall/gjson from 1.5.0 to 1.6.5.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • Bump go.mongodb.org/mongo-driver from 1.3.0 to 1.5.1 in /src

    Bump go.mongodb.org/mongo-driver from 1.3.0 to 1.5.1 in /src

    Bumps go.mongodb.org/mongo-driver from 1.3.0 to 1.5.1.

    Release notes

    Sourced from go.mongodb.org/mongo-driver's releases.

    MongoDB Go Driver 1.5.1

    The MongoDB Go driver team is pleased to release 1.5.1 of the official Go driver.

    This release contains several bug fixes. Due to the issue below, we recommend all users upgrade to this version of the driver.

    Documentation can be found on pkg.go.dev and the MongoDB documentation site. BSON library documentation is also available on pkg.go.dev. Questions and inquiries can be asked on the MongoDB Developer Community. Bugs can be reported in the Go Driver Jira where a list of current issues can be found.

    This CVE describes a security issue with the driver's BSON marshalling system. BSON marshalling functions would incorrectly handle null bytes embedded in BSON key names and the pattern/options fields of a BSON regex value. BSON marshalling functions now correctly validate and error if there is an embedded null byte in BSON key names or the pattern/options fields of a BSON regex value. We recommend all users of the driver upgrade to this version.

    CVE ID: CVE-2021-20329 Title: Specific cstrings input may not be properly validated in the MongoDB Go Driver Description: Specific cstrings input may not be properly validated in the MongoDB Go Driver when marshalling Go objects into BSON. A malicious user could use a Go object with specific string to potentially inject additional fields into marshalled documents. This issue affects all MongoDB GO Drivers up to (and including) 1.5.0. CVSS score: 6.8 CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:N Affected products and versions, MongoDB Go Driver versions <= 1.5.0 Underlying operating systems affected: All

    For a full list of tickets included in this release, please see the links below:

    Bugs

    Tasks

    MongoDB Go Driver 1.5.0

    The MongoDB Go driver team is pleased to release 1.5.0 of the official Go driver.

    This release contains several new features and usability improvements for the driver.

    Documentation can be found on pkg.go.dev and the MongoDB documentation site. BSON library documentation is also available on pkg.go.dev. Questions and inquiries can be asked on the MongoDB Developer Community. Bugs can be reported in the Go Driver Jira where a list of current issues can be found.

    This release contains a new errors API for the primary mongo package. Users can now detect duplicate key errors, timeouts, and network errors via the mongo.IsDuplicateKeyError, mongo.IsTimeout, and mongo.IsNetworkError functions, respectively. Additionally, a new UpdateByID function has been added to the mongo.Collection type to update a single document with a given _id value.

    The Go Driver now supports using GCP and Azure key management services with the client-side field level encryption feature. In addition, AWS key management support has been enhanced to allow authenticating with temporary AWS credentials. See the MongoDB docs for more information about these improvements. Use of client-side field level encryption requires users to install the latest released version of libmongocrypt. Note: This means that existing applications that use this feature will need to upgrade the libmongocrypt dependency when upgrading to this driver version; otherwise, the application will fail to compile. Users can upgrade to the latest development release of libmongocrypt via the OS-specific instructions for macos, Windows, and Linux.

    Monitoring has now been added for various server events. A ServerMonitor set on a mongo.Client monitors changes on the MongoDB deployment it is connected to and reports the changes in the client's representation of the deployment.

    The driver will now error if a map with more than one key is used as a hint option, sort option, or for index creation. This is to prevent unexpected behavior, for example, an index being created with the keys in the wrong order.

    ... (truncated)

    Commits
    • 40c0e70 Update version to v1.5.1
    • 3a89e6c GODRIVER-1923 Error if BSON cstrings contain null bytes (#622)
    • 1a2534c GODRIVER-1935 Update scram/stringprep dependencies (#624)
    • 6ea353a GODRIVER-1918 Check for zero length in readstring (#613)
    • d5e11aa GODRIVER-1919 Support decoding ObjectIDs from hex strings in BSON (#610)
    • e0ed6d6 Update version to v1.5.1+prerelease
    • 6760875 Update version to v1.5.0
    • 19a368c GODRIVER-1911 Fix Windows/macos test failures for CSFLE (#603)
    • 2a5f9a4 GODRIVER-1879 Apply connectTimeoutMS to TLS handshake (#594)
    • 2c5b75b GODRIVER-1855 Support AWS authentication with temporary credentials in CSFLE ...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • Typo in Data Bunker diagram

    Typo in Data Bunker diagram

    https://raw.githubusercontent.com/securitybunker/databunker/master/images/databunker-solution.png Shows "Encryption is motion", should be "Encryption in motion"

  • PostgreSQL backend?

    PostgreSQL backend?

    Hi @stremovsky, thank you for such as great project. It definitely helps many developers on PII compliance.

    Just wondering is there a plan to support alternate DB like PostgreSQL? It is easier for self-hosting since there's existing tech stacks for this.

    Thanks in advance!

  • ValidateNewApp limits tables created

    ValidateNewApp limits tables created

    Given the line here, https://github.com/securitybunker/databunker/blob/master/src/userapps_api.go#L28 with implementation here: https://github.com/securitybunker/databunker/blob/bd6af1443b35445fc5a7a0c4f4f4c6837c7f020f/src/storage/mysql-storage.go#L871

    Does databunker limit the number of tables that can be created for users given the hardcoded 100 for SQL and 10 for SQLite? We seem to be encountering the 405 db limitation error after a while which gets fixed when databunker is re-upped. Can we get clarity on the purpose of the limit? Thank you!

  • Multiple access tokens?

    Multiple access tokens?

    Hey there, I was able to deploy databunker on a microk8s instance with openfaas. so far things are working fine and I even implemented a simple password less login mechanism. I was wondering if it is possible to generate more than just the root_key to access the databunker api, for example one for each user app, so that it is possible to distinguish the different systems that access a user's data. can other tokens than the root token be generated?

    Thank you for this great peace of software

Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.
Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

Themis provides strong, usable cryptography for busy people General purpose cryptographic library for storage and messaging for iOS (Swift, Obj-C), An

Jan 9, 2023
Frontier Chain is a blockchain application built using Cosmos SDK and Tendermint.

Frontier Chain Frontier Chain is a blockchain application built using Cosmos SDK and Tendermint. Setup Initialize the blockchain with one validator no

Jul 12, 2022
OmniFlix Hub is a blockchain built using Cosmos SDK and Tendermint and created with Starport.

OmniFlix Hub is the root chain of the OmniFlix Network. Sovereign chains and DAOs connect to the OmniFlix Hub to manage their web2 & web3 media operations (mint, manage, distribute & monetize) as well as community interactions.

Nov 10, 2022
demochain is a blockchain built using Cosmos SDK and Tendermint and created with Starport.

demochain demochain is a blockchain built using Cosmos SDK and Tendermint and created with Starport. Get started starport chain serve serve command i

Jun 21, 2022
Ethermint is a scalable and interoperable Ethereum library, built on Proof-of-Stake with fast-finality using the Cosmos SDK.
Ethermint is a scalable and interoperable Ethereum library, built on Proof-of-Stake with fast-finality using the Cosmos SDK.

Ethermint Ethermint is a scalable and interoperable Ethereum library, built on Proof-of-Stake with fast-finality using the Cosmos SDK which runs on to

Jan 3, 2023
loan is a blockchain built using Cosmos SDK and Tendermint and created with Starport.

loan loan is a blockchain built using Cosmos SDK and Tendermint and created with Starport. As a borrower you post a request for a loan and specify the

Dec 21, 2022
Arbiter DAO: a blockchain built using Cosmos SDK and Tendermint

Arbiter DAO Arbiter DAO is a blockchain built using Cosmos SDK and Tendermint. Arbiter DAO is a Olympus DAO and Klima DAO fork brought to the cosmos e

Aug 22, 2022
Berachain - A blockchain built using Cosmos SDK and Tendermint and created with Starport

berachain berachain is a blockchain built using Cosmos SDK and Tendermint and cr

Jan 26, 2022
Kava - Reference implementation of Kava, a blockchain for cross-chain DeFi. Built using the cosmos-sdk

DeFi for Crypto. Telegram | Medium | Discord Reference implementation of Kava, a

Apr 4, 2022
sops is an editor of encrypted files that supports YAML, JSON, ENV, INI and BINARY formats and encrypts with AWS KMS, GCP KMS, Azure Key Vault, age, and PGP
sops is an editor of encrypted files that supports YAML, JSON, ENV, INI and BINARY formats and encrypts with AWS KMS, GCP KMS, Azure Key Vault, age, and PGP

sops is an editor of encrypted files that supports YAML, JSON, ENV, INI and BINARY formats and encrypts with AWS KMS, GCP KMS, Azure Key Vault, age, and PGP. (demo)

Jan 9, 2023
A plugin that turn hashicorp vault into blockchain wallet.
A plugin that turn hashicorp vault into blockchain wallet.

dq-vault - Hashicorp vault BTC/ETH plugin This vault plugin stores a user's mnemonic inside vault in an encrypted manner. The plugin uses this stored

Dec 7, 2022
Jan 7, 2023
Sidecar container for injecting secrets into configuration files from Hashicorp Vault

talebearer noun A person who spreads scandal or tells secrets; gossip Note This code is not being actively developed, and has not seen substantial cha

Nov 1, 2021
docker plugin use vault as secret provider.

docker plugin vault docker secret plugin for vault provider how to build docker plugin rm -fr plugin/rootfs/.dockerenv plugin/rootfs/* docker build -

Aug 12, 2022
A system written in Golang to help ops team to automate the process of mapping Vault groups to LDAP Groups.

A system written in Golang to help ops team to automate the process of mapping Vault groups to LDAP Groups. This utility automatically adds LDAP Groups' members to the corresponding Vault Groups.

Nov 12, 2021
Create @tailscale authentication tokens using vault

Vault Secrets Plugin - Tailscale Vault secrets plugins to simplying creation, ma

Nov 21, 2022
Tendermint-built-in - Tendermint Built-in KVStore app

Tendermint Built-in KVStore app Install & build Pull all vendor dependencies: go

May 11, 2022
Crypto-project - Personal project for learning TLS

crypto-project My personal attempt to implement this cipher suite using the Go l

Feb 14, 2022
DERO: Secure, Anonymous Blockchain with Smart Contracts. Subscribe to Dero announcements by sending mail to [email protected] with subject: subscribe announcements
DERO: Secure, Anonymous Blockchain with Smart Contracts.  Subscribe to Dero announcements by sending mail to lists@dero.io with subject: subscribe announcements

Welcome to the Dero Project DERO News Forum Wiki Explorer Source Twitter Discord Github Stats WebWallet Medium Table of Contents ABOUT DERO PROJECT DE

Dec 7, 2022