法国 Eymoutiers,2020 年 3 月 5 日
PostgreSQL Anonymizer
是一个扩展,可以隐藏或替换 PostgreSQL 数据库中的个人身份信息 (PII) 或商业敏感数据。
该扩展支持 3 种不同的匿名化策略:动态屏蔽、原地匿名化 和 匿名转储。它还提供多种屏蔽函数:替换、随机化、伪造、假名化、部分打乱、洗牌、噪声添加和泛化。
假名化函数在某种程度上类似于伪造函数,因为它们会生成逼真的值。主要区别在于假名化是确定性的:函数将始终基于种子和可选的盐值返回相同的假值。
# SELECT anon.pseudo_email('Alice','salt123');
pseudo_email
-------------------
fcadell56@ucoz.ru
# SELECT anon.pseudo_email('Alice','salt123');
pseudo_email
-------------------
fcadell56@ucoz.ru
警告:假名化经常与匿名化混淆,但实际上它们服务于 2 个不同的目的。通过假名化,可以使用假数据和屏蔽规则重建真实数据。如果攻击者能够访问这些元素,他们可以通过暴力破解
或字典
攻击轻松重新识别某些人。因此,您应该用与原始数据集相同的安全级别来保护任何假名化数据。GDPR 明确指出,经过假名化处理的个人数据仍被视为个人信息。
anon.dump()
函数曾运行缓慢且不实用。它现在已被弃用,并被一个名为 pg_dump_anon
的工具取代,您可以像使用常规 pg_dump
命令一样使用它。
$ pg_dump_anon -h localhost -U bob mydb > anonymous_dump.sql
它使用与 pg_dump
相同的连接参数。PostgreSQL 环境变量($PGHOST, PGUSER 等)和 .pgpass
均受支持。然而,plain
格式是唯一支持的格式。其他格式(custom
、dir
和 tar
)不支持。
该扩展使声明屏蔽规则变得非常容易。当然,当您创建一个匿名化策略时,困难的部分是扫描数据库模型以查找包含直接和间接标识符的列,然后决定如何屏蔽这些标识符。
我们现在提供一个 detect()
函数,它将基于字典搜索常见的标识符名称。目前,提供 2 个字典:英语 ('en_US') 和法语 ('fr_FR')。默认使用英语字典。
# SELECT anon.detect('en_US');
table_name | column_name | identifiers_category | direct
------------+----------------+----------------------+--------
customer | CreditCard | creditcard | t
customer | id | account_id | t
vendor | Firstname | firstname | t
标识符类别基于HIPAA 分类。
该扩展在 PostgreSQL 9.6 及更高版本上获得官方支持。
在 Red Hat / CentOS 系统上,您可以从官方 PostgreSQL RPM 仓库安装它。
$ yum install postgresql_anonymizer12
然后在 postgresql.conf
文件的 shared_preload_libraries
参数中添加 'anon'。并重启您的实例。
对于其他系统,请查看安装文档。
https://postgresql-anonymizer.readthedocs.io/en/latest/INSTALL/
警告: 该项目处于早期开发阶段,应谨慎使用。
本次发布包括 Sebastien Delobel、Sam Buckingham、Thomas Clark、Joe Auty、Pierre-Henri Dubois Amy 和 Olleg Samoylov 的代码、错误修复和想法。
非常感谢他们!
PostgreSQL Anonymizer 是 Dalibo Labs 计划的一部分。主要由 Damien Clochard 开发。
这是一个开放项目,欢迎贡献。我们需要您的反馈和想法!让我们知道您对这个工具的看法,它如何满足您的需求以及缺少哪些功能。
如果您想提供帮助,可以找到一份初级职位列表。