CREATE MASKING POLICY

功能描述

创建脱敏策略。

注意事项

只有poladmin、sysadmin或初始用户能执行此操作。

需要开启安全策略开关,即设置GUC参数enable_security_policy=on,脱敏策略才可以生效。

预置脱敏函数的执行效果及支持的数据类型请参考《关于openGauss》中“特性描述 > 数据库安全 > 动态数据脱敏机制”章节。

语法格式

1. CREATE MASKING POLICY policy_name masking_clause[, ...]* policy_filter [ENABLE | DISABLE];
  • masking_clause:

1. masking_function ON LABEL(label_name[, ...]*) - masking_function:

maskall不是预置函数,硬编码在代码中,不支持\df展示。

预置时脱敏方式如下:

1. maskall | randommasking | creditcardmasking | basicemailmasking | fullemailmasking | shufflemasking | alldigitsmasking | regexpmasking - policy_filter:

1. FILTER ON FILTER_TYPE(filter_value [,...]*)[,...]* - FILTER_TYPE:

1. IP | APP | ROLES

参数说明

  • policy_name

审计策略名称,需要唯一,不可重复。

取值范围:字符串,要符合标识符的命名规范。 - label_name

资源标签名称。 - masking_clause

指出使用何种脱敏函数对被label_name标签标记的数据库资源进行脱敏,支持用schema.function的方式指定脱敏函数。 - policy_filter

指出该脱敏策略对何种身份的用户生效,若为空表示对所用用户生效。 - FILTER_TYPE

描述策略过滤的条件类型,包括IP | APP | ROLES。 - filter_value

指具体过滤信息内容,例如具体的IP、具体的APP名称、具体的用户名。 - ENABLE|DISABLE

可以打开或关闭脱敏策略。若不指定ENABLE|DISABLE,语句默认为ENABLE。

示例

1. --创建dev_mask和bob_mask用户。
2. openGauss=# CREATE USER dev_mask PASSWORD 'dev@1234';
3. openGauss=# CREATE USER bob_mask PASSWORD 'bob@1234';

5. --创建一个表tb_for_masking
6. openGauss=# CREATE TABLE tb_for_masking(col1 text, col2 text, col3 text);

8. --创建资源标签标记敏感列col1
9. openGauss=# CREATE RESOURCE LABEL mask_lb1 ADD COLUMN(tb_for_masking.col1);

11. --创建资源标签标记敏感列col2
12. openGauss=# CREATE RESOURCE LABEL mask_lb2 ADD COLUMN(tb_for_masking.col2);

14. --对访问敏感列col1的操作创建脱敏策略
15. openGauss=# CREATE MASKING POLICY maskpol1 maskall ON LABEL(mask_lb1);

17. --创建仅对用户dev_mask和bob_mask,客户端工具为psql和gsql,IP地址为'10.20.30.40', '127.0.0.0/24'场景下生效的脱敏策略。
18. openGauss=# CREATE MASKING POLICY maskpol2 randommasking ON LABEL(mask_lb2) FILTER ON ROLES(dev_mask, bob_mask), APP(psql, gsql), IP('10.20.30.40', '127.0.0.0/24');

相关链接

ALTER MASKING POLICY,DROP MASKING POLICY。