更新时间:2024-11-27 GMT+08:00
ALTER REDACTION POLICY
功能描述
修改应用在指定表的脱敏策略。
注意事项
只有待修改脱敏策略所应用表对象的属主才有修改脱敏策略的权限。
语法格式
- 修改脱敏策略生效表达式。
1
ALTER REDACTION POLICY policy_name ON table_name WHEN (new_when_expression);
- 使脱敏策略生效或失效。
1
ALTER REDACTION POLICY policy_name ON table_name ENABLE | DISABLE;
- 重命名脱敏策略。
1
ALTER REDACTION POLICY policy_name ON table_name RENAME TO new_policy_name;
- 修改脱敏列,包括新增、修改、删除脱敏列。
1 2
ALTER REDACTION POLICY policy_name ON table_name action;
其中,脱敏列操作action可以是以下子句之一:
1 2 3
ADD COLUMN column_name WITH function_name ( arguments ) | MODIFY COLUMN column_name WITH function_name ( arguments ) | DROP COLUMN column_name
参数说明
- policy_name
待修改的脱敏策略名。
- table_name
待修改的脱敏策略应用的表对象名。
- new_when_expression
脱敏策略新的生效表达式。
- ENABLE | DISABLE
当前脱敏策略是否生效。
- new_policy_name
新的脱敏策略名。
- column_name
脱敏表对象的列字段名。
如果新增脱敏列,则指定列字段尚未绑定任何脱敏函数。
如果修改脱敏列,则指定列字段为已存在的脱敏列。
如果删除脱敏列,则指定列字段为已存在的脱敏列。
- function_name
脱敏函数名。
- arguments
脱敏函数的参数列表。
- MASK_NONE,表示不进行任何脱敏处理。
- MASK_FULL,表示全脱敏成固定值。
- MASK_PARTIAL,表示按指定的字符类型,数值类型或时间类型进行部分脱敏处理。
示例
创建用户test_role和示例表emp并插入数据:
1
|
CREATE ROLE test_role PASSWORD '{Password}'; |
1 2 3 |
DROP TABLE IF EXISTS emp; CREATE TABLE emp(id int, name varchar(20), salary NUMERIC(10,2)); INSERT INTO emp VALUES(1, 'July', 1230.10), (2, 'David', 999.99); |
为表对象emp创建脱敏策略mask_emp,字段salary对用户test_role不可见:
1
|
CREATE REDACTION POLICY mask_emp ON emp WHEN(current_user = 'test_role') ADD COLUMN salary WITH mask_full(salary); |
修改脱敏策略生效表达式,使其对指定角色生效(若不指定用户,默认对当前用户生效):
1 2 |
ALTER REDACTION POLICY mask_emp ON emp WHEN (pg_has_role(current_user, 'redact_role', 'member')); ALTER REDACTION POLICY mask_emp ON emp WHEN (pg_has_role('redact_role', 'member')); |
修改脱敏策略生效表达式,使其对所有用户均生效:
1
|
ALTER REDACTION POLICY mask_emp ON emp WHEN (1=1); |
修改脱敏策略,使其失效:
1
|
ALTER REDACTION POLICY mask_emp ON emp DISABLE; |
重新使脱敏策略生效:
1
|
ALTER REDACTION POLICY mask_emp ON emp ENABLE; |
重命名脱敏策略为mask_emp_new:
1
|
ALTER REDACTION POLICY mask_emp ON emp RENAME TO mask_emp_new; |
新增脱敏列:
1
|
ALTER REDACTION POLICY mask_emp_new ON emp ADD COLUMN name WITH mask_partial(name, '*', 1, length(name)); |
修改脱敏列name,采用脱敏函数MASK_FULL对name字段数据全脱敏:
1
|
ALTER REDACTION POLICY mask_emp_new ON emp MODIFY COLUMN name WITH mask_full(name); |
删除已存在的脱敏列:
1
|
ALTER REDACTION POLICY mask_emp_new ON emp DROP COLUMN name; |
父主题: DDL语法