一种SQL驱动层敏感数据模糊替换方法及系统与流程

文档序号:11775169阅读:706来源:国知局
一种SQL驱动层敏感数据模糊替换方法及系统与流程

本发明涉及一种敏感数据模糊化处理方法及系统,属于数据模糊化处理技术领域。



背景技术:

企业中都有很多包括客户个人隐私或企业商业价值的信息的数据,称之为敏感数据。随着企业信息化进程的推进,这些信息保存在企业各服务器中,在各种服务系统、信息化管理系统中会大量被查询使用,如果不加控制和管理,将存在敏感数据外泄带来的风险和隐患。因此设法最大限度降低敏感数据外泄带来的风险和隐患成为迫在眉睫的需求。传统方式对敏感数据进行模糊化处理是放在每个客户端上面进行的。而敏感数据(如:身份证号等)本身已经以日志的方式在客户端电脑上面存储了,这本身就存在泄密的风险。如何控制和管理这些从服务器下行的敏感数据是在企业信息化管理中面临的一个非常重要的问题。

公开号为105610818a的发明专利申请公开了一种敏感数据的模糊化装置,其作为可访问敏感数据所在服务器的客户端的数据需求应用的辅助配件,包括:数据获取模块,用于从数据需求者或数据需求应用获取其从服务器请求访问的返回数据;数据分析模块,用于敏感数据特征匹配策略制定与管理,按敏感数据特征匹配策略对从数据获取模块传递来的数据进行匹配,找出符合特征的敏感数据;数据处理模块,用于制定与数据分析模块制定的敏感数据特征匹配策略相适合的敏感数据模糊化策略并管理,按照所述敏感数据模糊化策略对从数据分析模块传递来的敏感数据进行模糊化处理,得到模糊化的非敏感数据;数据响应模块,将模糊化的非敏感数据返回给数据需求者或数据需求应用。

但是以上技术方案的缺陷在于,每当新增一个客户端访问数据库时,就要求重复完整相关的敏感数据模糊化的处理,无形中也增加了多倍的工作量。



技术实现要素:

本发明所要解决的技术问题是:针对背景技术中的缺陷,提出一种sql驱动层敏感数据模糊替换方法,将敏感数据在源头模糊化,增加了安全性减少了工作量。

本发明为解决上述技术问题采用以下技术方案:

一种sql驱动层敏感数据模糊替换方法,包括以下步骤:

1)、从sql驱动层加载hook钩子前置截获关于当前电脑查询数据库的所有数据内容;

2)、通过对初始查询sql语句命令进行解析,查找到敏感数据项对应的关键标识字段名称,进行敏感数据过滤后,再转提交至通信发送通道中。

进一步的,本发明提出的一种sql驱动层敏感数据模糊替换方法,步骤1)是针对sql驱动层命令打包通信层接口,使用windowsapi用setwindowshookex函数安装钩子。

进一步的,本发明提出的一种sql驱动层敏感数据模糊替换方法,步骤1)中数据内容包括:sql语句完整内容及数据、长度信息。

进一步的,本发明提出的一种sql驱动层敏感数据模糊替换方法,步骤2)是针对请求sql命令进行解析,将sql语句语法模型作为解析的语法基础,通过对sql语法进行反向解析,得到相关待查询的字段列表项检索到是否存在敏感字段名称。

进一步的,本发明提出的一种sql驱动层敏感数据模糊替换方法,步骤2)所述敏感数据过滤,是指根据用户配置的模糊替换策略配置项,分别对相关字段项进行模糊化处理。

进一步的,本发明提出的一种sql驱动层敏感数据模糊替换方法,针对存储过程类sql语句,需与普通sql查询语句分开解析处理。

进一步的,本发明提出的一种sql驱动层敏感数据模糊替换方法,如果当前系统中加载运行多个sql驱动模块时,采用遍历识别特征的方式,汇总出当前所有已经安装的sql驱动模块,并逐个进行注入钩子hook。

进一步的,本发明提出的一种sql驱动层敏感数据模糊替换方法,在sql语句解析过程中,不区分不同类型环境,只要符合字段名称检索策略项,均做模糊化处理。

本发明还提出一种敏感数据模糊替换系统,包括:

数据获取模块,用于从sql驱动层加载hook钩子前置截获关于当前电脑查询数据库的所有数据内容;

模糊替换模块,用于通过对初始查询sql语句命令进行解析,查找到敏感数据项对应的关键标识字段名称,通过白黑名单的方式,完成对敏感数据项的模糊替换的处理。

进一步的,本发明提出的敏感数据模糊替换系统,数据获取模块是针对sql驱动层命令打包通信层接口,使用windowsapi用setwindowshookex函数安装钩子。

本发明采用以上技术方案与现有技术相比,具有以下技术效果:

本发明通过sql驱动模块注入的hook截获sql语句完整内容及数据、长度等信息,此处得到的数据接口是驱动层全局的,就是驱动模块所有sql语句都由此接口发送及接收,不存在其他遗漏通信及处理sql语句的接口,即从网络通道,本地日志中都不存在敏感数据信息。本发明将敏感数据在源头就已经被模糊化了,所以显示出来的任何信息都为模糊化的信息。

附图说明

图1是的sql驱动层的原理图。

图2是jdbc驱动层实例图。

图3是对数据库查询结果模糊替换前的示意图。

图4是对数据库查询结果模糊替换后的示意图。

具体实施方式

下面结合附图对本发明的技术方案做进一步的详细说明。本技术领域技术人员可以理解的是,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。

本发明通过系统全局hooks来截获sql驱动模块上请求命令的变化,对sql语句进行解析,识别出字段项,再通过敏感替换策略配置项,将指定数据字段项替换成模糊字符串,从而在源头中模糊化敏感数据。

本发明提出一种sql驱动模块hooks注入、敏感数据提取、模糊替换方法,具体如下:

首先如图2所示,是jdbc驱动层实例图;当前的一些sql驱动层,一般都是大公司或第三方的,是无代码的,绝对没有现成的数据接口,怎么获取到有效数据及完整的数据,同时又保证稳定性,只有采用hook钩子技巧才能够解决。

同时,敏感数据(如:账号、密码、姓名等)本身只是以一种字符串方式存在的,如果孤立存在的话,本身也很难确认是否是敏感数据,但从sql驱动层(windows系统底层程序)就可以很容易查找到数据项对应的关键标识字段名称,这几乎是唯一标识的,所以从而很容易通过白黑名单的方式,完成对敏感数据项的模糊替换的处理过程。

参考图2所示,从sql驱动层(windows系统底层程序)加载hook钩子前置(当windows系统运行完成后,由守护模块查找系统中关于sql驱动层模块安装及运行路径位置)。通过hook钩子截获关于当前电脑查询数据库的所有数据内容。

进一步具体而言,本发明针对sql驱动层命令打包通信层接口,使用windowsapi用setwindowshookex函数安装钩子,从而在sql语句发送前,由模糊解析模块先进行处理完成后,再转提交给之前通信发送通道中。

如图1所示,是sql驱动层原理图;针对请求sql命令进行解析,检索到敏感字段名称是否存在,当前字符串是普通字符串,还是字段名称,需要从sql语句语法解析上去解决。将sql语句语法模型作为解析的语法基础,通过对sql语法进行反向解析,得到相关待查询的字段列表项:

column_name1、column_name2、column_name3、column_name4......column_namen。

sql语句语法模型作为解析的语法基础:

sql语句类型分为普通sql语句命令及存储过程2种,针对存储过程语句要与普通sql查询语句分开解析处理。

--------------存储过程基本语法原型-----------------

createproc[edure]procedure_name[;number]

[{@parameterdata_type}

[varying][=default][output]

][,...n]

[with

{recompile|encryption|recompile,encryption}]

[forreplication]

assql_statement[...n]

本发明通过sql驱动模块注入的hook截获sql语句完整内容及数据、长度等信息,此处得到的数据接口是驱动层全局的,就是驱动模块所有sql语句都由此接口发送及接收,不存在其他遗漏通信及处理sql语句的接口。

进一步地,根据用户配置的模糊替换策略配置项,分别对相关字段项进行模糊化处理。

例如:policyconfig.ini

[columnitem]

pno=******

did=000000

经过根据policyconfig.ini策略配置项识别处理后,相关的pno字段为模糊成******字符串数据,而不是之前的身份证号码,did字符被模糊成000000字符串数据,而不是之前的银行卡号码,见图3、图4所示。

如果当前系统中加载运行多个sql驱动模块时,会由守护程序采用遍历识别特征的方式,汇总出当前所有已经安装的sql驱动模块,并逐个进行注入钩子hook。

此处sql语句解析过程中,不区分查表、视图、临时表等不同类型环境,其中只要符合字段名称检索策略项,都会被模糊化处理。

以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1