2025年9月25日: PostgreSQL 18 发布!

PostgreSQL Anonymizer 0.6:假名化和改进的匿名导出

发布于 2020-03-09,作者 Dalibo
相关开源项目

法国 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 格式是唯一支持的格式。其他格式(customdirtar)不支持。

检测隐藏的标识符

该扩展使声明屏蔽规则变得非常容易。当然,当您创建一个匿名化策略时,困难的部分是扫描数据库模型以查找包含直接和间接标识符的列,然后决定如何屏蔽这些标识符。

我们现在提供一个 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 开发。

这是一个开放项目,欢迎贡献。我们需要您的反馈和想法!让我们知道您对这个工具的看法,它如何满足您的需求以及缺少哪些功能。

如果您想提供帮助,可以找到一份初级职位列表。