创建一个pg_dumpish输出,它屏蔽数据而不保存对源数据库的更改。
django-maskpostgresdata的Python项目详细描述
django掩码postgres数据
向django项目添加一个管理命令,该命令允许您创建(某种)pg_转储 你的敏感数据被屏蔽。
安装
使用pip安装:
pip install django-maskpostgresdata
并将maskpostgresdata
添加到INSTALLED_APPS
:
INSTALLED_APPS = [
...
'maskpostgresdata',
...
]
用法
默认情况下,django-maskpostgresdata
将用“password”替换djangoUser
模型中每一行的password
列。只要运行manage.py dump_masked_data
,就会得到一个pg_转储,其中password字段对于所有用户都更改为“password”。
有两种方法可以定制django-maskpostgresdata
的行为。
要使用给定值覆盖模型的各个字段,请使用以下格式将名为MASKER_FIELDS
的字典添加到设置中:
MASKER_FIELDS = {
"{ APP_NAME }": {"{ MODEL_NAME }": {"{ FIELD_NAME }": { VALUE },}},
}
或者,您可以通过在自己的管理命令中对BasePostgresDataMaskingCommand
进行子类化来定义数据的更新方式。例如:
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"))
只需创建一个名为update_{ db_table_name }
的方法,将queryset
作为参数。然后可以对这个queryset执行update
操作。{ db_table_name }
默认为{app_label}_{model_name}
格式,但在技术上可能有所不同。
然后您可以运行manage.py dump_masked_data
,它会将您的数据转储到stdout
。