法国利摩日,2022 年 5 月 17 日
PostgreSQL Anonymizer 是一个扩展,用于隐藏或替换 PostgreSQL 数据库中的个人身份信息(PII)或商业敏感数据。
该扩展支持 3 种不同的匿名化策略:动态脱敏 (https://postgresql-anonymizer.readthedocs.io/en/latest/dynamic_masking/)、静态脱敏 (https://postgresql-anonymizer.readthedocs.io/en/latest/static_masking/) 和匿名导出 (https://postgresql-anonymizer.readthedocs.io/en/latest/anonymous_dumps/)。同时还提供了丰富的脱敏函数 (https://postgresql-anonymizer.readthedocs.io/en/latest/masking_functions/) 选择,包括替换、随机化、仿造、假名化、部分扰乱、洗牌、噪声添加和泛化。
注意:此版本已被视为可用于生产环境。
使用 PostgreSQL 实现"隐私设计"
GDPR 推出 4 年以来,其实施对许多企业和组织来说仍然很复杂。特别是,实现"隐私设计"原则仍然是一个难题......我们如何在应用程序设计阶段就直接编写数据保护规则?
目前绝大多数匿名化工具在数据库外部工作,使用与 ETL 工具相同的方式。因此,编写匿名化策略的责任通常被分配给生产环境的 DBA。
PostgreSQL Anonymizer 扩展引入了一种不同的方法,它寻求让开发人员和架构师在早期的初步设计阶段就参与进来,通过使用 SQL 声明脱敏规则,直接嵌入到数据库模型本身中,就像完整性约束或索引一样!
当开发人员想要向表中添加新列时,通常会定义一些规则和限制来约束该列。使用 PostgreSQL Anonymizer,开发人员还可以声明该列包含个人信息,并编写脱敏规则来描述数据在匿名化过程中将如何被转换。
该扩展提供了一系列脱敏技术:随机化、噪声、仿造、部分销毁、假名化、泛化等。
对于在法国公共财政总局(DGFiP)架构与标准办公室工作的 Thierry Aime 来说,该扩展在数据保护策略中扮演着关键角色:
"借助 PostgreSQL Anonymizer,我们从数据库设计阶段就整合了这样的原则:在生产环境之外,数据必须被匿名化。这样我们就可以执行 RGPD 规则,同时不影响版本升级等场景下的测试质量。"
以下是一个基本示例:
` CREATE TABLE player( id SERIAL, lastname TEXT, birth DATE, points INT );
SECURITY LABEL FOR anon ON COLUMN player.lastname IS 'MASKED WITH FUNCTION anon.fake_last_name()';
SECURITY LABEL FOR anon ON COLUMN player.birth IS 'MASKED WITH VALUE NULL'; ` ```
另外,如果该列可以被声明为间接标识符 (https://labkey.med.ualberta.ca/labkey/_webdav/REDCap%20Support/@wiki/identifiers/identifiers.html?listing=html),那么生产 DBA 可以使用 K 匿名性 (https://postgresql-anonymizer.readthedocs.io/en/latest/generalization/#k-anonymity) 函数来检查数据集中是否存在单独识别 (https://www.cnil.fr/en/sheet-ndeg1-identify-personal-data) 个人的风险。
数据保护是团队协作的成果!参与应用程序生命周期的每个人都应该关注。秉持这一理念,PostgreSQL Anonymizer 扩展为开发人员和 DBA 提供工具,帮助他们在早期阶段就实施数据脱敏规则,从而遵守"隐私设计"原则。
安装方式
该扩展正式支持 PostgreSQL 9.6 及更高版本。
在 Red Hat、CentOS 和 Rocky Linux 系统上,您可以直接从官方 PostgreSQL RPM 仓库 (https://yum.postgresql.org/) 安装:
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/) 文档:
https://postgresql-anonymizer.readthedocs.io/en/latest/INSTALL/ (https://postgresql-anonymizer.readthedocs.io/en/latest/INSTALL/)
致谢
PostgreSQL Anonymizer 得到了以下实体的资金支持:
法国公共财政总局(DGFiP)
bioMerieux,全球体外诊断领域的领导者
非常感谢他们的帮助和反馈。
该项目包含了数十位贡献者 (https://gitlab.com/dalibo/postgresql_anonymizer/-/blob/master/AUTHORS.md) 的代码、Bug 修复、文档、代码审查和创意。此 1.0 版本是向他们表示感谢的绝佳时机!
如何贡献
PostgreSQL Anonymizer 是 Dalibo Labs (https://labs.dalibo.com) 计划的一部分,主要由 Damien Clochard (https://www.dalibo.com/en/equipe#daamien) 开发。
这是一个开放项目,欢迎贡献。我们需要您的反馈和建议!请告诉我们您对这个工具的看法,它如何满足您的需求,以及还缺少哪些功能。
如果您想提供帮助,可以在此处找到"初级任务"列表:
https://gitlab.com/dalibo/postgresql_anonymizer/issues?label_name%5B%5D=Junior+Jobs (https://gitlab.com/dalibo/postgresql_anonymizer/issues?label_name%5B%5D=Junior+Jobs)