内 容 背 景
功 能 介 绍
适 用 场 景
配 置 步 骤
1. 参数开关
在启用数据编辑之前,需打开参数开关:redaction_policy。可通过命令行或直接修改 conf 文件进行修改。命令行格式如下:
alter system set redaction_policy to on;
select pg_reload_conf();
2. 测试步骤
首先,创建测试用户,如下:
1、create user dzqzpassword 'Hello@123';
2、create user sms password 'Hello@123';
3、create user ruoyipassword 'Hello@123';
1.CREATE TABLE dzqz.student(
2.id serial,
3.name character varying(10),
4.birthday timestamp without time zone,
5.sex character(1),
6.address character varying(50),
7.tel character varying(13)
8.email character varying(100),
9.bankcard character varying(30)
10.);
11.insert into dzqz.student (id,name,birthday,sex,address,tel,email,bankcard) values
12.('2','刘明','1985-01-23 00:00:00.0','1','河南省郑州郑西区花园小区11号','17789235146','17789235146@163.com','95599-80868-43587-5810');
13.insert into dzqz.student (id,name,birthday,sex,address,tel,email,bankcard) values
14.('3','郑霞','1985-10-23 00:00:00.0','0','河南省郑州管城区111号','13567890012','13567890012@126.com','62170-03860-00279-5290');
15.insert into dzqz.student (id,name,birthday,sex,address,tel,email,bankcard) values
16.('4','牛美丽','1986-04-23 00:00:00.0','0','重庆解放牌嘉陵西路200号','13987560029','13987560029@sina.com','62226-20590-00078-1124');
17.insert into dzqz.student (id,name,birthday,sex,address,tel,email,bankcard) values
18.('1','张立生','1986-01-23 00:00:00.0','1','河北省邯郸临漳区三台街道11号','13456789012','13456789012@qq.com','62111-62550-20091-8255');
19.---赋权给sms和ruoyi用户
20.grant select on table studenf to sms、ruoyi;
测试一:对 name 列进行脱敏处理
测试二:对 email 列、bankcar 列进行处理
3. 修改策略
目前修改策略可使用以下几种方式:
ALTER REDACTION POLICY policyname MODIFY COLUMN colname USING func_name;
ALTER REDACTION POLICY policyname RENAME TO policyname2;
ALTER REDACTION POLICY policyname DISABLE/ENABLE;
ALTER REDACTION POLICY policyname DROP COLUMN colname;
ALTER REDACTION POLICY policyname for (user = ‘username’);
ALTER REDACTION POLICY policyname ADD COLUMN colname USING func_name
4. 删除策略
DROP REDACTION POLICY policynamelist
例:
DROP REDACTION POLICY p1;
DROP REDACTION POLICY p1,p2;
5. 限制
(2)一张表中只能创建一个策略。
规 则 介 绍
函数名称 |
支持的数据类型 |
描述 |
redact_bankcard |
VARCHAR,NVARCHAR,TEXT(注:仅针对信用卡格式的文本类数据) |
'4880-9898-4545-2525' 将会被脱敏为'xxxx-xxxx-xxxx-2525',该函数仅对后 4 位之前的数字进行脱敏。 |
redact_emailname |
VARCHAR,NVARCHAR,TEXT (注:仅针对 email 格式的文本类型数据) |
'abcd@gmail.com' 将会被脱敏为'xxxx@gmail.com', 对出现第一个'@'之前的文本进行脱敏。 |
redact_emailfull |
VARCHAR,NVARCHAR,TEXT (注:仅针对 email 格式的文本类型数据) |
'abcd@gmail.com' 将会被脱敏为 'xxxx@xxxxx.com',对出现最后一个'.'之前的文本(除'@'符外)进行脱敏。 |
redact_digits |
VARCHAR,NVARCHAR,TEXT (注:仅针对包含数字的文本类型数据) |
'alex123alex' 将会被脱敏为'alex000alex', 仅对文本中的数字进行脱敏。 |
redact_shuffle |
VARCHAR, VARCHAR,TEXT (注:仅针对文本类型数据) |
'hello word' 将会被随机打乱顺序脱敏为 'hlwoeor dl',该函数通过字符乱序排列的方式实现,属于弱脱敏函数,语义较强的字符串不建议使用该函数脱敏。 |
redact_random |
VARCHAR,NVARCHAR,TEXT (注:仅针对文本类型数据) |
'hello word' 将会被脱敏为'ad5f5ghdf5',将文本按字符随机脱敏 |
redact_all |
BOOL,TIME,TIMETZ, INTERVAL, TIMESTAMP,TIMESTAMPTZ, TEXT,VARCHAR,INT8,INT4, INT2, NUMRIC, FLOAT4, FLOAT8 |
1)每个字符均脱敏为 x; 2)不带时间戳的 timestamp和 date 类型脱敏为: 1970-01-01 00:00:00 3)带时间戳的timestamp 类型脱敏为: 1970-01-01 00:00:00-05 4)不带时间戳的 time 类型脱敏为:00:00:00 5)带时间戳的time 类型脱敏为:00:00:00+00 6)interval 类型脱敏为:00:00:00 7)布尔类型均脱敏为f |
redact_idcard |
VARCHAR,NVARCHAR,TEXT (注:仅针对身份证格式的文本类型数据) |
对身份证号进行脱敏。 130623202101010623'将被脱敏为 '130623********0623',该函数保留身份证号的前六位和后四位,中间的号码用*代替。 |
redact_name |
VARCHAR,NVARCHAR,TEXT (注:仅针对姓名的文本类型数据) |
对姓名进行脱敏。两个字的姓名将第一个字用*脱敏,三个字及以上的将倒数第二个字用*脱敏。如“张三”被脱敏为“张*”,“张三丰”被脱敏为“张*丰”,“富兰克林”被脱敏为“富兰*林”。 |
redact_phone |
VARCHAR,NVARCHAR,TEXT 注:仅针对电话号码的文本类型数据) |
对电话号码进行脱敏。适用于手机号和固话号。保留前三位和后四位,对中间数字进行脱敏。如“13534556093”脱敏为“135****6093”。 |
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
加入交流群
请使用微信扫一扫!