法國 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 開發。
這是一個開放專案,歡迎大家貢獻。我們需要您的回饋和想法! 讓我們知道您對此工具有何看法、它如何滿足您的需求以及缺少哪些功能。
如果您想提供協助,您可以找到 初級工作 的列表。