当前位置: 首页 > news >正文

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

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

——结束

相关文章:

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

目录 一、前言 二、GaussDB中的脱敏策略 1、数据脱敏的定义 2、创建脱敏策略的语法说明 三、在GaussDB中如何创建数据脱敏策略(示例) 1、创建脱敏策略的一般步骤 2、GaussDB数据库中创建脱敏策略的完整示例 1)开启安全策略开关,以初识用户omm登录…...

【Golang map并发报错】panic: assignment to entry in nil map

go并发写map[string]interface{}数据的时候,报错:panic: assignment to entry in nil map 多个key同时操作一个map时,如: test[key1] 1 test[key2] "a" test[key3] true 就会遇到并发nil值报错,什么…...

【GO语言依赖】Go语言依赖管理简述

在运行环境中,遭遇报错,显示找不到函数 经过研究后发现需要进行依赖管理,进行如下操作后解决: 起源 最早的时候,Go所依赖的所有的第三方库都放在GOPATH这个目录下面。这就导致了同一个库只能保存一个版本的代码。如…...

论文阅读记录SuMa SuMa++

首先是关于SuMa的阅读,SuMa是一个完整的激光SLAM框架,核心在于“基于面元(surfel)”的过程,利用3d点云转换出来的深度图和法向量图来作为输入进行SLAM的过程,此外还改进了后端回环检测的过程,利用提出的面元的概念和使…...

性能分析与调优: Linux 内存观测工具

目录 一、实验 1.环境 2.vmstat 3.PSI 4.swapon 5.sar 6.slabtop 7.numstat 8.ps 9.top 10.pmap 11.perf 12.bpftrace 二、问题 1.接口读写报错 2.slabtop如何安装 3.numactl如何安装 4.numad启动服务与关闭NUMA 5. perf如何安装 6. kernel-lt-doc与kern…...

【ARM 嵌入式 编译系列 3.4 -- 查看所依赖库文件的路径 详细介绍】

文章目录 问题背景库文件路径查看库文件路径信息打印显示连接标准库不使用标准库 libgcc.a问题背景 在自己构建的 Makefle系统中对 cortex-m33 代码编译时,在链接阶段总是报出下面问题 ... arm-none-eabi-ld: cannot find libgcc.a: No such file or directory arm-none-eab…...

分布式锁3: zk实现分布式锁3 使用临时顺序节点+watch监听实现阻塞锁

一 zk实现分布式锁 1.1 使用临时顺序节点 的问题 接上一篇文章,每个请求要想正常的执行完成,最终都是要创建节点,如果能够避免争抢必然可以提高性能。这里借助于zk的临时序列化节点,实现分布式锁 1. 主要修改了构造方法和lock方…...

google drive api

1.创建oauth2 json 文件 https://developers.google.com/drive/api/quickstart/pythoncchttps://developers.google.com/drive/api/quickstart/python这里要注意quickstart的code会经常更新,有可能之前的版本不能用了 比方说下面这个包 from google.oauth2.crede…...

3_代理模式(动态代理JDK原生和CGLib)

一.代理模式 1.概念 代理模式(Proxy Pattern )是指为其他对象提供一种代理,以控制对这个对象的访问,属于结构型模式。 在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的…...

Linux的权限(1)

目录 操作系统的"外壳"程序 外壳程序是什么? 为什么存在外壳程序? 外壳程序怎么运行操作? 权限 什么是权限? 权限的本质? Linux中的(人)用户权限? su和su -的区别…...

数据安全保障的具体措施有哪些

随着信息化时代的到来,数据已经成为企业和社会发展的重要资产。然而,数据安全问题也日益突出,如何保障数据的安全性、完整性和可用性成为了亟待解决的问题。以下将详细探讨数据安全保障的各个方面,以期为企业和社会提供更好的数据…...

浅谈标签及应用场景

一、标签的定义 标签是根据业务场景的需求,通过对目标对象(包含静态、动态特性),运用抽象、归纳、推理等算法得到的高度精炼的特征标识,用于差异化管理与决策。标签由标签名称和标签值组成,打在目标对象上…...

Linux动态分配IP与正向解析DNS

目录 一、DHCP分配 1. 动态分配 1.1 服务端服务安装 1.2 修改服务端dhcp配置 1.3 修改客户端dhcp,重启查询网卡信息 2. 根据mac固定分配 2.1 修改服务器端dhcp服务配置 2.2 客户端自动获取,查看网卡信息 二、时间同步 1. 手动同步 2. 自动同…...

pyspark 使用udf 进行预测,发现只起了一个计算节点

PySpark UDF 只使用一个计算节点的问题 原因分析 默认的并行度设置 PySpark在执行UDF(用户定义函数)时,默认可能不会利用所有可用的计算节点。这是因为UDF通常在单个节点上执行,并且如果没有正确设置分区,可能会导致数…...

mysql触发器的简单使用

mysql触发器 触发器是一个特殊的存储过程,在事件delete、insert、update发生时自动执行一条或多条SQL语句(执行多条SQL语句需要用begin、end 包裹起来) 创建触发器 创建触发器的四大必要条件 唯一的触发器名称触发器关联的表触发器响应的…...

全志T113开发板Qt远程调试

1引言 通常情况下工程师在调试Qt程序时,需要频繁制作镜像烧录到核心板来测试Qt程序是否完善,这样的操作既费时又费力。这时我们可以通过QtCreator设备功能,定义设备后,在x86_64虚拟机上交叉编译qt程序,将程序远程部署到…...

学习使用php、js脚本关闭当前页面窗口的方法

学习使用php、js脚本关闭当前页面窗口的方法 前言方法一:使用JavaScript代码方法二:通过http头文件来实现方法三:使用服务器端脚本来实现 前言 在开发web应用程序时,我们通常需要在不同的网页之间进行导航。通常情况下&#xff0…...

python 人脸检测与人脸识别

安装库文件: pip install dlib face_recognition import dlib import face_recognition import cv2 from PIL import Image, ImageDraw# 判断运行环境 cpu or gpu def check_env():print(dlib.DLIB_USE_CUDA)print(dlib.cuda.get_num_devices())# 判断人脸在图片当中的位置 def…...

RT-Thread: ulog 日志 讲解和使用

说明:记录 RT-Thread: ulog 日志功能和使用流程。 官网资料链接: https://docs.rt-thread.org/#/rt-thread-version/rt-thread-standard/programming-manual/ulog/ulog 1.ulog 简介 日志的定义:日志是将软件运行的状态、过程等信息&#x…...

git ssh key 配置

一、Profile Settings-->SSH Keys 我们点击这里会有详情的文档介绍生成sshkey。 ssh-keygen -t rsa -b 2048 -C "邮箱" --回车... 将生成的id_rsa.pub粘贴到如下保存 git config --global user.name "用户名" git config --global user.email "邮…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...