美文网首页大数据,机器学习,人工智能代码改变世界
如何实现特定列脱敏?这两种方法你都要会

如何实现特定列脱敏?这两种方法你都要会

作者: 华为云开发者联盟 | 来源:发表于2020-09-02 15:07 被阅读0次

摘要:有些情况下,有些表的特定列含有敏感数据,如何让特定的人看到特定的数据呢?

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 参考

1. PostgreSQL: 匿名化(Anonymizer)工具 官网:https://labs.dalibo.com/postgresql_anonymizer

2. PostgreSQL: 匿名化(Anonymizer)工具 官方文档:https://postgresql-anonymizer.readthedocs.io/en/stable/

点击关注,第一时间了解华为云新鲜技术~

相关文章

  • 如何实现特定列脱敏?这两种方法你都要会

    摘要:有些情况下,有些表的特定列含有敏感数据,如何让特定的人看到特定的数据呢? 1 需求 有些情况下,有些表的特定...

  • 数据脱敏处理

    什么是脱敏 数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。简单来说就是你有些数...

  • SPA 中前端路由原理与实现方式

    SPA 中前端路由原理与实现方式 通常 SPA 中前端路由有2中实现方式,本文会简单快速总结这两种方法及其实现: ...

  • 筑基25、26课

    25课 第二单元系统脱敏法 脱敏就是摆脱敏感的意思。系统脱敏就是逐步的摆脱敏感。系统脱敏法的基本方法和原理就是用放...

  • 聊聊如何自定义数据脱敏

    前言 什么是数据脱敏 数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护 常用脱敏规...

  • 1. 网络协议的基本概念

    网络协议,决定两台设备如何通过互联网实现数据的传递,数据如何穿过中转设备 特定的场合用特定的协议,会更好 C/C+...

  • Sharding-JDBC-数据脱敏

    数据脱敏 该章节主要介绍如何使用数据脱敏功能,如何进行相关配置。数据脱敏功能即可与数据分片功能共同使用,又可作为单...

  • 办公必备技能: 在Excel多单元格中一次性填充相同内容

    连续单元格内一次性填充方法 场景如图:需要在B列中,都填充“陈晨”。如何快速实现填充? 方法一:双击实现快速填充。...

  • 记录—Vue实现页面刷新(provide和inject )

    Vue实现页面刷新 普通方法:location.reload();this.$router.go(0);这两种方法...

  • pandas优化一例

    pandas在修改特定行特定列的某个值的时候可以采用以下方法:search_index是某个dataframe数据...

网友评论

    本文标题:如何实现特定列脱敏?这两种方法你都要会

    本文链接:https://www.haomeiwen.com/subject/mjkwsktx.html