循序渐进丨MogDB 数据库特性之动态数据脱敏机制

aeb7f61b7c96e270f0dfb6c6849418d1.jpeg

数据脱敏是行之有效的数据库隐私保护方案之一,可以在一定程度上限制非授权用户对隐私数据的窥探。动态数据脱敏机制是一种通过定制化脱敏策略来实现对隐私数据保护的技术,可以在保留原始数据的前提下有效地解决非授权用户对敏感信息访问的问题。当管理员指定待脱敏对象和定制数据脱敏策略后,用户所查询的数据库资源如果关联到对应的脱敏策略时,则会根据用户身份和脱敏策略进行数据脱敏,从而限制非授权用户对隐私数据的访问。事实上,MogDB 数据库自1.1.0版本就引入了动态数据脱敏机制。

函数名
示例
creditcardmasking‘4880-9898-4545-2525’将会被脱敏为‘xxxx-xxxx-xxxx-2525’,该函数仅对后4位之前的数字进行脱敏。
basicemailmaskingabcd@gmail.com将会被脱敏为xxxx@gmail.com,对出现第一个'@'之前的文本进行脱敏。
fullemailmaskingabcd@gmail.com将会被脱敏为xxxx@xxxxx.com,对出现最后一个'.'之前的文本(除'@'符号外)进行脱敏。
alldigitsmasking‘alex123alex’将会被脱敏为‘alex000alex’,仅对文本中的数字进行脱敏。
shufflemasking‘hello word’将会被随机打乱顺序脱敏为‘hlwoeor dl’,该函数通过字符乱序排列的方式实现,属于弱脱敏函数,语义较强的字符串不建议使用该函数脱敏。
randommasking‘hello word’将会被脱敏为‘ad5f5ghdf5’,将文本按字符随机脱敏。
regexpmasking需要用户顺序输入四个参数:reg为被替换的字符串;replace_text为替换后的字符串;pos为目标字符串开始替换的初始位置,为整数类型;reg_len为替换长度,为整数类型。reg、replace_text可以用正则表达,pos如果不指定则默认为0,reg_len如果不指定则默认为-1,即pos后所有字符串。如果用户输入参数与参数类型不一致,则会使用maskall方式脱敏。CREATE MASKING POLICY msk_creditcard regexpmasking(’[\d+]’, ‘x’, 5, 9) ON LABEL(label_for_creditcard);
maskall‘4880-9898-4545-2525’将会被脱敏为‘xxxxxxxxxxxxxxxxxxx’。

特性约束

  • 动态数据脱敏策略需要由具备POLADMIN或SYSADMIN属性的用户或初始用户创建,普通用户没有访问安全策略系统表和系统视图的权限。

  • 动态数据脱敏只在配置了脱敏策略的数据表上生效,而审计日志不在脱敏策略的生效范围内。

  • 在一个脱敏策略中,对于同一个资源标签仅可指定一种脱敏方式,不可重复指定。

  • 不允许多个脱敏策略对同一个资源标签进行脱敏,除以下脱敏场景外:使用FILTER指定策略生效的用户场景,包含相同资源标签的脱敏策略间FILTER生效场景无交集,此时可以根据用户场景明确辨别资源标签被哪种策略脱敏。

  • Filter中的APP项建议仅在同一信任域内使用,由于客户端不可避免的可能出现伪造名称的情况,该选项使用时需要与客户端联合形成一套安全机制,减少误用风险。一般情况下不建议使用,使用时需要注意客户端仿冒的风险。

  • 对于带有query子句的INSERT或MERGE INTO操作,如果源表中包含脱敏列,则上述两种操作中插入或更新的结果为脱敏后的值,且不可还原。

  • 在内置安全策略开关开启的情况下,执行ALTER TABLE EXCHANGE PARTITION操作的源表若在脱敏列则执行失败。

  • 对于设置了动态数据脱敏策略的表,需要谨慎授予其他用户对该表的trigger权限,以免其他用户利用触发器绕过脱敏策略。

  • 最多支持创建98个动态数据脱敏策略。

  • 仅支持使用上述预置脱敏策略。

  • 仅支持对只包含COLUMN属性的资源标签做脱敏。

  • 仅支持对基本表的列进行数据脱敏。

  • 仅支持对SELECT查询到的数据进行脱敏。

实际案例

开启安全策略

MogDB=# alter system set enable_security_policy=on;
ALTER SYSTEM SET
MogDB=# show enable_security_policy;enable_security_policy 
------------------------on
(1 row)

参数说明: 安全策略开关,控制统一审计和数据动态脱敏策略是否生效。

1. 证件保留尾号脱敏(creditcardmasking)

MogDB=# create user mask_user password 'Password#123';
NOTICE:  The encrypted password contains MD5 ciphertext, which is not secure.
CREATE ROLE
MogDB=# alter user mask_user sysadmin;
ALTER ROLE[omm@master01 ~]$ gsql -r -d postgres -U mask_user -W "Password#123"
gsql ((MogDB 5.0.4 build 070c88a0) compiled at 2023-11-25 12:57:09 commit 0 last mr 1804 )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.MogDB=> CREATE TABLE creditcard_info (id_number int, name varchar(100),credit_card varchar(19));
CREATE TABLE
MogDB=> INSERT INTO creditcard_info values(1,'Wusx','4880-9898-4545-2525');
INSERT 0 1
MogDB=> CREATE RESOURCE LABEL label_for_creditcard ADD COLUMN(mask_user.creditcard_info.credit_card);
CREATE RESOURCE LABEL
MogDB=> CREATE MASKING POLICY mask_creditcard creditcardmasking ON LABEL(label_for_creditcard);
CREATE MASKING POLICY
MogDB=> select * from mask_user.creditcard_info;id_number | name |     credit_card     
-----------+------+---------------------1 | Wusx | xxxx-xxxx-xxxx-2525

2、邮箱地址前缀脱敏(basicemailmasking)

[omm@master01 ~]$ gsql -r -d postgres -U mask_user -W Password#123
gsql ((MogDB 5.0.4 build 070c88a0) compiled at 2023-11-25 12:57:09 commit 0 last mr 1804 )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.MogDB=> create table mail_list(id_number int, name varchar(100),mail_addr varchar(200));
CREATE TABLE
MogDB=> INSERT INTO mail_list values(1,'Wusx','shixing.wu@enmotech.com');
INSERT 0 1
MogDB=> CREATE RESOURCE LABEL label_for_mail_list ADD COLUMN(mask_user.mail_list.mail_addr);
CREATE RESOURCE LABEL
MogDB=> CREATE MASKING POLICY mask_mail_list basicemailmasking ON LABEL(label_for_mail_list);
CREATE MASKING POLICY
MogDB=> select * from mask_user.mail_list;id_number | name |        mail_addr        
-----------+------+-------------------------1 | Wusx | xxxxxxxxxx@enmotech.com
(1 row)

3、邮箱地址前缀+域名脱敏(fullemailmasking)

[omm@master01 ~]$ gsql -r -d postgres -U mask_user -W Password#123
gsql ((MogDB 5.0.4 build 070c88a0) compiled at 2023-11-25 12:57:09 commit 0 last mr 1804 )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
MogDB=> drop MASKING POLICY mask_mail_list;
DROP MASKING POLICY
MogDB=> CREATE MASKING POLICY mask_mail_list fullemailmasking ON LABEL(label_for_mail_list);
CREATE MASKING POLICY
MogDB=> select * from mask_user.mail_list;
id_number | name |        mail_addr        
-----------+------+-------------------------
1 | Wusx | xxxxxxxxxx@xxxxxxxx.com
(1 row)

4、数字脱敏(alldigitsmasking)

MogDB=> create table account_detail(id_number int, name varchar(100),balance_detail varchar(2000));
CREATE TABLE
MogDB=> INSERT INTO account_detail values(1,'Wusx','余额:9999888800');
INSERT 0 1
MogDB=> CREATE RESOURCE LABEL label_for_account_detail ADD COLUMN(mask_user.account_detail.balance_detail);
CREATE RESOURCE LABEL
MogDB=> CREATE MASKING POLICY mask_account_detail alldigitsmasking ON LABEL(label_for_account_detail);
CREATE MASKING POLICY
MogDB=> select * from mask_user.account_detail;id_number | name |  balance_detail  
-----------+------+------------------1 | Wusx | 余额:0000000000
(1 row)

5、乱序脱敏(shufflemasking)

[omm@master01 ~]$ gsql -r -d postgres -U mask_user -W Password#123
gsql ((MogDB 5.0.4 build 070c88a0) compiled at 2023-11-25 12:57:09 commit 0 last mr 1804 )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
MogDB=>
MogDB=> INSERT INTO account_detail values(2,'Thomas Anderson','余额:9999888800');
INSERT 0 1
MogDB=> CREATE RESOURCE LABEL label_for_account_detail_name ADD COLUMN(mask_user.account_detail.name);
CREATE RESOURCE LABEL
MogDB=> CREATE MASKING POLICY mask_account_detail_name shufflemasking ON LABEL(label_for_account_detail_name);
CREATE MASKING POLICY
MogDB=> select id_number,name from mask_user.account_detail where id_number=2;
id_number |      name       
-----------+-----------------
2 | or ssAanToendhm
(1 row)
MogDB=> select id_number,name from mask_user.account_detail where id_number=2;
id_number |      name       
-----------+-----------------
2 | sdmTosne Aanohr
(1 row)
MogDB=> select id_number,name from mask_user.account_detail where id_number=2;
id_number |      name       
-----------+-----------------
2 | ods rTamhAneosn
(1 row)

6、随机字符替代脱敏(randommasking)

MogDB=> drop MASKING POLICY mask_account_detail_name;
DROP MASKING POLICY
MogDB=> CREATE MASKING POLICY mask_account_detail_name randommasking ON LABEL(label_for_account_detail_name);
CREATE MASKING POLICY
MogDB=> select id_number,name from mask_user.account_detail where id_number=2;id_number |      name       
-----------+-----------------2 | b3b0b109ff5e150
(1 row)

7、正则表达式脱敏(regexpmasking)

MogDB=> drop MASKING POLICY mask_account_detail_name;
DROP MASKING POLICY
MogDB=> CREATE MASKING POLICY mask_account_detail_name regexpmasking('Thomas', 'Halo', 0, 9 )  ON LABEL(label_for_account_detail_name);
CREATE MASKING POLICY
MogDB=> select id_number,name from mask_user.account_detail where id_number=2;id_number |     name      
-----------+---------------2 | Halo Anderson
(1 row)

8、全遮蔽脱敏(maskall)

MogDB=> drop MASKING POLICY mask_account_detail_name;
DROP MASKING POLICY
MogDB=> CREATE MASKING POLICY mask_account_detail_name maskall ON LABEL(label_for_account_detail_name);
CREATE MASKING POLICY
MogDB=> select id_number,name from mask_user.account_detail where id_number=2;id_number |      name       
-----------+-----------------2 | xxxxxxxxxxxxxxx
(1 row)

关于作者

许玉晨,云和恩墨 MogDB 技术支持工程师,有12年左右的金融、保险、政府、地税、运营商等业务关键型系统的运维经验,曾担任公司异常恢复东区接口人,负责紧急异常恢复工作,目前负责国产化 MogDB 数据库的推广工作。

859b4ff2eb5352d871cad4d66e82d37a.gif

数据驱动,成就未来,云和恩墨,不负所托!


云和恩墨创立于2011年,以“数据驱动,成就未来”为使命,是智能的数据技术提供商。我们致力于将数据技术带给每个行业、每个组织、每个人,构建数据驱动的智能未来。

云和恩墨在数据承载(分布式存储、数据持续保护)、管理(数据库基础软件、数据库云管平台、数据技术服务)、加工(应用开发质量管控、数据模型管控、数字化转型咨询)和应用(数据服务化管理平台、数据智能分析处理、隐私计算)等领域为各个组织提供可信赖的产品、服务和解决方案,围绕用户需求,持续为客户创造价值,激发数据潜能,为成就未来敏捷高效的数字世界而不懈努力。

198b9318e2e2ad496d913fae15955172.gif

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

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

相关文章

稀碎从零算法笔记Day10-LeecCode:赎金信

题型:哈希表、字符串 链接:383. 赎金信 - 力扣(LeetCode) 来源:LeetCode 题目描述 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以…

Cloud-Sleuth分布式链路追踪(服务跟踪)

简介 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个前端请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败 GitHub - spring-cloud/spring-cloud-sl…

文案高手不能说的秘密,拿来就用的文案素材库

一、素材描述 本套文案素材,大小58.20M,共有43个文件。 二、素材目录 (一)、一阶文案库 01.1-文案写作行业:年入百万文案高手的赚钱朋友圈!.pdf 02.2-个人品牌创业:全网顶流个人品牌大咖都…

WPF(1)的MVVM的数据驱动学习示例

MVVM Model:数据模型、View 界面、ViewModel 业务逻辑处理 项目结构 界面数据绑定 <Window x:Class"WpfApp1.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/x…

自然语言发展历程

一、基础知识 自然语言处理&#xff1a;能够让计算理解人类的语言。 检测计算机是否智能化的方法&#xff1a;图灵测试 自然语言处理相关基础点&#xff1a; 基础点1——词表示问题&#xff1a; 1、词表示&#xff1a;把自然语言中最基本的语言单位——词&#xff0c;将它转…

【H5C3】提高课程笔记

一.HTML5新特性 1.语义化标签 &#xff08;★★&#xff09; 以前布局&#xff0c;我们基本用 div 来做。div 对于搜索引擎来说&#xff0c;是没有语义的 <div class“header”> </div> <div class“nav”> </div> <div class“content”> &l…

python:布伊山德U检验(Buishand U test,BUT)突变点检测(以NDVI时间序列为例)

作者:CSDN @ _养乐多_ 本文将介绍布伊山德U检验(Buishand U test,BUT)突变点检测代码。以 NDVI 时间序列为例。输入数据可以是csv,一列NDVI值,一列时间。代码可以扩展到遥感时间序列突变检测(突变年份、突变幅度等)中。 结果如下图所示, 文章目录 一、准备数据二、…

基于Token的身份验证:安全与效率的结合

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

前端文件上传

文件上传方式 前端文件上传有两种方式&#xff0c;第一种通过二进制blob传输&#xff08;formData传输&#xff09;&#xff0c;第二种是通过base64传输 文件相关的对象 file对象其实是blob的子类 blob对象的第一个参数必须是一个数组&#xff0c;你可以把一个file对象放进去…

C语言连接【MySQL】

稍等更新图片。。。。 文章目录 安装 MySQL 库连接 MySQLMYSQL 类创建 MySQL 对象连接数据库关闭数据库连接示例 发送命令设置编码格式插入、删除或修改记录查询记录示例 参考资料 安装 MySQL 库 在 CentOS7 下&#xff0c;使用命令安装 MySQL&#xff1a; yum install mysq…

关于查看 CentOS7虚拟机的 ip地址

1. 启动网卡 1.1 打开网卡配置文件。 vi /etc/sysconfig/network-scripts/ifcfg-eth01.2 启动网卡 修改为下图中的ONBOOTyes 2. 重启网络服务 sudo service network restart3. 查看ip地址 ip addr

MySQL8.0数据库开窗函数

简介 数据库开窗函数是一种在SQL中使用的函数&#xff0c;它可以用来对结果集中的数据进行分组和排序&#xff0c;以便更好地分析和处理数据。开窗函数与聚合函数不同&#xff0c;它不会将多行数据聚合成一行&#xff0c;而是保留每一行数据&#xff0c;并对其进行分组和排序。…

HellaSwag数据集分享

来源: AINLPer公众号&#xff08;每日干货分享&#xff01;&#xff01;&#xff09; 编辑: ShuYini 校稿: ShuYini 时间: 2024-3-10 该数据集是由斯坦福大学研究人员提出的&#xff0c;用于评估NLP模型在常识自然语言推理&#xff08;NLI&#xff09;任务上的性能&#xff0c;…

凌鲨微应用架构

微应用是静态网页加上凌鲨提供的扩展能力而形成的一种应用&#xff0c;主要特点是开发便捷&#xff0c;安全。 微应用架构 组件说明 名称 说明 微应用 webview窗口&#xff0c;显示web服务器上的页面 接口过滤器 根据权限配置,屏蔽非授权接口访问 接口提供者 tauri注入…

一个开源免费的实时AI绘画软件Krita

Krita是由Krita插件ComfyUILCM插件结合的一个实时可预览的AI绘画工具&#xff0c;是一款自由开源、免费的专业级绘画软件&#xff0c;Krita采用的是GNU GPL许可证确保它将一直保持自由开源的本色。 一&#xff1a;搭建Krita创作平台 1、Krita客户端软件&#xff0c;该软件下载…

乡村治理深度解析:策略、挑战与解决方案

毋庸置疑&#xff0c;在今天这个崭新的时代&#xff0c;乡村治理的过程已然向我们发出了挑战。为了迎难而上&#xff0c;我们必须摒弃陈旧观念&#xff0c;勇敢迎接并大胆尝试探索与实践新的思路&#xff01;为了达到这一宏伟目标&#xff0c;我们需要首先廓清如下关键概念&…

新一代电话机器人正式上线

演示账户 代理商演示账户 地址&#xff1a;http://119.23.229.15:8080 用户名&#xff1a;c0508 密码&#xff1a;123456 功能&#xff1a;包含AI外呼管理&#xff0c;话术管理&#xff0c;CRM管理&#xff0c;坐席管理等功能。 管理员演示账户&#xff1a; 地址&#xff1a;h…

拥塞控制的作用和方法

目录 1.概念 2.慢启动 3.快速恢复 4.快速重传 1.概念 TCP数据流的控制. 为了保证可靠传输和提高网络通信质量,内核需要对TCP数据流进行控制 TCP数据流控制的两个方面:超时重传和拥塞控制, 在计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等&#xff0c;都是…

复合查询【MySQL】

文章目录 复合查询测试表 单表查询多表查询子查询单行子查询多行子查询IN 关键字ALL 关键字ANY 关键字 多列子查询 合并查询 复合查询 测试表 雇员信息表中包含三张表&#xff0c;分别是员工表&#xff08;emp&#xff09;、部门表&#xff08;dept&#xff09;和工资等级表&…

OS-Copilot:实现具有自我完善能力的通用计算机智能体

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ AI 缩小了人类间的知识和技术差距 论文标题&#xff1a;OS-Copilot: Towards Generalist Computer Agents with Self-Improvement 论文链接&#xff1a;https://arxiv.org/abs/2402.07456 项目主页&a…