GAUSSDB-动态数据脱敏

举报
yd_294088545 发表于 2026/01/12 22:00:04 2026/01/12
【摘要】 语法格式CREATE MASKING POLICY policy_name masking_clause[, ...] [ policy_filter_clause ] [ENABLE | DISABLE];masking_clause:masking_function ON LABEL(label_name[, ...])masking_function:maskall不是预置函数,不支持...

语法格式

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
脱敏策略名称,需要唯一,不可重复。

取值范围:字符串,要符合标识符命名规范,且最大长度不超过63个字符。若超过63个字符,数据库会截断并保留前63个字符当作脱敏策略名称。当脱敏策略名称中包含大写字母时,数据库会自动转换为小写字母,如果需要创建包含大写字母的脱敏策略名称,则需要使用双引号括起来。

说明:
标识符需要为小写字母(a~z)、大写字母(A~Z)、下划线(_)、数字(0~9)或美元符号($),且必须以字母或下划线开头。

label_name
资源标签名称。

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

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

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

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

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

示例

安全策略状态,默认是关闭off。

show enable_security_policy;

开启安全策略

gs_guc reload -Z coordinator -N all -I all -c "enable_security_policy=on"
show enable_security_policy;


为col1设置脱敏策略,使用maskall对col1列进行数据脱敏
--使用资源标签标记col1列
create resource label mask_lb1 add column(tb_for_masking.col1);
--为col1列制定脱敏策略
create masking policy maskpol1 maskall on label(mask_lb1);


为maskpol1脱敏策略添加描述信息”masking policy for tb_for_masking.col1”
alter masking policy maskpol1 comments 'masking policy for tb_for_masking.col1';

为maskpol1脱敏策略在原基础上新增对col2列做随机脱敏,脱敏函数使用randommasking
--使用资源标签标记col2列
create resource label mask_lb2 add column(tb_for_masking.col2);
--修改maskpol1添加脱敏方式
alter masking policy maskpol1 add randommasking on label(mask_lb2);


修改maskpol1移除在col2列上的randommasking脱敏方式
alter masking policy maskpol1 remove randommasking on label(mask_lb2);

修改maskpol1修改一项脱敏方式,将在col1列上的maskall脱敏策略改为randommasking脱敏
alter masking policy maskpol1 modify randommasking on label(mask_lb1);

修改脱敏策略maskpol1使之仅对用户dev_mask和bob_mask,客户工具为psql和gsql,IP地址为’10.20.30.40’,’127.0.0.0/24’场景生效
alter masking policy maskpol1 modify (filter on roles(dev_mask,bob_mask),app(psql,gsql),IP('10.20.30.40','127.0.0.0/24'));

修改脱敏策略maskpol1,使之对所有用户场景生效
alter masking policy maskpol1 drop filter;

禁用脱敏策略
alter masking policy maskpol1 disable;

删除脱敏策略及资源标签
drop masking policy maskpol1;
drop resource label mask_lb1,mask_lb2; 
【要先删除策略,再删除资源标签。如果先删除资源标签,会提示有一或多个策略在使用这个资源标签】

查看脱敏策略
select * from GS_MASKING_POLICY;


查看脱敏策略对应的脱敏行为
select * from GS_MASKING_POLICY_ACTIONS;

记录动态数据脱敏策略对应的用户过滤条件
select * from GS_MASKING_POLICY_FILTERS;

记录所有的资源标签
select * from GS_POLICY_LABEL;

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。