跨数据库跨系统,数据脱敏有新招

article/2025/11/10 21:47:12

作者介绍

贝壳找房DBA团队,负责链家、贝壳找房的数据库服务治理及运维,包括MySQL、Redis、Kafka、RocketMQ、TiDB等产品。为保证线上服务高效、安全、稳定运行,面向研发同学提供一站式的数据库操作平台,建设了满足99.99%标准的高可用自动化切换平台,并结合DBA丰富的运维经验和机器学习算法实现了数据库故障的自助诊断。

引言

2021 年 9 月 1 日起《中华人民共和国数据安全法》(以下简称《安全法》)正式施行,成为了规范数据处理活动,保障数据安全,促进数据开发利用,保护个人、组织的合法权益,维护国家主权、安全和发展利益的法律依据。数据脱敏技术则是对敏感数据按需进行漂白、变形、遮盖等处理,避免敏感信息泄露。数据脱敏工具使用、开发、平台建设是每家互联网公司保护用户隐私应尽的义务。

贝壳在用户隐私数据保护上也做了很多努力,严格遵守国家法律要求,本文将分享一款由贝壳 DBA 团队开发的数据脱敏工具,即 d18n,它是 data-desensitization 的 Numeronym 缩写,即使用 18 代替中间的 18 个字母。下面将拆解 d18n 的技术实现,让大家了解数据安全背后的故事。

一、数据脱敏场景

124de07f30d7de6dfe6018d585d78e9a.png

从上图可见敏感信息脱敏其实已经融入到生活的方方面面,我们看的电影,读的小说,听的新闻都会用到信息脱敏。以下列举三个互联网公司常见的三种数据脱敏场景。

场景一:测试开发

线上数据库服务做了严格的权限控制和资源隔离,非授权用户无法获取任何数据。测试环境为了尽量仿真生产环境有时会提出使用获取线上数据样本的需求,但测试环境的权限控制相对较宽松,因此不可将未脱敏的数据直接导入测试环境。

场景二:数据分析

随着大数据应用在互联网的不断落地,大数据分析能够辅助公司进行产品决策,准确分析用户行为。直接使用生产数据进行数据分析,未经管控和数据脱敏,敏感数据泄露的风险的几率将大大增加。

场景三:数据共享

政府与企业,企业与企业,企业内应用与应用之间都有数据交换和信息共享的需求。针对不同级别的数据共享需求,要制定不同的数据脱敏方案。在保护好公司核心数据资产的情况下,为政企合作、企业合作、服务迭代提供数据安全保障。

二、跨平台数据脱敏

bcb030620a014103b8d7690c37cf7ff6.png

d18n 工具使用 Go 语言开发,在设计选型时它特意避开了部分依赖 CGO 的数据库驱动,因此它是完全跨平台的,可以直接在 Windows、Linux、Mac 系统中使用,即使是最新的 Apple Silicon MacBook Pro 也可功能无损支持。

由于 d18n 开发时 Go 1.16 已经支持了 embed 功能,它原生支持将静态资源与二进制程序一起打包。在数据脱敏和敏感信息识别时需要使用的语料包已经被 d18n 打包封装好了,因此无需再下载任何其他静态资源文件,真正做到开箱即用。这一点对于目前流行的容器化环境来说也是特别友好的。 

d18n 的跨平台不仅体现在操作系统级别的跨平台上,它对数据库平台的支持也是多样化的。除了互联网公司最常使用的 MySQL 数据库,d18n 还支持 Oracle、SQL Server、PostgreSQL 等等多种关系型数据库。可以说,只要是使用 SQL 语言的数据库,只要它有 Pure Go 驱动,d18n 都能支持。很多同学甚至直接把 d18n 当作一个简单的数据库命令行查询工具使用,带来跨平台一致性的用户体验。

d18n 支持导出、导入的文件类型相对也比较丰富,有绝大多数人都熟悉的 Excel, TXT,也有对应用程序友好的 CSV、JSON、SQL、HTML 等文件格式。无论是交给人用肉眼阅读,还是交给程序做自动化处理,d18n 都应付得来。

三、敏感数据识别

前面讲了很关于多跨平台的友好性,一款数据脱敏工具用户真正看重的是它对敏感数据的识别和处理能力上,这一节开始将进入硬核知识介绍。

关系型数据库敏感数据识别常用的算法有“关键字匹配”和“正则匹配”。d18n 当然也不能免于俗套,这两项技术也是妥妥的支持。更有诚意的是,d18n 还一并提供了敏感信息识别使用的通用规则库。对于想“偷懒”的同学,它能让你开箱即用;对于“勤奋”的同学,你也可以参照模板进行深度自定义且无需修改源码。

8c7e0c0f1e4088fda8aadc22ed3ea084.png

在传统技术基础之上,为了进一步提高敏感数据发现能力,d18n 还引入了自然语言处理包 (gse),它将语料库转化成 Trier 数据结构,通过有穷自动机算法 (DFA) 来匹配经过自动分词的数据。

d9041ef3749c12482caf2eab9813237b.png

自然语言处理识别敏感数据的核心难点是如何生成精准有效的语料库,一个有效语料库通常是针对真实的数据集进行机器学习训练得到的。d18n 中提供的关于地址、姓名的语料库模板并非真实数据训练得到仅供用户参考。下面是 d18n 中应用自然语言处理来识别敏感信息的测试用例。

d33bf41dce5be229bea79b09efe6d66d.png

敏感信息存储主动申报已经深深的融入到了贝壳的各项流程制度中,机器识别做为一个有效的补充可以帮助业务查缺补漏,及时发现可能存在的隐患。

四、数据脱敏导出

有了全平台的敏感数据信息,接下来就是如何做好数据脱敏工作,综合整理法律合规以及来自不同业务方的需求,主要有以下几点。

09c583af0a4fea97e49110a3a1a4d618.png

为了满足上面五点需求,本文从六个维度出发(即:无效化、随机化、数据替换、加密替换、差分隐私、偏移取整)分别介绍数据脱敏算法实现。

首先是“无效化”,在处理待脱敏的数据时,通过对字段数据值进行截断、加密、隐藏等方式让敏感数据脱敏,使其不再具有利用价值。一般采用特殊字符(*等)代替真值。以下是 d18n 中 smoke 和 phone 两个算法的测试用例展示。

9b50eb3948e2b93eff9008c5e133d998.png

0816b19428012d2e0884781d26b75bb2.png

其次是“随机化”,随机值替换,字母变为随机字母,数字变为随机数字,这种方案可以在一定程度上保留原有数据的格式,且不可打破数据的唯一性约束。d18n 中内置了常用汉字的语料库,中文默认也可以做随机化替换。

dfe3f0b1d7619bb9e1dff3cad43ea3b5.png

对于 ASCII 码表中的字符,d18n 还集成了先进的 FPE(Format Preserving Encryption) 算法,进一步保证了数据的“不可逆”性。

ed40db56f1c2b2d04458db45f7a5015b.png

除了单个字符的随机化,d18n 还支持单词级别的随机化替换,可保持语句长度及标点符号不变。根据用户生成的语料库不同,支持不同语言的单词替换。下面是一个英文替换的例子。

904781dcd196bb16d6357379dfb14c72.png

第三是“数据替换”,数据替换与“无效化”方式比较相似,不同的是这里不以特殊字符进行遮挡,而是用一个设定的虚拟值替换真值。比如说将 IP 统一设置成 “127.0.0.1”。

7ab4abcbe7a34abf187e98d00cb4f947.png

b98b1a43b23c66504c08ebbeb5f8f637.png

第四是“加密替换”,d18n 支持对称加密算法和非对称加密算法。数据加密是一种特殊的可逆脱敏方法,通过密钥和算法对敏感数据进行加密,已知密钥和算法可解密恢复原始数据,要注意密钥的安全性。虽然 d18n 也支持 RSA,ECC 等数据加密算法,但 d18n 不会生成密钥文件、也不保留加密密钥,更不提供解密支持。

0cc331e220b4842daaa0e22d83f034f9.png

第五是“差分隐私”,它是密码学中的词汇,旨在提供一种当从统计数据库查询时,最大化数据查询的准确性,同时最大限度减少识别其记录的机会。d18n 使用了 Google 开源的 github.com/google/differential-privacy 包实现了这部分能力。

16c0256bcec84b3312b9e204635c77ac.png

第六是“偏移取整”,这种方式通过数据移位去除隐私信息,偏移取整在保持了数据的安全性的同时保证了范围的大致真实性,比之前几种方案更接近真实数据。下面两个例子分别是对数值类型取整和对时间类型取整。

86914abfe702b78701526acae3872925.png

2f5f4201707830f11341a7d3ce6c2271.png

五、数据脱敏导入

至此仅实现了把数据库中的数据脱敏后共享给使用方的需求,如果有同学给了一份未脱敏的数据文件让你导入到测试环境呢?d18n 也支持对 Excel、TXT、CSV、HTML、JSON 等格式的文件进行二次脱敏生成 SQL,可生成 SQL 文件,也可直接连接数据库导入至数据库中查看。

8f4c2e31ad669bc8ff2218f723ac2547.png

总结

d18n 中引入了很多优秀的第三方开源 Library,它虽然是一个命令行工具,但作者们更想把它作为一个 Library 来开发,这样可以更好的回馈给开源社区,也给 d18n 带来更多的可能。命令行工具提供的是静态数据脱敏能力,可以用于日常学习、测试。基于 d18n 这个 Library 相信你也不难实现适用各家公司自己的动态数据脱敏平台。保护用户隐私数据每一个人都责无旁贷,期待社区能够涌现更多优秀的产品共同提高数据安全水平。

>>>>

开源地址

【项目文档】https://github.com/LianjiaTech/d18n/blob/main/doc/toc.md

【Github地址】https://github.com/LianjiaTech/d18n

【Issue 反馈】https://github.com/LianjiaTech/d18n/issues

>>>>

参考文章

  • 大厂也在用的 6 种数据脱敏方案,严防泄露数据的 “内鬼”

    https://www.cnblogs.com/chengxy-nds/p/14107671.html

  • 科普|静态数据脱敏应用场景

    https://www.freebuf.com/company-information/235082.html

dbaplus社群欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn

a3adc0ba7ac6e2c2960a86cb90309d31.png


http://chatgpt.dhexx.cn/article/wxRsM5v1.shtml

相关文章

imperva数据库脱敏-server2008

首先安装一个server2008其他的server也行 然后安装java环境 后安装tomcat中间件 一路默认就好 这就是tomcat的控制台 然后安装postgresql数据库 官方的要求是9.1-9.3的版本。 这个数据库也是默认安装就好。里面的密码我设的的Webco123 数据库安装完成 下一步安装发现脱敏的控…

《Sharding-JDBC》——数据库分表+数据库脱敏实现方案

本文从实际情况出发,解决生产中单表数据过大,和数据被拖库导致的问题,并进行的解决方案。本案例使用的框架为轻量型的jfinal,分表数据库脱敏,均采用了Apache的shardingsphere。 首先我们要先明确这样一个业务场景&…

mysql数据脱敏_数据脱敏|静态脱敏|动态脱敏—数据库脱敏_产品

1、敏感数据自动识别 数据脱敏系统可通过预定义敏感数据特征库,在任务执行过程中通过智能匹配识别敏感数据,最大限度的实现脱敏工作自动化,简化以手工方式按字段名定义敏感数据的繁琐工作。 2、丰富的脱敏算法 数据脱敏系统内置同义替换、数据…

使用sql语句对数据库脱敏

最近帮领导整理了一下数据库,给数据库的某些字段进行脱敏,现在整理一下,嘻嘻 1、姓名脱敏 update table set 列 REPLACE(列,SUBSTR(列,2,1),*) 姓名脱敏之后的效果: 2、手机号脱敏 UPDATE table SET 列 ( CASE WHEN 列 IS NO…

数据库脱敏(mybatis 拦截器实现)

1.使用数据库本身自有的函数进行加密 UPDATE tuc_user SET mobileNo HEX(AES_ENCRYPT(mobileNo, ‘xxxxxx’)); 2.注解类 2.1 SensitiveData package com.wisedu.campuses.sensitive;import java.lang.annotation.*;/*** author MR.MEI*/ Inherited Target({ElementType.T…

数据库安全关键技术之数据库脱敏技术详解

数据库脱敏是一种采用专门的脱敏算法对敏感数据进行变形、屏蔽、替换、随机化、加密,并将敏感数据转化为虚构数据的技术。按照作用位置、实现原理不同,数据脱敏可以划分为静态数据脱敏(Static Data Masking, SDM )和动态数据脱敏(…

网页数据库设计

这次是找一个网页,写er图,然后根据er图设计模型,然后生成数据库表 我找的是起点中文网,根据这个网站做了分析,画了e-r图. 模型

Java网页应用之实现对数据库的增、删、改、查。

模拟信息管理系统 通过eclipse实现网页、数据库的连接,实现对数据库的增、删、改、查。 登陆页面: 登陆成功界面: 添加信息界面: 修改信息界面: 删除信息界面: package com.lq.pro_user.dao;import …

(网页设计+数据库增删查改)——课设展示

注:关于网页所有的代码,我已经打包好了,获取方式如下 关注微信公众号大数据智库(直接扫二维码,在我的主页的左下角),回复网页代码即可获取 课设展示 一、网页部分成果展示1、动态显示日期2、动态…

网页实现数据库的增删改查

最近在做项目web后台数据增删查改的时候,看到一篇较为详细的经典文章, 所以转载了下来, 文章出处在:https://blog.csdn.net/qq_32539825/article/details/70657340 如果作者认为侵权的告诉我,我立马删。 首先jsp 和…

通过JSP网页连接Mysql数据库

本文介绍通过JSP网页连接到MySQL,从MySQL数据库中读出一张表,并显示在JSP网页中。 1. 在MySQL数据库中建立数据表 用图形化管理工具Navicat Premium 连接MySQL数据库,在数据库“ming”下建立一张名为“teacher”的数据表。 2. 设置Tomcat 1)将JDBC…

网页连接mysql教程_网页怎么连接到数据库?

网页连接到数据库的方法:首先创建一个网页连接数据库的PHP代码文件;然后解决浏览器编码问题并指定数据库字符集;最后通过“mysql_select_db”函数选择并连接数据库即可。 HTML是无法读取数据库的,HTML是页面前端脚本语言&#xff…

网页JS自动化脚本(八)使用网页专属数据库indexedDB进行数据收集

我们在网页上进行的活动,往往都需要进行收集一些简单的数据,但是因为浏览器的安全原因,浏览器基本上是无法与本地的操作系统直接产生数据交互的,这本来就是一个由于安全问题生产的无解问题,在浏览器里面是内置了几种数据库的,其中一种就是indexedDB,可以用来储存一些非常小的数…

网页连接数据库,一个简单的登入界面以及实现登入功能

基于V#的ASP.NET.MVC 4 web 网站程序开发 接着上篇继续,上篇地址为https://blog.csdn.net/weixin_42534390/article/details/86576537 我们首先要有一个认知,就是ASP.NET.MVC 4 web 网站程序开发的三层架构概念,分别为BLL,DAL,MOD 这三层的概…

JavaWeb 网页链接数据库增删改查

今天是web的第五节课,上一节课只涉及到了查询和增加,这一节课我们学习网页链接数据库进行增删改查,今天的内容更多的也是代码,理论内容较少,现在小编带大家进入新的一课。 目录 一.查 二.增 三.删 四.修 五.数据库…

jsp登录注册代码(增删改查+网页+数据库)

目录 一登录注册代码以及效果 doregister.jsp:注册信息弹框 login.jsp:登录 dologin.jsp:与数据库相连、存放登陆的用户 index.jsp:主界面 update.jsp:修改 doup.jsp:修改页面(帮助) info.jsp:详情 dodel.jsp:删除界面 …

采集网页数据保存到MYSQL数据库

一、直接采集一个本地网页文件 1.创建一个网页文件date413.html(注&#xff1a;文件的路径后面还会用到) 2.网页文件date413.html中的内容为&#xff1a; <html> <head><title>搜索指数</title> </head> <body><table><tr>&…

用简单,易懂的方法将数据库和网页连接起来(例:登陆注册页面)

PHP技术&#xff0c;远比用java写代码连接数据库简单得多&#xff0c;下面看我的详细介绍&#xff1a; 1.首先要下载&#xff1a;phpstudy_pro&#xff08;关注我可以免费下载哦&#xff01;&#xff09; 2.然后打开phpstudy_pro&#xff0c;启动Apache服务器&#xff08;每次…

网页展示数据库内容

目的&#xff1a;写一个JSP访问Access数据库的user表&#xff0c;将所有的记录显示出来&#xff1b;ODBC数据源名为test&#xff0c;驱动类名为&#xff1a;“driverClassNamecom.mysql.jdbc.Driverr”&#xff0c;连接数据库的url为&#xff1a;”urljdbc:mysql://localhost:3…

[VS]网页连接数据库

工具&#xff1a; 1、Visual Studio(我使用的是vs2019) 2、SQL server(我使用的是sql2008) 3、网页运行框架&#xff1a;.Net2.0 目录 一、网站以windows身份验证连接数据库 二、网站以sql server身份验证连接数据库 三、使用工具Visual Studio中自带的连接数据库功能 一…