更新时间:2024-11-01 GMT+08:00
分享

CREATE MASKING POLICY

功能描述

创建脱敏策略。

注意事项

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

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

语法格式

1
2
3
CREATE MASKING POLICY policy_name masking_clause[, ...]* policy_filter [ 
policy_filter_clause
 ][ENABLE | DISABLE];
  • masking_clause:
    1
    masking_function ON LABEL(label_name[, ...])
    
  • masking_function:

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

    预置时脱敏方式如下:
    { maskall | randommasking | creditcardmasking | basicemailmasking | fullemailmasking | shufflemasking | alldigitsmasking | regexpmasking }
  • policy_filter_clause:
    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
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
--创建dev_mask和bob_mask用户。
openGauss=# CREATE USER dev_mask PASSWORD '********';
openGauss=# CREATE USER bob_mask PASSWORD '********';

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

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

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

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

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

--删除脱敏策略。
openGauss=# DROP MASKING POLICY maskpol1, maskpol2;

--删除资源标签。
openGauss=# DROP RESOURCE LABEL mask_lb1, mask_lb2;

--删除表tb_for_masking。
openGauss=# DROP TABLE tb_for_masking;

--删除用户dev_mask和bob_mask。
openGauss=# DROP USER dev_mask, bob_mask;

相关文档