CREATE MASKING POLICY
功能描述
创建脱敏策略。
注意事项
只有poladmin、sysadmin或初始用户能执行此操作。
需要开启安全策略开关,即设置GUC参数enable_security_policy设置为on时,脱敏策略才可以生效。
语法格式
CREATE MASKING POLICY policy_name masking_clause [, ... ] [ policy_filter_clause ] [ ENABLE | DISABLE ];
其中masking_clause为:
masking_function ON LABEL(label_name [, ... ])
其中masking_function为:
maskall不是预置函数,硬编码在代码中,不支持df展示。
预置时脱敏方式如下:
{ maskall | randommasking | creditcardmasking | basicemailmasking | fullemailmasking | shufflemasking | alldigitsmasking | regexpmasking }
其中policy_filter_clause为:
FILTER ON { ( FILTER_TYPE ( filter_value [, ... ] ) ) [, ... ] }
其中FILTER_TYPE为:
{ APP | ROLES | IP }
参数说明
policy_name
审计策略名称,需要唯一,不可重复。
取值范围:字符串,要符合标识符的命名规范。
label_name
资源标签名称。
masking_clause
指出使用何种脱敏函数对被label_name标签标记的数据库资源进行脱敏,支持用
schema.function
的方式指定脱敏函数。policy_filter_clause
指出该脱敏策略对何种身份的用户生效,若为空表示对所用用户生效。
FILTER_TYPE
描述策略过滤的条件类型,包括IP、APP、ROLES。
filter_value
指具体过滤信息内容,例如具体的IP、具体的APP名称、具体的用户名。
ENABLE | DISABLE
可以打开或关闭脱敏策略。若不指定ENABLE|DISABLE,语句默认为ENABLE。
示例
1、创建dev_mask和bob_mask用户。
CREATE USER dev_mask PASSWORD 'dev@1234';
CREATE USER bob_mask PASSWORD 'bob@1234';
2、创建一个表tb_for_masking。
CREATE TABLE tb_for_masking(col1 text, col2 text, col3 text);
3、创建资源标签标记敏感列col1。
CREATE RESOURCE LABEL mask_lb1 ADD COLUMN(tb_for_masking.col1);
4、创建资源标签标记敏感列col2。
CREATE RESOURCE LABEL mask_lb2 ADD COLUMN(tb_for_masking.col2);
5、对访问敏感列col1的操作创建脱敏策略。
CREATE MASKING POLICY maskpol1 maskall ON LABEL(mask_lb1);
6、创建仅对用户dev_mask和bob_mask,客户端工具为psql和vsql,IP地址为'10.20.30.40', '127.0.0.0/24'场景下生效的脱敏策略。
CREATE MASKING POLICY maskpol2 randommasking ON LABEL(mask_lb2) FILTER ON ROLES(dev_mask, bob_mask), APP(psql, vsql), IP('10.20.30.40', '127.0.0.0/24');