postgresql_anonymizer使用
admin
2024-01-17 18:18:51
0

瀚高数据库
目录
环境
文档用途
详细信息

环境
系统平台:Linux x86-64 Red Hat Enterprise Linux 7
版本:12
文档用途
postgresql_anonymizer是对数据库中的个人识别信息或商业敏感数据进行屏蔽或替换的扩展。

详细信息

  1. 介绍
    postgresql_anonymizer是对数据库中的个人识别信息或商业敏感数据进行屏蔽或替换的扩展。该扩展使用标准sql语句定义规则,内置多种屏蔽规则函数。依据定义的规则有3中使用方式
Anonymous Dumps : 将屏蔽数据导出到SQL文件中Static Masking : 根据规则移除替换敏感数据(此方法慎用,避免数据被替换而造成丢失。)Dynamic Masking : 依据规则屏蔽隐藏敏感数据
  1. 安装
    支持多种安装方式,包括rpm,pgxn,docker等。建议使用源码安装方式。

下载,编译

git clone https://gitlab.com/dalibo/postgresql_anonymizer.git
make extension PG_CONFIG=/opt/pg1211/bin/pg_config
sudo make install PG_CONFIG=/opt/pg1211/bin/pg_config

配置加载扩展

ALTER DATABASE postgres SET session_preload_libraries = 'anon';pg_ctl restart  --重启生效

创建扩展

CREATE EXTENSION anon CASCADE;create extension pgcrypto ;

初始化扩展

SELECT anon.init();

3.配置

用于声明屏蔽规则的函数必须位于指定的模式内,默认是pg_catalog和anon

ALTER DATABASE postgres SET anon.restrict_to_trusted_schemas = on; 

声明屏蔽规则,数据屏蔽规则仅通过使用security labels来声明

声明屏蔽规则(MASKED WITH FUNCTION需要大写)security label for anon on column test_mask.name is 'MASKED WITH FUNCTION anon.fake_last_name()';删除屏蔽规则security label for anon on column test_mask.name is null;删除所有规则SELECT anon.remove_masks_for_all_columns();

4.屏蔽策略介绍
共8种。参考官方文档描述 Masking Functions

DestructionAdding Noise #是数据进行一定幅度的变化。对于数值和日期,Adding Noise通常很有趣RandomizationFaking #使用随机但看似合理的数据替换敏感数据。对于姓名和其他“直接标识符”,Faking通常很有用Advanced FakingPseudonymizationGeneric HashingPartial scrambling #对部分数据进行遮挡。非常适合用于电子邮件地址和电话号码Generalization

示例:

Faking

为了使用faking函数,必须先加载init()扩展。SELECT anon.init(); 返回通用的名字security label for anon on column test_mask.name is 'MASKED WITH FUNCTION anon.fake_first_name()'; 

Adding Noise

返回的值是原始值随机+/-20%security label for anon on column test_mask.salary is 'MASKED WITH FUNCTION anon.noise(original_value,0.2)'; 返回的值是原始值随机+/-7天security label for anon on column test_mask.hiredate is 'MASKED WITH FUNCTION anon.dnoise(original_value,7 days)'; 

Partial scrambling

返回值显示后四位,其他以xxxx代替security label for anon on column test_mask.telephone is 'MASKED WITH FUNCTION anon.partial(telephone,2,$$*****$$$$,4)'; 
  1. Static Masking静态屏蔽使用
    永久删除敏感数据
应用屏蔽规则,对整个数据库SELECT anon.anonymize_database();应用屏蔽规则,对指定表SELECT anon.anonymize_table('public.test_mask'); 应用屏蔽规则,对指定列SELECT anon.anonymize_column('customer','zipcode'); 

注意,数据会被替换,适用于测试数据脱敏。

  1. Dynamic Masking动态屏蔽使用
    对“屏蔽”用户隐藏敏感数据
开启动态屏蔽SELECT anon.start_dynamic_masking(); 声明屏蔽用户SECURITY LABEL FOR anon ON ROLE test IS 'MASKED';解除用户屏蔽SECURITY LABEL FOR anon ON ROLE bob IS NULL; 解除所有用户屏蔽SELECT anon.remove_masks_for_all_roles(); 

动态屏蔽使用限制

drop表需要使用CASCADE

psql命令\dt 无法显示被屏蔽表信息

只能屏蔽一个schema模式下的数据,默认是public,可修改为其他shema,但只能屏蔽一个模式

会使查询性能非常低,特别是join表时

使用图形化工具是,访问屏蔽表信息会报错,ERROR: permission denied for table foo

  1. Anonymous Dumps导出屏蔽数据
    由于屏蔽设置,不能使用pg_dump导出数据。需要使用pg_dump_anon.sh
pg_dump_anon.sh -h localhost -U postgres -d postgres -t test_dy_mask > /tmp/test_dy_mask_anon.sql
  1. 相关字典试图
pg_seclabelspg_seclabel
  1. 使用示例
    创建表
create table test_dy_mask (id int,name varchar(22),salary int,hiredate timestamp,telephone text); insert into test_dy_mask values (1,'max',20000,'2022-06-21 14:00:00','15512345678');postgres=# select * from test_dy_mask ;id | name | salary |      hiredate       |  telephone----+------+--------+---------------------+-------------1 | aaa  |  20000 | 2022-06-21 14:00:00 | 15512345678(1 row)声明屏蔽规则SELECT anon.init(); --使用fakingsecurity label for anon on column test_dy_mask.name is 'MASKED WITH FUNCTION anon.fake_first_name()'; --fakingsecurity label for anon on column test_dy_mask.salary is 'MASKED WITH FUNCTION anon.noise(salary,0.2)'; --add noisesecurity label for anon on column test_dy_mask.telephone is 'MASKED WITH FUNCTION anon.partial(telephone,2,$$*****$$,4)';  --Partial scrambling使用动态屏蔽SELECT anon.start_dynamic_masking();  --开启动态屏蔽create user test with password 'test';  --创建一个新用户SECURITY LABEL FOR anon ON ROLE test IS 'MASKED'; --声明屏蔽用户grant select on test_dy_mask to test; --授权select * from test_dy_mask;  --使用屏蔽用户查询数据查看结果postgres=> select * from test_dy_mask ;id | name | salary |      hiredate       |  telephone----+------+--------+---------------------+-------------1 | Koby |  16618 | 2022-06-21 14:00:00 | 15*****5678(1 row)

相关内容

热门资讯

车厘子自由的背后,关系到每个人... 来源:磐石之心 “今年实现了车厘子自由,比往年便宜了一半还多。”许多吃货发出感慨。 在电商平台、超...
ETF复盘资讯|沪指止步17连... A股三大指数今日(1月13日)集体回调,截至收盘,沪指跌0.64%,终结17连阳,深证成指跌1.37...
智谱与MiniMax上市:AI... 曾经“百模齐放”的狂热竞争逐渐落幕,行业告别“参数竞赛”的草莽时代,进入了“商业闭环”的验证期。 撰...
容百科技签下1200亿元巨单;... 今日焦点容百科技:与宁德时代签署超1200亿元磷酸铁锂正极材料采购合作协议 容百科技公告称,公司与...
小市值+高研发+低位滞涨的活跃... 科技股的弹性依然为投资者所看重。 近期A股市场表现强势,上证指数、创业板指等均再度创出阶段新高。华福...
每月自我检查乳腺结节,这几个步... 太原龙城中医医院科普,乳腺健康对女性至关重要,而乳腺结节是很多女性可能会遇到的问题。定期进行自我乳腺...
深圳这场盛会,TCL李东生、小... 深圳商报·读创客户端首席记者 刘琼 实习生杨与萌 1月12日,第九届深商盛典暨中国企业家俱乐部20年...
原创 人... 人到70岁,如果你依然活得不够清醒,不知道什么该做什么不该做,那么你的寿命很难再有质的提高,你的生活...
深圳商业秘密刑事律师服务实力榜... 在商业竞争日益激烈的背景下,企业商业秘密保护已成为关乎生存与发展的核心命题。据统计,我国每年因商业秘...
小鹏汽车在长春成立销售服务公司... 天眼查工商信息显示,近日,长春小鹏汽车销售服务有限公司成立,法定代表人为陈志远,注册资本500万人民...
商务部:对原产于美国和韩国的进... 商务部公告2026年第3号 公布对原产于美国和韩国的进口太阳能级多晶硅所适用反倾销措施的期终复审裁定...
“A系列”指数回调,关注A50... 截至收盘,中证A500指数下跌0.8%,中证A100指数下跌0.6%,中证A50指数下跌0.4%。 ...
港股上市!国改发展基金基石投资... 1月12日,宁波通商基金通过市国资国企改革发展基金之甬欣基金参与基石投资的豪威集成电路(集团)股份有...
穆迪:未来五年数据中心投资或达... 据彭博社等外媒报道,国际三大信用评级机构之一穆迪近日发布报告称,未来五年内,全球至少将有3万亿美元资...
人民币现金收付新规来了 注意! 2026年2月1日起 人民币现金收付新规正式实施 遇拒收现金可维权 日前,中国人民银行会同...
海底捞CEO换人 1月13日,海底捞国际控股有限公司(以下简称“海底捞”)在港交所发布公告,宣布该公司董事会主席及执行...
估值腰斩、家族掌舵、三次递表,... 近日,中式快餐品牌“老乡鸡”的控股公司——于开曼群岛注册的LXJ International Hol...
数字人短视频怎么做?一文搞懂 随着AI技术普及,数字人短视频已成内容创作新风口。不少创作者和企业想借此降本增效,却受困于核心准备、...
盼盼食品董事长蔡金垵入选“20... 瑞财经 1月13日,由瑞财经推出的“2025年度食品行业十大杰出人物”榜单揭晓,盼盼食品董事长蔡金垵...
威海营商行丨出口“秒通关”,海... 1月8日,在威海青正蓝海食品有限公司生产车间,经过清洗、调味、包装、冷冻等加工工序,一批近20吨的调...