Skip to main content

Creates a pg_dumpish output which masks data without saving changes to the source database.

Project description

Django Mask Postgres Data

Adds a management command to your Django project which allows you to create a (sort of) pg_dump of your data with sensitive data masked.

Installation

Install with pip:

pip install django-maskpostgresdata

And add maskpostgresdata to your INSTALLED_APPS:

INSTALLED_APPS = [
    ...
    'maskpostgresdata',
    ...
]

Usage

By default, django-maskpostgresdata will replace the password column for each row in the Django User model with "password". Just run manage.py dump_masked_data and you'll get a pg_dump with the password field changed to "password" for all users.

There are 2 ways to customise the behaviour of django-maskpostgresdata.

To override individual fields of a model with a given value, add a dictionary called MASKER_FIELDS to your settings using the following format:

MASKER_FIELDS = {
    "{ APP_NAME }": {"{ MODEL_NAME }": {"{ FIELD_NAME }": { VALUE },}},
}

Alternatively, you can define exactly how the data is updated by subclassing BasePostgresDataMaskingCommand in a management command of your own. For example:

from django.contrib.auth.hashers import make_password

from maskpostgresdata import BasePostgresDataMaskingCommand


class Command(BasePostgresDataMaskingCommand):

    def update_auth_user(self, queryset):
        queryset.update(password=make_password("a_different_password"))

Just create a method called update_{ db_table_name } taking a queryset as the parameter. You can then perform update operations on this queryset. { db_table_name } is of the format {app_label}_{model_name} by default, but could technically be different.

You can then run manage.py dump_masked_data and it will dump your data to stdout.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-maskpostgresdata-0.2.1.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

django_maskpostgresdata-0.2.1-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

Details for the file django-maskpostgresdata-0.2.1.tar.gz.

File metadata

File hashes

Hashes for django-maskpostgresdata-0.2.1.tar.gz
Algorithm Hash digest
SHA256 4fe15dd217207ac9991164aeb74a5d24404b4834df46c253f98f6aee6a864633
MD5 cb1af9c03b49ac55e62e2dc8f6c16ebe
BLAKE2b-256 a4a209e758549cbbfa460e7b32512f43f663ceb2f2c88aa83ce0ab76b6728155

See more details on using hashes here.

File details

Details for the file django_maskpostgresdata-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for django_maskpostgresdata-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6e12cbd3b8062bac37759af6d99c10c18ca171deb0b7635736ebc944f10fb3e5
MD5 cbb237adc12f552eee15a90dc2bb8531
BLAKE2b-256 12607ef240200c15d7fc6e96f3638af3f32962136624ba30611dfee0311b4564

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page