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

PostgreSQL 匿名化工具 1.1:Postgres 的默认隐私保护

发布于 2022-09-29,作者 Dalibo
相关开源项目

法国图尔,2022 年 9 月 28 日

PostgreSQL Anonymizer 是一个扩展,可以隐藏或替换 PostgreSQL 数据库中的个人身份信息 (PII) 或商业敏感数据。

该扩展支持 3 种不同的匿名化策略:动态掩码静态掩码匿名转储。它还提供多种掩码函数,例如替换、随机化、伪造、假名化、部分打乱、混洗、添加噪声和泛化。

默认隐私保护

GDPR 法规(以及其他隐私法律)引入了“默认数据保护”的概念。 简而言之,这意味着默认情况下,组织应确保以最高的隐私保护级别处理数据,从而默认情况下不向不确定数量的人员公开个人数据。

将此原则应用于匿名化,我们就得到了 `隐私默认保护` 的概念,其基本含义是,默认情况下,所有表的​​所有列都应被屏蔽,而无需为每个列声明屏蔽规则。

要启用此功能,只需将选项 `anon.privacy_by_default` 设置为 `on`。

ALTER DATABASE foo SET anon.privacy_by_default = True;

现在,`foo` 数据库的所有列都将使用列的默认值(如果已定义)或 NULL 进行匿名化。

注意:如果您的列声明为 `NOT NULL`,则必须为其定义一个默认值,否则在匿名化数据库时会发生约束冲突。

有关此功能的更多详细信息,请点击下方链接

https://postgresql-anonymizer.readthedocs.io/en/latest/privacy_by_default/

一致的匿名转储

在 1.0 版本之前,pg_dump_anon 是一个 bash 脚本。 这个脚本不错而且简单。 但是在某些条件下,匿名备份并不一致。

现在有一个全新的 pg_dump_anon 版本(用 Golang 重写),它将始终生成一致的导出。

之前的脚本现已重命名为 pg_dump_anon.sh,并且仍然可用以向后兼容。 但它将在 2.0 版本中弃用。

https://postgresql-anonymizer.readthedocs.io/en/latest/anonymous_dumps/

如何安装

该扩展 officially supported 在 PostgreSQL 9.6 及更高版本上。

在 Red Hat、CentOS 和 Rocky Linux 系统上,您可以直接从官方 PostgreSQL RPM 存储库安装它。

dnf install postgresql_anonymizer14

然后使用以下命令加载扩展

ALTER DATABASE foo SET session_preload_libraries = 'anon';

在数据库中创建扩展

CREATE EXTENSION anon CASCADE;

最后,初始化扩展

SELECT anon.init();

对于其他系统,请查看安装文档。

https://postgresql-anonymizer.readthedocs.io/en/latest/INSTALL/

致谢

此版本包括 Michel Pelletier、Gergő Rubint、Mahesh Moturu、Greg pringle、Christophe Courtois 以及其他 贡献者 的代码、错误修复、文档、代码审查和想法。

非常感谢他们的帮助和反馈。

如何贡献

PostgreSQL Anonymizer 是 Dalibo Labs 计划的一部分。主要由 Damien Clochard 开发。

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

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

https://gitlab.com/dalibo/postgresql_anonymizer/issues?label_name%5B%5D=Junior+Jobs