一种基于SQL语句改写的动态脱敏方法技术

技术编号:17655274 阅读:129 留言:0更新日期:2018-04-08 08:32
本发明专利技术涉及一种基于SQL语句改写的动态脱敏方法,其技术特点是包括以下步骤:判断当前语句是否为查询语句时,如果是查询语句,则进行分词操作,并按照sql语句的顺序指明其类型长度信息,生成分词后的结构化信息;对分词之后的sql语句进行分析,从中识别出敏感字段,如果是敏感字符串,则根据结合用户设置的规则,将敏感字符串做相应替换,最终将查询语句替换为脱敏语句;将脱敏语句在数据库上执行,最终脱敏字段返回脱敏结果。本发明专利技术设计合理,其处理效率高,可直接应用在生产环境中,通过对用户的权限控制,实现对敏感数据的动态保护功能。

【技术实现步骤摘要】
一种基于SQL语句改写的动态脱敏方法
本专利技术属于信息安全
,涉及一种数据库敏感信息保护技术,尤其是一种基于SQL语句改写的动态脱敏方法。
技术介绍
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。对于关系型数据库,无论使用命令行模式,还是使用客户端工具,都通过sql语句来实现相关的数据操作。随着企业的发展,业务数据不断增长,随之而来的是数据相关工作的开展。越来越多的分析和数据挖掘都是以真实生产数据为基础进行,数据在使用过程中,面临数据安全的问题。为保障数据分析人员对数据的使用,同时降低数据泄露的风险,所以需要动态脱敏的需求。而动态脱敏可以对结果集进行脱敏,也可以对sql语句进行替换,达到脱敏的效果。对比这两种脱敏方法,对结果集进行脱敏的方法,脱敏时间是与结果集的数量正相关的。而对sql语句进行替换,理论上脱敏时间应该是一个相对恒定的值。因此,如何高效、安全地对敏感数据进行保护是目前迫切需要解决的问题。
技术实现思路
本专利技术的目的在于克服现有技术的不足,提出一种设计合理、高效安全的基于SQL语句改写的动态脱敏方法。本专利技术解决其技术问题是采取以下技术方案实现的:一种基于SQL语句改写的动态脱敏方法,包括以下步骤:步骤1:判断当前语句是否为查询语句时,如果是查询语句,则进行分词操作,并按照sql语句的顺序指明其类型长度信息,生成分词后的结构化信息;步骤2:对分词之后的sql语句进行分析,从中识别出敏感字段,如果是敏感字符串,则根据结合用户设置的规则,将敏感字符串做相应替换,最终将查询语句替换为脱敏语句。步骤3、将脱敏语句在数据库上执行,最终脱敏字段返回脱敏结果。所述分词操作是针对查询语句进行的;对于查询语句得到一个指定各种类型的词语链表;对于全表查询语句,需要将当前表中包含的字段全部组织到这个查询语句中,然后再对这条语句进行分词处理。所述用户设置的规则包括敏感字段和敏感算法。本专利技术的优点和积极效果是:1、本动态脱敏算法操作的对象是查询语句,在理想状态下,消耗的时间与脱敏字段的个数成正比例关系,由于其不受查询的结果集大小的影响,因此效率会比较高。2、本动态脱敏算法可以直接应用在生产环境中,通过对用户的权限控制,实现对敏感数据的动态保护功能。附图说明图1是本专利技术对查询语句进行分词的逻辑流程图;图2是本专利技术的主处理程序;图3是本专利技术的查询处理逻辑;图4是本专利技术的字符串处理子函数。具体实施方式以下结合附图对本专利技术做进一步详述。本专利技术是将sql语句标记成各种类型的对象,通过定义不同对象的不同属性,结合用户设置的规则(敏感字段,脱敏算法)将敏感字段识别出来,并最终使用用户设置的规则对sql语句中的敏感字段进行替换。本专利技术包含两个部分内容,第一部分是分词,第二部分是脱敏替换逻辑。下面对分词的原则进行说明,首先定义如下概念:普通字符串(BS):符合数据库关键字定义的普通字符串。比较运算符(CO):大于、小于、等于、不等于、BETWEEN、LIKE、EXISTS、IN、NOT、ISNULL、CASE、WHEN、DECODE。字段终结符(EO):标识字段的终结,包括:逗号、FROM、THEN、ELSE、’、|。保持别名符(AO):标识保持别名的字符,包括:空格、换行回车、TAB、AS、END。别名字符串(AS):数值、右括号、普通字符串(BS)、单引号、双引号、NULL。空字符(NS):空格、换行回车、TAB。字段废弃符(DS):当一个普通字符串后面跟着这些字符时,表示该普通字符串不能用于脱敏,这样的字符包括:左括号。别名终结符(EA):逗号和FROM。别名起始符(SA):oracle:SELECT、DISTINCT、UNIQUE、ALL、逗号。mysql:ALL、DISTINCT、DISTINCTROW、HIGH_PRIORITY、STRAIGHT_JOIN、SQL_SMALL_RESULT、SQL_BIG_RESULT、SQL_BUFFER_RESULT、SQL_CACHE、SQL_NO_CACHE、SQL_CALC_FOUND_ROWS、逗号、LOW_PRIORITY。KS:是指相应数据库中的保留字。在oracle中有个保留字SYSDATE,这个保留字可以以字段的形式出现在sql语句中。所述分词是针对查询语句进行的。对于查询语句使用以上概念得到一个指定了各种类型的词语链表。其中有一种特殊类型的查询语句,即全表(select*fromtab)查询,这种情况下,需要将当前表中包含的字段全部组织到这个查询语句中。然后再对这条语句进行分词处理。所述脱敏替换逻辑是脱敏中非常重要的一个环节。脱敏替换逻辑对分词之后的sql语句进行分析,最终判断哪个字符串是敏感字段。如果是敏感字符串,则根据规则,将敏感字符串做相应替换,最终将查询语句替换为脱敏语句。替换后的语句会在数据库上执行,最终脱敏字段返回脱敏结果。在本实施例中,给出如下变量说明:LL:左括号的计数值,初始值为0FC:FROM关键字计数值,初始值为0WC:WHERE关键字计数值,初始值为0AF:别名标记,=0标识不是别名=1标识是别名CF:比较操作符标记,=0不是=1是比较符VM:校验是否能脱敏的标记,默认是0-不校验1-校验VM_RES:校验脱敏标记的结果。0-不确定(默认值)1-脱敏-1不脱敏M_POS:需要脱敏的关键词的切词位置。CL:记录CASE的值,初始值为0(遇见case时自增1,遇到end时自减)EA_F:别名终结符标记,初始值为0,1-是别名终结符SA_F:别名起始符,初始值为0,1-是别名起始符WA:with…as的计数值,初始值为0OB:ORDERBY计数值LW:最后一个词是否最后一个单词0:不是;1:是需要返回的变量:Havestar:有*号标记WORDINFO:是SQL语句中每个词分词后的存储结构体。基于上述变量说明,本实施例给出的基于SQL语句改写的动态脱敏方法包括以下步骤:步骤1:判断当前语句是否为查询语句时,如果是查询语句,则进行分词操作。如图1所示,在本步骤中,首先判断当前语句是否为查询语句,如果不是查询语句,不进入分词操作。如果是查询语句,则进入分词操作,即将分词按照sql语句的顺序指明其类型长度等信息,生成分词后的结构化信息。对于查询语句使用以上概念得到一个指定了各种类型的词语链表。对于特殊类型的查询语句,即全表(select*fromtab)查询,这种情况下,需要将当前表中包含的字段全部组织到这个查询语句中。然后再对这条语句进行分词处理。步骤2:根据生成结构化的信息进行取词,如果当前取词内容包括select,则进入步骤3进行查询处理,否则继续取词。如图2所示,在本步骤中,以取词开始,取词后,判断当前词是否为select,如果是select,则进入步骤3;如果不是select,则判断当前词是否为左括号,如果不是左括号,继续取下一个词,去判断是否为select;如果是左括号,则继续取词,如果取词内容为空格,则继续取词,取词后,判断当前词是否为SELECT,如果是SELECT,则进入步骤3,否则继续取词,进行select或左括号的判断。步骤3:查询处理步骤,具体处理流程如图3所示,包括如下过程:1、首先判断当前词本文档来自技高网...
一种基于SQL语句改写的动态脱敏方法

【技术保护点】
一种基于SQL语句改写的动态脱敏方法,其特征在于包括以下步骤:步骤1:判断当前语句是否为查询语句时,如果是查询语句,则进行分词操作,并按照sql语句的顺序指明其类型长度信息,生成分词后的结构化信息;步骤2:对分词之后的sql语句进行分析,从中识别出敏感字段,如果是敏感字符串,则根据结合用户设置的规则,将敏感字符串做相应替换,最终将查询语句替换为脱敏语句;步骤3、将脱敏语句在数据库上执行,最终脱敏字段返回脱敏结果。

【技术特征摘要】
1.一种基于SQL语句改写的动态脱敏方法,其特征在于包括以下步骤:步骤1:判断当前语句是否为查询语句时,如果是查询语句,则进行分词操作,并按照sql语句的顺序指明其类型长度信息,生成分词后的结构化信息;步骤2:对分词之后的sql语句进行分析,从中识别出敏感字段,如果是敏感字符串,则根据结合用户设置的规则,将敏感字符串做相应替换,最终将查询语句替换为脱敏语句;步骤3、将脱敏语句在数据库上执行...

【专利技术属性】
技术研发人员:杨海峰吴智勇
申请(专利权)人:北京安华金和科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1