Skip to main content

django-sanitized-dump

Sanitize sensitive information from your database dumps 💩

Supports:

  • PostgreSQL
  • MySQL

Getting started

  1. pip install django-sanitized-dump or pip install django-sanitized-dump[MySQL] if you use MySQL
  2. Add sanitized_dump to INSTALLED_APPS
  3. Initialize config file: ./manage.py init_sanitizer
  4. Check your newly created .sanitizerconfig file and modify the sanitation strategy to fit your requirements.
  5. Run ./manage.py check_sanitizerconfig to verify that your .sanitizerconfig includes all models and fields
  6. Get sanitized database dump: ./manage.py create_sanitized_dump > dump.sql

DB Sanitation

Heavy lifting of the DB sanitation is done by: https://github.com/andersinno/python-database-sanitizer

Configuration

Configuration file is used to define a strategy on how to sanitize your data. Strategy defines a sanitation function for each model field.

Example config

config:
 addons:
   - "ai-sanitizers"
   - "some-other-lib"
strategy:
 user:
   first_name: "name.first_name"
   last_name: "name.last_name"
 education:
   created: null
   modified: null
   id: null
   field: "education.field"
   school: "education.school"
   started: "datetime.datetime"
   credits: null
   information: "string.loremipsum_preserved"
 file_file: null

Example custom sanitizers

# /sanitizers/name.py
def sanitize_first_name(value):
    return faker.first_name()

def sanitize_last_name(value):
    return faker.last_name()

# /sanitizers/education.py
def sanitize_field(value):
    return "Some field"

def sanitize_schoo(value):
    return "My school"

Validating sanitizer return value

Note: This should not be done in the initial implementation of the sanitizer but is up to the sanitizer functions. This is just a nice to have but not of a high priority.

Check that the returned value is of the same type as the argument value passed to the sanitizer. For instance, if a MySQL DATETIME value is passed to the sanitizer, a MySQL DATETIME value shoud be returned as well.

Configuration method resolution order

  1. Custom sanitizers inside ./sanitizers
  2. Addon sanitizers (config.addons)
  3. Core sanitizers

Django Management Commands

Sanitized Dump

./manage.py create_sanitized_dump > dump.sql

  1. Warn about unhandled fields
  2. Creates a database dump (mysqldump/pgdump)
  3. Run sanitizer

Check Sanitized Dump

./manage.py check_sanitizerconfig

  1. Returns an error code if there are unhandled database fields

Check can be used in CI environments for detecting changes in models, that are not present in sanitizer configuration.

Init Sanitizer

./manage.py init_sanitizer

  1. Create configuration from current database state

Metadata

Release files for django-sanitized-dump 1.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-sanitized-dump 1.2.2
File Size Uploaded
django-sanitized-dump-1.2.2.tar.gz 9.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-sanitized-dump 1.2.2
File Interpreter ABI Platform
django_sanitized_dump-1.2.2-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 19.8 kB

Release files / django-sanitized-dump-1.2.2.tar.gz

Download URL django-sanitized-dump-1.2.2.tar.gz
Size 9.4 kB
Tags Source
SHA-256 checksum
How to use checksums
abb087a29b981de97d21bbac05c64f1f59ea0a69f479dde638994276499b4fd1
BLAKE2b-256 checksum
How to use checksums
12024a20a30c8daf1ea7430674aa328cbe2a2334ba7ae24ade49eeccfd544d45
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.9.6 requests/2.27.1 setuptools/40.6.2 requests-toolbelt/1.0.0 tqdm/4.64.1 CPython/3.6.15

Release files / django_sanitized_dump-1.2.2-py2.py3-none-any.whl

Download URL django_sanitized_dump-1.2.2-py2.py3-none-any.whl
Size 10.4 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
77da860ca62f16869ad947f4da1d4823bac11ba4fcbb38cdcac69fd93e0f5a26
BLAKE2b-256 checksum
How to use checksums
5bb763f41a15ee1bf8cb7c8b973e52a206f58130762772079f5bcdff1d1e1dea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.9.6 requests/2.27.1 setuptools/40.6.2 requests-toolbelt/1.0.0 tqdm/4.64.1 CPython/3.6.15

Release history Release notifications | RSS feed

This release

1.2.2 This release

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page