GaussDB-ALTER MASKING POLICY

56 阅读4分钟

GaussDB-ALTER MASKING POLICY

功能描述

修改脱敏策略。

注意事项
  • 只有poladmin,sysadmin或初始用户才能执行此操作。
  • 需要开启安全策略开关,即设置GUC参数“enable_security_policy”=“on”,脱敏策略才可以生效。
语法格式
  • 修改策略描述:

    | ``` ALTER MASKING POLICY policy_name COMMENTS policy_comments;

    | ------------------------------------------------------------------- |
    
    ![](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/e6cccd5d2c754848bd6e348f19d9d917~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1771897413&x-signature=2sc46iKTUtXhnEaWqf4Dg3PSoBw%3D)
    
  • 修改脱敏方式:

    | ``` ALTER MASKING POLICY policy_name {ADD | REMOVE | MODIFY} masking_actions[, ...];

    | ----------------------------------------------------------------------------------------- |
    
    ![](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/fc157382c5bb439bbee71bf7a309e98e~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1771897413&x-signature=%2Bbgmf8VR2Vir2iMO5BYdb3J%2FZMQ%3D)
    
    -   其中masking_actions:
    
        | ```
            masking_function ON LABEL(label_name[, ...]) 
        ``` |
        | --------------------------------------------------------- |
    
        ![](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/e36d579f6fba41e29f45334d34547a7c~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1771897413&x-signature=YKZPGVEu%2BV%2F7Bbpg8J%2BCkislp18%3D)
    
    -   其中masking_function:
    
        | ```
           { maskall | randommasking | creditcardmasking | basicemailmasking | fullemailmasking | shufflemasking | alldigitsmasking | regexpmasking } 
        ``` |
        | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
    
        ![](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/56b9a1bd7a71454a9be4acfec6150a85~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1771897413&x-signature=0HxVQkurRfYn%2FFB%2Be68yvk057lA%3D)
    
  • 修改脱敏策略生效场景:

    | ``` ALTER MASKING POLICY policy_name MODIFY (filter_group_clause);

    | ----------------------------------------------------------------------- |
    
    ![](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/09fed10408dd432ea7772cae27735d6c~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1771897413&x-signature=uyZ8WRrKgwZAxXJLsyQAcHx629k%3D)
    
    -   其中filter_group_clause:
    
        | ```
            FILTER ON { ( FILTER_TYPE ( filter_value [, ... ] ) ) [, ... ] } 
        ``` |
        | ----------------------------------------------------------------------------- |
    
        ![](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/5ffa8f8b751c4486a992d81147fee6b9~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1771897413&x-signature=elc%2BU%2FqYbuRFhDnFBLF9X4kEHrE%3D)
    
  • 移除脱敏策略生效场景,使策略对所用场景生效:

    | ``` ALTER MASKING POLICY policy_name DROP FILTER;

    | ------------------------------------------------------ |
    
    ![](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/b717453e543746d3addf5891ed37b677~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1771897413&x-signature=NiyzVZPDQYfyMey9dpBnWnFboGQ%3D)
    
  • 修改脱敏策略开启/关闭:

    | ``` ALTER MASKING POLICY policy_name {ENABLE | DISABLE};

    | ------------------------------------------------------------- |
    
    ![](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/4734ea9c7723418292fffb825f1b03c4~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgamVycnl3YW5nMTk4Mw==:q75.awebp?rk3s=f64ab15b&x-expires=1771897413&x-signature=YnD626oL2QP1DmODu9sHWE6dWd8%3D)
    
参数说明
  • policy_name

    脱敏策略名称,需要唯一,不可重复。

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

  • policy_comments

    需要为脱敏策略添加或修改的描述信息。

  • masking_function

    指的是预置的八种脱敏方式或者用户自定义的函数,支持模式。

    maskall不是预置函数,不支持\df展示。

    预置时脱敏方式如下:

    { maskall | randommasking | creditcardmasking | basicemailmasking | fullemailmasking | shufflemasking | alldigitsmasking | regexpmasking }
    
  • label_name

    资源标签名称。

  • FILTER_TYPE

    指定脱敏策略的过滤信息,过滤类型包括:IP、ROLES、APP。

  • filter_value

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

  • ENABLE|DISABLE

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

示例
  • 修改策略描述:

    --创建一个表tb_for_masking。
    gaussdb=# CREATE TABLE tb_for_masking(idx int, col1 text, col2 text, col3 text, col4 text, col5 text, col6 text, col7 text,col8 text);
    
    --向表tb_for_masking插入数据。
    gaussdb=# INSERT INTO tb_for_masking VALUES(1, '9876543210', 'usr321usr', 'abc@huawei.com', 'abc@huawei.com', '1234-4567-7890-0123', 'abcdef 123456 ui 323 jsfd321 j3k2l3', '4880-9898-4545-2525', 'this is a llt case'); 
    
    --查看数据。
    gaussdb=# SELECT * FROM tb_for_masking;
     idx |    col1    |   col2    |      col3      |      col4      |        col5         |                col6           
          |        col7         |        col8        
    -----+------------+-----------+----------------+----------------+---------------------+-------------------------------
    ------+---------------------+--------------------
       1 | 9876543210 | usr321usr | abc@huawei.com | abc@huawei.com | 1234-4567-7890-0123 | abcdef 123456 ui 323 jsfd321 j
    3k2l3 | 4880-9898-4545-2525 | this is a llt case
    (1 row)
    
    --创建资源标签标记敏感列col1。
    gaussdb=# CREATE RESOURCE LABEL mask_lb1 ADD COLUMN(tb_for_masking.col1);
    
    --创建一个名为maskpol1的脱敏策略。
    gaussdb=# CREATE MASKING POLICY maskpol1 maskall ON LABEL(mask_lb1);
    
    --为脱敏策略maskpol1添加描述。
    gaussdb=# ALTER MASKING POLICY maskpol1 COMMENTS 'masking policy for tb_for_masking.col1';
    
    --查看脱敏策略maskpol1的描述。
    gaussdb=# SELECT * FROM GS_MASKING_POLICY;                
     polname  |              polcomments               |         modifydate         | polenabled 
    ----------+----------------------------------------+----------------------------+------------
     maskpol1 | masking policy for tb_for_masking.col1 | 2023-11-07 16:38:31.607374 | t
    (1 row)
    
  • 修改脱敏策略:

    --创建资源标签标记敏感列col2。
    gaussdb=# CREATE RESOURCE LABEL mask_lb2 ADD COLUMN(tb_for_masking.col2);
    
    --脱敏策略maskpol1新增randommasking的脱敏方式。
    gaussdb=# ALTER MASKING POLICY maskpol1 ADD randommasking ON LABEL(mask_lb2);
    
    --访问tb_for_masking表,col2列触发脱敏策略。
    gaussdb=# SELECT col2 FROM tb_for_masking;
        col2   
    ------------
     27e8da66cc
    (1 row)
    
    --脱敏策略maskpol1移除randommasking的脱敏方式。
    gaussdb=# ALTER MASKING POLICY maskpol1 REMOVE randommasking ON LABEL(mask_lb2);
    
    --访问表tb_for_masking,col2列的数据没有脱敏,说明脱敏方式randommasking失效。
    gaussdb=# SELECT col2 FROM tb_for_masking;
       col2    
    -----------
     usr321usr
    (1 row)
    
    --脱敏策略maskpol1修改为randommasking的脱敏方式。
    gaussdb=# ALTER MASKING POLICY maskpol1 MODIFY randommasking ON LABEL(mask_lb1);
    
    --访问tb_for_masking表,col1列触发脱敏策略。
    gaussdb=# SELECT col1 FROM tb_for_masking;
        col1    
    ------------
     5a03debac1
    (1 row)
    
  • 修改脱敏策略生效场景:

    --创建dev_mask和bob_mask用户。
    gaussdb=# CREATE USER dev_mask PASSWORD '********';
    gaussdb=# CREATE USER bob_mask PASSWORD '*********';
    
    --创建资源标签标记敏感列col8。
    gaussdb=# CREATE RESOURCE LABEL mask_lb8 ADD COLUMN(tb_for_masking.col8); 
    
    --创建一个名为maskpol8的脱敏策略。
    gaussdb=# CREATE MASKING POLICY maskpol8 randommasking ON LABEL(mask_lb8) FILTER ON ROLES(dev_mask, bob_mask), APP(gsql), IP('172.31.17.160', '127.0.0.0/24');
    
    --修改脱敏策略maskpol8的过滤信息ROLES。
    gaussdb=# ALTER MASKING POLICY maskpol1 MODIFY (FILTER ON ROLES(dev_mask));
    
    --使用dev_mask用户查看tb_for_masking。
    gaussdb=# GRANT ALL PRIVILEGES TO dev_mask;
    
    --访问tb_for_masking表,col8列触发脱敏策略。
    gaussdb=# SELECT col8 FROM tb_for_masking;
            col8        
    --------------------
     f134e06ef528013b46
    (1 row)
    
  • 移除脱敏策略生效场景,使策略对所用场景生效:

    gaussdb=# ALTER MASKING POLICY maskpol1 DROP FILTER;
    
  • 禁用脱敏策略:

    --禁用脱敏策略maskpol1。
    gaussdb=# ALTER MASKING POLICY maskpol1 DISABLE;
    
    --查看脱敏策略maskpol1的状态,polenabled字段的值为f,说明该脱敏策略禁用成功。
    gaussdb=# SELECT * FROM GS_MASKING_POLICY;
     polname  | polcomments |         modifydate         | polenabled 
    ----------+-------------+----------------------------+------------
     maskpol1 |             | 2023-11-07 17:22:54.594111 | f
    
  • 删除数据:

    --删除脱敏策略。
    gaussdb=# DROP MASKING POLICY maskpol1, maskpol8;
    
    --删除资源标签。
    gaussdb=# DROP RESOURCE LABEL mask_lb1, mask_lb2, mask_lb8;
    
    --删除表tb_for_masking。
    gaussdb=# DROP TABLE tb_for_masking;
    
    --删除用户dev_mask和bob_mask。
    gaussdb=# DROP USER dev_mask, bob_mask;
    
相关链接

CREATE MASKING POLICYDROP MASKING POLICY

更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…