如何实现特定列脱敏?这两种方法你都要会
2023-02-18 16:29:38 时间
摘要:有些情况下,有些表的特定列含有敏感数据,如何让特定的人看到特定的数据呢?
1 需求
有些情况下,有些表的特定列含有敏感数据(如用户信息表中,用户手机号),自然,我们只想让“管理员”用户看到这些敏感数据,其他用户我们希望其看到“处理后的”—— 脱敏的数据。
2 实现方案介绍
方案1: 使用pg匿名化插件postgresql_anonymizer;
方案2: 使用视图进行脱敏;
2.1 方案1: 使用pg匿名化插件postgresql_anonymizer
(示例来自插件官方文档)
-- 修改配置文件: shared_preload_libraries = 'pg_stat_statements, anon' -- 1. 创建并激活插件 CREATE EXTENSION IF NOT EXISTS anon CASCADE; SELECT anon.mask_init(); -- 2.声明屏蔽的用户 CREATE ROLE skynet; COMMENT ON ROLE skynet IS 'MASKED'; -- 3.声明屏蔽规则 COMMENT ON COLUMN people.name IS 'MASKED WITH FUNCTION anon.random_last_name()'; COMMENT ON COLUMN people.phone IS 'MASKED WITH FUNCTION anon.partial(phone,2,$$******$$,2)'; -- 4. 查询屏蔽敏感信息的用户 \! psql test -U skynet -c 'SELECT * FROM people;' id | name | phone -----+----------+------------ T800 | n3xtchen | 13******11
2.2 方案2:使用视图进行脱敏
(示例来自本地开发环境)
-- 1. 创建测试用户 create user root; create user normal_user; -- 2. 切换到root建表 & 视图 set role root; create table user_phone_number(id int, user_name name, phone_number name); insert into user_phone_number values(1, '张三', '12345678'); insert into user_phone_number values(1, '李四', '56781234'); create or replace view member_phone_number as SELECT S.id, S.user_name, substring(S.phone_number, 1,1) || '******' ||substring(S.phone_number, 8,8) as phone_number FROM user_phone_number AS S; -- 3. 回收表的权限,授予普通用户view权限 revoke all on user_phone_number from public; grant all on member_phone_number to normal_user; -- 4. 使用普通用户测试 reset role; set role normal_user; select * from user_phone_number; select * from member_phone_number;
结果如下:
3 优缺点比较
总的来看,喜欢“偷懒”、喜欢尝鲜的话,可以使用 postgresql_anonymizer 插件;但如果追求稳定,建议使用视图来实现。
4 参考
- PostgreSQL: 匿名化(Anonymizer)工具 官网:https://labs.dalibo.com/postgresql_anonymizer
- PostgreSQL: 匿名化(Anonymizer)工具 官方文档: https://postgresql-anonymizer.readthedocs.io/en/stable/
相关文章
- 【华为云专家原创】 服务注册与发现如何满足服务治理?
- 由两个问题引发的对GaussDB(DWS)负载均衡的思考
- 云上可靠性测试:让我们一起给开发找点事儿
- 用一把吃鸡的时间,免费上云搭建网站应用
- 一个企业用电有多浪费?90后开发者大显身手,让每度电从此更“聪明”!
- Demo分享丨看ModelArts与HiLens是如何让车自己跑起来的
- 如何通过一个SDK轻松搞定人脸识别,拯救初入职场的程序猿
- ModelArts黑科技揭秘|弹性训练,让训练资源张弛有度
- 道高一丈,且看CWE4.2的新特性
- 科技抗疫,少年可期,为这群有AI的天使开发者疯狂打call
- Multi-Architecture镜像制作指南已到,请查收!
- ModelArts黑科技揭秘|模型智能评估、诊断,让模型来个“体检
- Rust太难?那是你没看到这套Rust语言学习万字指南!
- 资深码农:拿下软件测试,只需掌握好这两种方法!
- 自定义TBE算子入门,不妨从单算子开发开始
- 华为全栈AI技术干货深度解析,解锁企业AI开发“秘籍”
- 应对游戏业务的四大“崩溃”场景有妙招,安全畅玩不是梦!
- 从中心到边缘,IoT正变为互联网之上的一张大网
- 顶会两篇论文连发,华为云医疗AI低调中崭露头角
- ECS实践案例丨逻辑卷的创建和扩容操作指导