alter system set redaction_policy to on; select pg_reload_conf();
2、创建编辑策略
语法:
CREATE REDACTION POLICY <name> ON <table_name> [ ADD [ COLUMN ] <column_name>[,…] USING <funcname_clause> ] [, ...] [ FOR ( <expression> ) ] DISABLE/ENABLE;
解析:
name:当前策略的名称,
table_name:当前数据编辑策略作用为哪张表
column_name:策略应用于哪个列
funcname_clause:数据编辑函数名称,目前支持的脱敏函数见下文函数列表
expression:表达式,即对哪些用户执行数据编辑策略。比如 user=’u1’,就是对 u1
3、示例
1)确认参数开启 highgo=> show redaction_policy; redaction_policy ------------------ on (1 row) 2)创建测试用户 create user u1 password 'Hello@123'; create user u2 password 'Hello@123'; create user u3 password 'Hello@123'; 3)在用户 u3 下创建测试表,并赋予 u1 和 u2 用户 select 权限 \c highgo u3 create table test(id int, col1 varchar,info text); insert into test values(1,'abc','test'); insert into test values(2,'abcabcabc','testtesttest'); grant select on test to u1,u2; 4)使用 syssso 用户创建数据编辑策略 \c highgo syssso create redaction policy p1 on test add column col1 using redact_all for (user = ‘u1’); //该策略仅对 u1 用户生效 5)查看数据 \c highgo u1 select * from test; ----期望查看到 col1 列为脱敏后数据 结果如下: id | col1 | info ----+-----------+-------------- 1 | xxx | test 2 | xxxxxxxxx | testtesttest (2 rows) \c highgo u2 select * from test; -----期望查看到明文 结果如下: id | col1 | info ----+-----------+-------------- 1 | abc | test 2 | abcabcabc | testtesttest (2 rows) 6)同时指定多列 由于同一个表只能创建一个数据编辑策略,所以先删掉 p1,再创建: \c highgo syssso drop redaction policy p1; create redaction policy p2 on test add column id using redact_bankcard,add column info using redact_shuffle for (user = ‘u1’); 即:对列 id 使用 redact_bankcard 函数,列 info 使用 redact_shuffle 函数。 查看数据: \c highgo u1 select * from test; 结果如下: id | col1 | info ----+-----------+-------------- 0 | abc | tset 0 | abcabcabc | etststttetse (2 rows) //redact_bankcard 函数不支持对 int 类型进行脱敏,所以自动使用 redact_all 对 int 类型进行脱敏,结果为 0。 7)创建数据编辑策略,但是不启用 \c highgo syssso drop redaction policy p2; create redaction policy p3 on test add column id using redact_bankcard,add column info using redact_shuffle for (user = ‘u1’) disable; 查看数据: \c highgo u1 select * from test; 结果为明文: id | col1 | info ----+-----------+-------------- 1 | abc | test 2 | abcabcabc | testtesttest (2 rows)