法國利摩日,2022 年 5 月 17 日
PostgreSQL Anonymizer
是一個擴充功能,可以隱藏或替換 PostgreSQL 資料庫中的個人身份資訊 (PII) 或商業敏感數據。
此擴充功能支援 3 種不同的匿名化策略:動態遮罩、靜態遮罩和 匿名傾印。它還提供了大量的 遮罩函數 的選擇,例如替換、隨機化、偽造、假名化、部分加擾、混洗、雜訊添加和一般化。
注意:此版本被認為已準備好用於生產環境
在 GDPR 推出 4 年後,其應用對於許多公司和組織而言仍然很複雜。 特別是,實施「隱私設計」原則仍然令人頭痛...... 我們如何在應用程式設計期間直接編寫數據保護規則?
目前絕大多數的匿名化工具都在資料庫之外工作,使用與 ETL 工具相同的方法。 因此,編寫匿名化策略的責任通常分配給生產 DBA。
PostgreSQL Anonymizer 擴充功能引入了一種不同的方法,它試圖讓開發人員和架構師儘早參與,在初步設計階段,透過使用 SQL 聲明遮罩規則,直接在資料庫模型本身中,以與完整性約束或索引相同的方式!
當開發人員想要向表格新增一個新的欄位時,她/他通常會定義一些針對此欄位強制執行的規則和限制。 透過 PostgreSQL Anonymizer,她/他還可以聲明此欄位包含個人資訊,並編寫一個遮罩規則來描述在匿名化過程中如何轉換資料。
此擴充功能提供了一系列遮罩技術:隨機化、雜訊、偽造、部分破壞、假名化、一般化等等。
對於在法國公共財政總局 (DGFiP) 的架構和標準辦公室工作的 Thierry Aimé 來說,此擴充功能在數據保護政策中扮演著關鍵的角色
« 透過 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';
或者,如果該欄位可以聲明為 間接識別符,則生產 DBA 將能夠使用 K 匿名性 函數來檢查是否有在資料集中 挑出 個人的風險。
資料保護是一項團隊合作! 參與應用程式生命週期的每個人都應該關心。 秉持這種心態,PostgreSQL Anonymizer 擴充功能為開發人員和 DBA 提供了工具,並幫助他們儘早實施資料遮罩規則,從而尊重「隱私設計」原則。
此擴充功能在 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/
PostgreSQL Anonymizer 獲得了以下實體的財政支持
非常感謝他們提供的幫助和回饋。
此專案包含來自 數十位貢獻者 的程式碼、錯誤修復、文件、程式碼審查和想法。 這個 1.0 版本是一個向他們表達感謝的好機會!
PostgreSQL Anonymizer 是 Dalibo Labs 計畫的一部分。 它主要由 Damien Clochard 開發。
這是一個開放的專案,歡迎大家貢獻。 我們需要您的回饋和想法! 請告訴我們您對此工具的看法、它如何滿足您的需求以及缺少哪些功能。
如果您想提供幫助,可以在這裡找到 初級任務
的清單
https://gitlab.com/dalibo/postgresql_anonymizer/issues?label_name%5B%5D=Junior+Jobs