法国埃穆捷,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
警告:假名化经常与匿名化混淆,但实际上它们服务于两个不同的目的。使用假名化,可以使用伪数据和掩码规则重建真实数据。如果攻击者访问了这些元素,他或她可以使用 暴力破解
或 字典
攻击轻松地重新识别某些人。因此,您应该使用与原始数据集相同的安全级别来保护任何假名化数据。《通用数据保护条例》(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()
函数,它将基于字典搜索常见的标识符名称。目前,有两个字典可用:英语('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 开发。
这是一个开放的项目,欢迎大家贡献。我们需要您的反馈和想法!请告诉我们您对该工具的看法、它如何满足您的需求以及缺少哪些功能。
如果您想提供帮助,您可以找到初级任务列表。