PostgreSQL如何實現(xiàn)特定列脫敏,postgresql 怎么獲取函數(shù)返回的異常PostgreSQL如何對特定的列脫敏1需求在某些情況下,某些表的某些列包含敏感數(shù)據(jù)(如用戶信息表、用戶的手機(jī)號碼)。自然,我們只希望“管理員”用戶看到這些敏感數(shù)據(jù),而其他用戶希望他們看到“處理過的”——脫敏的數(shù)據(jù)。2實施方案介紹方案一......
1需求
在某些情況下,某些表的某些列包含敏感數(shù)據(jù)(如用戶信息表、用戶的手機(jī)號碼)。自然,我們只希望“管理員”用戶看到這些敏感數(shù)據(jù),而其他用戶希望他們看到“處理過的”——脫敏的數(shù)據(jù)。
2實施方案介紹
方案一:使用pg匿名插件PostgreSQL anonymous
方案二:利用視圖脫敏;
2.1方案一:使用pg匿名插件PostgreSQL anonymous
(示例來自插件的官方文檔)
修改配置文件:shared preload libraries = pg stat statements,anon
.創(chuàng)建和激活插件。
如果級聯(lián)上不存在擴(kuò)展,則創(chuàng)建擴(kuò)展;
SELECT anon . mask init();
2.聲明屏蔽的用戶
打造角色天網(wǎng);
評論角色天網(wǎng)被蒙面;
3.聲明屏蔽規(guī)則。
people.name列上的注釋被函數(shù)anon.randomlastname()屏蔽;
people.phone列上的注釋被函數(shù)anon.partial(phone,2,$$******$,2)屏蔽;
4.查詢阻止敏感信息的用戶。
\!psql test U skynet c SELECT *從人;
id 姓名電話
+ +
T800 n3xtchen 13******11
2.2方案2:通過使用視圖脫敏
(來自本地開發(fā)環(huán)境的示例)
.創(chuàng)建測試用戶
創(chuàng)建用戶根;
創(chuàng)建普通用戶;
2.切換到根表創(chuàng)建視圖。
設(shè)置角色根;
創(chuàng)建表userphonenumber(id int,username name,phone number name);
插入user phone number值(1,張三,12345678);
插入user phone number值(1,李四,56781234);
創(chuàng)建或替換視圖memberphonenumber為
挑選
S.id,
s .用戶名,
substring(S.phonenumber,1,1) * * * * * * * * substring(s . phonenumber,8,8)作為phone number
從用戶電話號碼作為S;
3.回收表的權(quán)限,授予普通用戶查看權(quán)限。
從公共電話中撤銷所有用戶電話號碼;
將memberphonenumber上的所有權(quán)限授予normal user
4.用普通用戶測試。
重置角色;
設(shè)置角色normal user
select * from用戶電話號碼;
select * from member phone number;
結(jié)果如下:
3優(yōu)缺點對比
一般來說,如果你喜歡偷懶和嘗鮮,可以使用postgresqlanonymizer插件;但是如果想要穩(wěn)定,建議使用視圖。
4參考
1.PostgreSQL:匿名器工具官網(wǎng):https://labs.dalibo.com/postgresqlanonymizer
2.PostgreSQL:匿名工具官方文檔:https://postgresqlanonymizer.readthedocs.io/en/stable/
特別聲明:以上文章內(nèi)容僅代表作者本人觀點,不代表ESG跨境電商觀點或立場。如有關(guān)于作品內(nèi)容、版權(quán)或其它問題請于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。
二維碼加載中...
使用微信掃一掃登錄
使用賬號密碼登錄
平臺顧問
微信掃一掃
馬上聯(lián)系在線顧問
小程序
ESG跨境小程序
手機(jī)入駐更便捷
返回頂部