ALTER REDACTION POLICY
功能描述
修改应用在指定表的脱敏策略。
注意事项
只有待修改脱敏策略所应用表对象的属主和被授予gs_redaction_policy预置角色的用户才有修改脱敏策略的权限。
语法格式
- 修改脱敏策略生效表达式。
1
ALTER REDACTION POLICY policy_name ON table_name WHEN (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
[INHERIT] ADD COLUMN column_name WITH redaction_function_name ( [ argument [, ...] ] ) | [INHERIT] MODIFY COLUMN column_name WITH redaction_function_name ( [ argument [, ...] ] ) | DROP COLUMN column_name
参数说明
参数 |
描述 |
取值范围 |
---|---|---|
policy_name |
待修改的脱敏策略名。 |
已存在的脱敏策略名。 |
table_name |
待修改的脱敏策略应用的表对象名。 |
已存在的表名。 |
when_expression |
脱敏策略新的生效表达式。 |
- |
ENABLE | DISABLE |
当前脱敏策略是否生效。
|
- |
new_policy_name |
新的脱敏策略名。 |
字符串,需符合标识符命名规范。 |
column_name |
脱敏表对象的列字段名。
|
- |
redaction_function_name |
脱敏函数名。 |
支持的函数请参考数据脱敏函数。 |
arguments |
脱敏函数的参数列表。
|
支持的函数请参考数据脱敏函数。 |
示例
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); |
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; |