如何使用GaussDB创建脱敏策略(MASKING POLICY)

目录

一、前言

二、GaussDB中的脱敏策略

1、数据脱敏的定义

2、创建脱敏策略的语法说明

三、在GaussDB中如何创建数据脱敏策略(示例)

1、创建脱敏策略的一般步骤

2、GaussDB数据库中创建脱敏策略的完整示例

1)开启安全策略开关,以初识用户omm登录,检查并开启安全策略开关

2)通过omm用户创建普通用户omm3,用户配置脱敏策略

3)创建测试表及测试数据,并赋权普通用户omm3

4)创建资源标签标记敏感列

5)创建脱敏策略

6)切换用户omm3进行查看

四、小结

一、前言

数据库作为存储和处理海量数据的关键基础设施,其安全性和隐私保护至关重要。在处理敏感数据时,为了保护数据隐私和安全,通常需要对数据进行脱敏处理。脱敏策略是指导如何进行数据脱敏的一系列规则和步骤。

GaussDB作为华为推出的关系型数据库管理系统,同样需要关注数据脱敏的需求。本文旨在为读者提供一个关于GaussDB创建脱敏策略的概述和基本使用,帮助读者更好地理解和学习。

二、GaussDB中的脱敏策略

1、数据脱敏的定义

数据脱敏,指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。这样就可以在开发、测试和其它非生产环境以及外包环境中安全地使用脱敏后的真实数据集。

在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。这是数据库安全技术之一。

2、创建脱敏策略的语法说明

CREATE MASKING POLICY policy_name masking_clause[, ...] policy_filter [ENABLE | DISABLE];

masking_clause

masking_function ON LABEL(label_name[, ...])

masking_function

maskall | randommasking | creditcardmasking | basicemailmasking | fullemailmasking | shufflemasking | alldigitsmasking | regexpmasking

GaussDB中预(内)置的脱敏方式:

  • maskall: 将字符串类型的所有值脱敏为x。例如:'1234-5678-9012-3456' 被脱敏为 'xxxxxxxxxxxxxxxxxxx'
  • randommasking: 使用随机策略脱敏,将字符串随机成字母和数字。
  • creditcardmasking: 对所有信用卡信息进行脱敏,仅对后4位之前的数字进行脱敏。例如:'1234-5678-9012-3456' 被脱敏为 'xxxx-xxxx-xxxx-3456'
  • basicemailmasking: 对出现第一个'@'之前的文本进行脱敏,将@符号之前的所有数据内容设为x。例如:‘123456@qq.com’被脱敏为‘xxxxxx@qq.com’。
  • fullemailmasking: 对出现最后一个'.'之前的文本(除'@'符外)进行脱敏,即对应内容设为x。例如:‘123456@qq.com’被脱敏为‘xxxxxx@xx.com’。
  • shufflemasking: 对字符值进行乱序排列脱敏。属于弱脱敏函数,语义较强的字符串不建议使用该函数脱敏。
  • alldigitsmasking: 仅对文本中的数字进行脱敏,例如:‘123abc’被脱敏为‘000abc’
  • regexpmasking(reg,replace_text,pos,reg_len): 将字符串类型的值进行正则表达式脱敏。参数reg为被替换的字符串,replace_text为替换后的字符串,pos为目标字符串开始替换的初始位置,为整数类型,reg_len为替换长度,为整数类型。reg、replace_text可以用正则表达,pos如果不指定则默认为0,reg_len如果不指定则默认为-1,即pos后所有字符串。如果用户输入参数与参数类型不一致,则会使用maskall方式脱敏。

policy_filter:

FILTER ON FILTER_TYPE(filter_value [,...])[,...]

FILTER_TYPE:  IP | APP | ROLES

主要参数说明:

  • masking_clause指出使用何种脱敏函数对被label_name标签标记的数据库资源进行脱敏。
  • policy_filter指出该脱敏策略对何种身份的用户生效,若为空表示对所有用户生效。
  • filter_value指具体过滤信息内容,例如指定的IP,具体的APP名称,具体的用户名等。
  • ENABLE|DISABLE可以打开或关闭脱敏策略。若不指定ENABLE|DISABLE,语句默认为ENABLE。

三、在GaussDB中如何创建数据脱敏策略(示例)

1、创建脱敏策略的一般步骤

在数据库中创建脱敏策略可以帮助保护敏感数据的安全性和隐私性。以下是创建脱敏策略的一般步骤:

  • 定义敏感数据:首先,确定哪些数据是敏感的,需要脱敏。比如个人身份信息(如姓名、身份证号码、电话号码等)、财务数据(如信用卡号、银行账号等)以及其他任何可能泄露敏感信息的字段。
  • 评估现有数据:查看数据库中现有的数据,了解敏感数据的分布和频率。这有助于确定哪些数据需要脱敏,以及脱敏的优先级。
  • 确定脱敏规则:根据敏感数据的类型和特点,确定适当的脱敏规则。例如,对于电话号码,您可能希望将其替换为无效号码;对于身份证号,您可能希望删除或替换其中的部分数字。
  • 创建脱敏脚本:使用如SQL等编写,实现自动执行脱敏操作。您可以使用数据库管理系统(如GaussDB、MySql等)提供的工具或函数等。
  • 测试脱敏脚本:在将脚本部署到生产环境之前,先在测试环境中进行测试。确保其能正确地脱敏敏感数据,并且不会对其他非敏感数据造成影响。
  • 部署脱敏脚本:一旦测试通过,就可以将脱敏脚本或程序部署到生产环境。
  • 监控和审计:建立监控和审计机制,以确保脱敏脚本或程序的正常运行和敏感数据的合规性。定期检查和验证脱敏操作的有效性,并记录任何异常或违规行为。
  • 更新和维护:随着业务需求的变化和数据安全标准的更新,定期更新和维护脱敏策略。检查新出现的数据类型和敏感信息,调整脱敏规则,确保数据安全和隐私保护的持续有效性。

2、GaussDB数据库中创建脱敏策略的完整示例

1)开启安全策略开关,以初识用户omm登录,检查并开启安全策略开关。

--检查数据库enable_security_policy参数是否为on。
SHOW enable_security_policy;

Tip设置参数值方式之一:例如直接找到数据库配置文件进行手工更改。

2)通过omm用户创建普通用户omm3,用户配置脱敏策略。

--创建普通用omm3
CREATE USER omm3 PASSWORD 'P@ssw0rd';--赋予用户omm3 public模式的权限。
GRANT ALL ON SCHEMA public TO omm3;

运行结果:

GaussDB=# CREATE USER omm3 PASSWORD 'P@ssw0rd';
NOTICE:  The encrypted password contains MD5 ciphertext, which is not secure.
CREATE ROLE
GaussDB=# GRANT ALL ON SCHEMA public TO omm3;
GRANT

3)创建测试表及测试数据,并赋权普通用户omm3。

--创建测试表
CREATE TABLE public.test_5(col1 text,col2 text,col3 text,col4 text,col5 text,col6 text,col7 text,col8 text
);--插入测试数据
INSERT INTO public.test_5(col1,col2,col3,col4,col5,col6,col7,col8
)
VALUES('张三','30岁','1234-5678-9012-3456','123456@qq.com','234567@qq.com','zhangsan','zhangsan9527'
,'1234-5678-9012-3456' 
);--赋予用户omm3 测试表权限
GRANT ALL ON public.test_5 TO omm3;

运行结果:

GaussDB=# CREATE TABLE public.test_5(    col1 text   ,col2 text   ,col3 text   ,col4 text   ,col5 text   ,col6 text   ,col7 text   ,col8 text );
CREATE TABLE
GaussDB=# INSERT INTO public.test_5(     col1    ,col2    ,col3    ,col4    ,col5    ,col6    ,col7    ,col8 ) VALUES(     '张三'    ,'30岁'    ,'1234-5678-9012-3456'    ,'123456@qq.com'    ,'234567@qq.com'    ,'zhangsan'    ,'zhangsan9527' ,'1234-5678-9012-3456'  );
INSERT 0 1
GaussDB=# select * from public.test_5;col1 | col2 |        col3         |     col4      |     col5      |   col6   |     col7     |        col8         
------+------+---------------------+---------------+---------------+----------+--------------+---------------------张三 | 30岁 | 1234-5678-9012-3456 | 123456@qq.com | 234567@qq.com | zhangsan | zhangsan9527 | 1234-5678-9012-3456
(1 row)
GaussDB=# GRANT ALL ON public.test_5 TO omm3;
GRANT

4)创建资源标签标记敏感列。

--创建资源标签标记敏感列。
CREATE RESOURCE LABEL mask_l1 ADD COLUMN(public.test_5.col1);
CREATE RESOURCE LABEL mask_l2 ADD COLUMN(public.test_5.col2);
CREATE RESOURCE LABEL mask_l3 ADD COLUMN(public.test_5.col3);
CREATE RESOURCE LABEL mask_l4 ADD COLUMN(public.test_5.col4);
CREATE RESOURCE LABEL mask_l5 ADD COLUMN(public.test_5.col5);
CREATE RESOURCE LABEL mask_l6 ADD COLUMN(public.test_5.col6);
CREATE RESOURCE LABEL mask_l7 ADD COLUMN(public.test_5.col7);
CREATE RESOURCE LABEL mask_l8 ADD COLUMN(public.test_5.col8);

运行结果:

GaussDB=# CREATE RESOURCE LABEL mask_l1 ADD COLUMN(public.test_5.col1); CREATE RESOURCE LABEL mask_l2 ADD COLUMN(public.test_5.col2); CREATE RESOURCE LABEL mask_l3 ADD COLUMN(public.test_5.col3); CREATE RESOURCE LABEL mask_l4 ADD COLUMN(public.test_5.col4); CREATE RESOURCE LABEL mask_l5 ADD COLUMN(public.test_5.col5); CREATE RESOURCE LABEL mask_l6 ADD COLUMN(public.test_5.col6); CREATE RESOURCE LABEL mask_l7 ADD COLUMN(public.test_5.col7); CREATE RESOURCE LABEL mask_l8 ADD COLUMN(public.test_5.col8);
CREATE RESOURCE LABEL
CREATE RESOURCE LABEL
CREATE RESOURCE LABEL
CREATE RESOURCE LABEL
CREATE RESOURCE LABEL
CREATE RESOURCE LABEL
CREATE RESOURCE LABEL
CREATE RESOURCE LABEL

5)创建脱敏策略。

脱敏策略详解参将上文“GaussDB中预(内)置的脱敏方式”:

--创建脱敏策略。
CREATE MASKING POLICY mask_p1 maskall ON LABEL(mask_l1);
CREATE MASKING POLICY mask_p2 randommasking ON LABEL(mask_l2);
CREATE MASKING POLICY mask_p3 creditcardmasking ON LABEL(mask_l3);
CREATE MASKING POLICY mask_p4 basicemailmasking ON LABEL(mask_l4);
CREATE MASKING POLICY mask_p5 fullemailmasking ON LABEL(mask_l5);
CREATE MASKING POLICY mask_p6 shufflemasking ON LABEL(mask_l6);
CREATE MASKING POLICY mask_p7 alldigitsmasking ON LABEL(mask_l7);
CREATE MASKING POLICY mask_p8 regexpmasking('[\d+]','*',3,15) ON LABEL(mask_l8);

运行结果:

GaussDB=# CREATE MASKING POLICY mask_p1 maskall ON LABEL(mask_l1); CREATE MASKING POLICY mask_p2 randommasking ON LABEL(mask_l2);CREATE MASKING POLICY mask_p3 creditcardmasking ON LABEL(mask_l3); CREATE MASKING POLICY mask_p4 basicemailmasking ON LABEL(mask_l4); CREATE MASKING POLICY mask_p5 fullemailmasking ON LABEL(mask_l5); CREATE MASKING POLICY mask_p6 shufflemasking ON LABEL(mask_l6); CREATE MASKING POLICY mask_p7 alldigitsmasking ON LABEL(mask_l7); CREATE MASKING POLICY mask_p8 regexpmasking('[\d+]','*',3,15) ON LABEL(mask_l8);
CREATE MASKING POLICY
CREATE MASKING POLICY
CREATE MASKING POLICY
CREATE MASKING POLICY
CREATE MASKING POLICY
CREATE MASKING POLICY
CREATE MASKING POLICY
CREATE MASKING POLICY

6)切换用户omm3进行查看。

GaussDB=> SELECT * FROM public.test_5;col1 | col2 |        col3         |     col4      |     col5      |   col6   |     col7     |        col8         
------+------+---------------------+---------------+---------------+----------+--------------+---------------------xx   | 8dd  | xxxx-xxxx-xxxx-3456 | xxxxxx@qq.com | xxxxxx@xx.com | hnaanzgs | zhangsan0000 | 123*-****-****-***6
(1 row)

对比脱敏前的结果:

通过以上示例,您可以创建一个有效的数据库脱敏策略,保护敏感数据的安全性和隐私性。请注意,具体的实现细节可能因数据库类型、编程语言和安全要求而有所不同。在实际操作中,请根据具体情况进行调整和定制化设置。

四、小结

在GaussDB数据库中实施脱敏策略,指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。在数据脱敏过程中,通常会采用不同的算法和技术,以根据不同的需求和场景对数据进行处理。

总的来说,实施脱敏策略,不仅可以防止未经授权的访问和滥用敏感数据,还可以降低数据泄露的风险,提高企业的合规性。通过脱敏处理,企业可以更好地平衡数据利用与隐私保护之间的关系,满足各种合规要求

——结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/238250.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业异常检测AnomalyGPT-训练试跑及问题解决

写在前面,AnomalyGPT训练试跑遇到的坑大部分好解决,只有在保存模型失败的地方卡了一天才解决,本来是个小问题,昨天没解决的时候尝试放弃在单卡的4090上训练,但换一台机器又遇到了新的问题,最后决定还是回来…

GZ075 云计算应用赛题第8套

2023年全国职业院校技能大赛(高职组) “云计算应用”赛项赛卷8 某企业根据自身业务需求,实施数字化转型,规划和建设数字化平台,平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”,拟采用开源OpenSt…

Python轴承故障诊断 (11)基于VMD+CNN-BiGRU-Attenion的故障分类

目录 往期精彩内容: 前言 模型整体结构 1 变分模态分解VMD的Python示例 2 轴承故障数据的预处理 2.1 导入数据 2.2 故障VMD分解可视化 2.3 故障数据的VMD分解预处理 3 基于VMD-CNN-BiGRU-Attenion的轴承故障诊断分类 3.1 定义VMD-CNN-BiGRU-Attenion分类网…

基于51单片机的模拟量输入输出通道实验

实验一 模拟量输入输出通道实验(C51) 一、实验目的: 1、了解A/D、D/A转换的基本原理。 2、了解A/D转换芯片ADC0809、D/A转换芯片DAC0832的性能及编程方法。 3、掌握过程通道中A/D转换与D/A转换与计算机的接口方法。 4、了解计算机如何进…

Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现Mono12和Mono16位深度的图像保存(C#)

Baumer工业相机堡盟工业相机如何联合BGAPI SDK和OpenCVSharp实现Mono12和Mono16位深度的图像保存(C#) Baumer工业相机Baumer工业相机保存位深度12/16位图像的技术背景代码案例分享1:引用合适的类文件2:NEOAPI SDK联合OpenCV进行图…

Mysql-redoLog

Redo Log redo log进行刷盘的效率要远高于数据页刷盘,具体表现如下 redo log体积小,只记录了哪一页修改的内容,因此体积小,刷盘快 redo log是一直往末尾进行追加,属于顺序IO。效率显然比随机IO来的快Redo log 格式 在MySQL的InnoDB存储引擎中,redo log(重做日志)被用…

Python字符串

目录 Python字符串字符串字面量用字符串向变量赋值多行字符串字符串是数组字符串负的索引字符串长度 字符串方法strip()lower()upper()replace()split() 检查字符串字符串级联(串联)字符串格式字符串方法 Python字符串 Python的字符串是字符的序列&#…

【Spring 篇】深入解析SpringMVC的组件魅力

SpringMVC,这个名字在Java Web开发者的耳边仿佛是一首动听的旋律,携着轻盈的氛围,带给我们一种愉悦的编程体验。但是,当我们深入探寻这个框架时,它的魅力远不止表面的简单,它由许多组件构成,每个…

解决方案类常用网址

1.操作系统类(原版操作系统下载网址) https://next.itellyou.cn/ 之前的版本 https://msdn.itellyou.cn/ 2.ppt免费网站(不用注册) https://www.1ppt.com/

pandas查看数据常用方法(以excel为例)

目录 1.查看指定行数的数据head() 2. 查看数据表头columns 3.查看索引index 4.指定索引列index_col 5.按照索引排序 6.按照数据列排序sort_values() 7.查看每列数据类型dtypes 8.查看指定行列数据loc 9.查看数据是否为空isnull() 1.查看指定行数的数据head() &#xff…

CAN总线记录仪在车企服务站的应用

CAN总线记录仪在车企服务站的应用 CAN总线记录仪在车企服务站中有着广泛的应用。这种设备可以记录车上的CAN总线数据,方便工程师进行分析,以找出可能存在的问题。CAN记录仪一般采用TF卡来存储数据,实现离线脱机实时存储。数据存储完毕后&…

api密钥管理系统有哪些功能

API密钥管理在当今的软件开发和运营中扮演着至关重要的角色。随着微服务和云计算的普及,越来越多的应用程序依赖于外部API来提供核心功能。与此同时,这些API通常需要某种形式的身份验证,以确保请求来自合法和受信任的来源。API密钥管理正是为…

RMI简介

RMI 介绍 RMI (Remote Method Invocation) 模型是一种分布式对象应用,使用 RMI 技术可以使一个 JVM 中的对象,调用另一个 JVM 中的对象方法并获取调用结果。这里的另一个 JVM 可以在同一台计算机也可以是远程计算机。因此,RMI 意味着需要一个…

我为什么要写RocketMQ消息中间件实战派上下册这本书?

我与RocketMQ结识于2018年,那个时候RocketMQ还不是Apache的顶级项目,并且我还在自己的公司做过RocketMQ的技术分享,并且它的布道和推广,还是在之前的首席架构师的带领下去做的,并且之前有一个技术神经质的人&#xff0…

13 | 使用代理ip爬取安居客房源信息

这是一个简单的Python爬虫代码,用于从安居客网站爬取房地产信息。该爬虫使用了代理IP来绕过可能的封禁,并提供了一些基本的信息抽取功能。 如果访问过多,那么可能出现了验证码 对此,最好的方法就是换ip。 使用代理IP的主要目的是保护爬虫的稳定性和隐私。以下是一些常见的原…

Qt/QML编程学习之心得:一个音频播放器的实现(29)

在window下,打开音乐播放器,然后打开一个.mp3文件,就可以实现播放了,那么在Qt/QML中如何实现呢?首先所有的设计都是基于音乐播放器的,嵌入式linux下同样也有音乐播放器,比如mplayer。其调用方法如下,可以启动一个从头开始播放音频的mplayer进程。 那么音频播放器就是给…

【WPF.NET开发】WPF中的版式

本文内容 改进的文本质量和性能丰富的版式增强的国际文本支持增强的字体支持新的文本应用程序编程接口 (API) 本主题介绍 WPF 的主要版式功能。 这些功能包括改进的文本呈现质量和性能、OpenType 版式支持、增强的国际文本、增强的字体支持和新的文本应用程序编程接口 (API)。…

Material Design 进阶(十一)——Chip,ChipGroup,ChipDrawable使用

流式布局标签发展历程 第一阶段:实现这种界面的时候,基本都是自定义一个控件,然后在Java代码中动态的 添加一个个的TextView,还需要计算布局宽度/高度,进行换行等等处理,比较复杂;第二阶段:使用…

tailwindcss真的好用吗?

写在前面 今天写一篇关于tailwindcss 的文章,其实这个css技术已经出现很久了,在一些大型项目很多人也已经在用了,虽然不是说必须要会吧,但是没听说过肯定是不行的,他的操作逻辑应该是和unocss差不多,但是今…

1 快速前端开发

前端开发 1 前端开发1.快速开发网站2.浏览器能识别的标签2.1 编码(head)2.2 title(head)2.3 标题2.4 div和span2.4.5 超链接2.4.6 图片小结2.4.7 列表2.4.8 表格2.4.9 input系列(7个)2.4.10 下拉框2.4.11 多…