云数据库 GAUSSDB-CREATE MASKING POLICY:示例

时间:2024-11-13 14:45:29

示例

  • 创建使用maskall的脱敏策略(将字符串类型的所有值脱敏为x,其它几种类型显示为该类型的默认值)。
    --创建一个表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);
    
    --访问tb_for_masking表,col1列触发脱敏策略。
    gaussdb=# SELECT col1 FROM tb_for_masking;
        col1    
    ------------
     xxxxxxxxxx
    (1 row)
    
  • 创建使用randommasking的脱敏策略(将字符串类型的值脱敏为随机数字,并且每次都是不同的值)。
    --创建资源标签标记敏感列col2。
    gaussdb=# CREATE RESOURCE LABEL mask_lb2 ADD COLUMN(tb_for_masking.col2);
    
    --创建一个名为maskpol2的脱敏策略。
    gaussdb=# CREATE MASKING POLICY maskpol2 randommasking ON LABEL(mask_lb2);
    
    --访问tb_for_masking表,col2列触发脱敏策略。
    gaussdb=# SELECT col2 FROM tb_for_masking;
       col2    
    -----------
     0e8612d9a
    (1 row)
    
  • 创建使用basicemailmasking的脱敏策略(将字符串类型邮箱格式值@符号之前的所有数据内容设为x)。
    --创建资源标签标记敏感列col3。
    gaussdb=# CREATE RESOURCE LABEL mask_lb3 ADD COLUMN(tb_for_masking.col3);
    
    --创建一个名为maskpol3的脱敏策略。
    gaussdb=# CREATE MASKING POLICY maskpol3 basicemailmasking ON LABEL(mask_lb3);
    
    --访问tb_for_masking表,col3列触发脱敏策略。
    gaussdb=# SELECT col3 FROM tb_for_masking;
         col3      
    ----------------
     xxx@huawei.com
    (1 row)
    
  • 创建使用fullemailmasking的脱敏策略(将字符串类型邮箱格式值仅保留@符号和邮箱dot结尾,其余全部设为x)。
    --创建资源标签标记敏感列col4。
    gaussdb=# CREATE RESOURCE LABEL mask_lb4 ADD COLUMN(tb_for_masking.col4);
    
    --创建一个名为maskpol4的脱敏策略。
    gaussdb=# CREATE MASKING POLICY maskpol4 fullemailmasking ON LABEL(mask_lb4);
    
    --访问tb_for_masking表,col4列触发脱敏策略。
    gaussdb=# SELECT col4 FROM tb_for_masking; 
        col4      
    ----------------
     xxx@xxxxxx.com
    (1 row)
  • 创建使用creditcardmasking的脱敏策略(将字符串类型的值保留连接符号-和末尾4位数字,其余全部设为x)。
    --创建资源标签标记敏感列col5。
    gaussdb=# CREATE RESOURCE LABEL mask_lb5 ADD COLUMN(tb_for_masking.col5);
    
    --创建一个名为maskpol5的脱敏策略。
    gaussdb=# CREATE MASKING POLICY maskpol5 creditcardmasking ON LABEL(mask_lb5);
    
    --访问tb_for_masking表, col5列触发脱敏策略。
    gaussdb=# SELECT col5 FROM tb_for_masking;
           col5         
    ---------------------
     xxxx-xxxx-xxxx-0123
    (1 row)
    
  • 创建使用shufflemasking的脱敏策略(将字符串类型的值交换位置,打乱顺序)。
    --创建资源标签标记敏感列col6。
    gaussdb=# CREATE RESOURCE LABEL mask_lb6 ADD COLUMN(tb_for_masking.col6);
    
    --创建一个名为maskpol6的脱敏策略。
    gaussdb=#  CREATE MASKING POLICY maskpol6 shufflemasking ON LABEL(mask_lb6);
    
    --访问tb_for_masking表, col6列触发脱敏策略。
    gaussdb=# SELECT col6 FROM tb_for_masking;
                   col6                 
    -------------------------------------
     2 b6jusfd54c3312 13d23lk3jf3  2eai 
    (1 row)
           
    
  • 创建使用regexpmasking的脱敏策略(将字符串类型的值进行正则表达式脱敏)。
    --创建资源标签标记敏感列col7。
    gaussdb=# CREATE RESOURCE LABEL mask_lb7 ADD COLUMN(tb_for_masking.col7);
    
    --创建一个名为maskpol7的脱敏策略。
    gaussdb=# CREATE MASKING POLICY maskpol7 regexpmasking('[\d+]','*',2, 9) ON LABEL(mask_lb7);
    
    --访问tb_for_masking表,col7列触发脱敏策略。
    gaussdb=# SELECT col7 FROM tb_for_masking;    
            col7         
    ---------------------
     48**-****-*545-2525
    (1 row)
    
  • 创建仅对用户dev_mask和bob_mask,客户端工具为gsql,IP地址为'172.31.17.160', '127.0.0.0/24'场景下生效的脱敏策略。
    --创建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');
    
    --访问tb_for_masking表,col8列触发脱敏策略。
    gaussdb=# SELECT * FROM tb_for_masking;
    
    --使用gsql工具,IP地址为'172.31.17.160',用户dev_mask查看tb_for_masking。
    gaussdb=# GRANT ALL PRIVILEGES TO dev_mask;
    
    --使用maskpol8脱敏,结果随机,每次不同。
    gaussdb=# SELECT col8 FROM tb_for_masking;
            col8        
    --------------------
     cf32a9aa427f219ab0
    (1 row)
    
    gaussdb=# SELECT col8 FROM tb_for_masking;
            col8        
    --------------------
     13efa056dda1e1a474
    (1 row)
    
  • 删除数据。
    --删除脱敏策略。
    gaussdb=# DROP MASKING POLICY maskpol1, maskpol2, maskpol3, maskpol4, maskpol5, maskpol6, maskpol7, maskpol8;
    
    --删除资源标签。
    gaussdb=# DROP RESOURCE LABEL mask_lb1, mask_lb2, mask_lb3, mask_lb4, mask_lb5, mask_lb6, mask_lb7, mask_lb8;
    
    --删除表tb_for_masking。
    gaussdb=# DROP TABLE tb_for_masking;
    
    --删除用户dev_mask和bob_mask。
    gaussdb=# DROP USER dev_mask, bob_mask;
    
support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0554.html