CN111191276B - 数据脱敏方法、装置、存储介质及计算机设备 - Google Patents

数据脱敏方法、装置、存储介质及计算机设备 Download PDF

Info

Publication number
CN111191276B
CN111191276B CN201911231430.3A CN201911231430A CN111191276B CN 111191276 B CN111191276 B CN 111191276B CN 201911231430 A CN201911231430 A CN 201911231430A CN 111191276 B CN111191276 B CN 111191276B
Authority
CN
China
Prior art keywords
column
sensitive
desensitization
sql
list
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911231430.3A
Other languages
English (en)
Other versions
CN111191276A (zh
Inventor
徐杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Bank Co Ltd
Original Assignee
Ping An Bank Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ping An Bank Co Ltd filed Critical Ping An Bank Co Ltd
Priority to CN201911231430.3A priority Critical patent/CN111191276B/zh
Publication of CN111191276A publication Critical patent/CN111191276A/zh
Application granted granted Critical
Publication of CN111191276B publication Critical patent/CN111191276B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • G06F21/6254Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Investigating Or Analysing Biological Materials (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供一种数据脱敏方法、装置、存储介质及计算机设备,该方法包括:接收用户发送的SQL语句;判断SQL语句是否包含有预设脱敏清单中的敏感表,若判断出SQL语句包含有预设脱敏清单中的敏感表,则判断SQL语句包含的敏感表所要查询的数据列中是否包含有脱敏清单中与敏感表对应的敏感列;若是,则根据解析结果确定SQL语句的返回列,并判断SQL语句的返回列中是否包含敏感列或者与敏感列具有血缘关系的列;若SQL语句返回列中包含敏感列或与敏感列具有血缘关系的列,则将返回列中包含的敏感列或者与脱敏列具有血缘关系的列确定为目标脱敏列,并将SQL语句中用于访问目标脱敏列的语句替换为自定义的脱敏函数,上述方法能提高数据脱敏的精确性。

Description

数据脱敏方法、装置、存储介质及计算机设备
技术领域
本发明涉及大数据领域,具体涉及一种数据脱敏方法、装置、存储介质及计算机设备。
背景技术
数据脱敏,是指对敏感数据通过脱敏规则进行数据的变形,实现对敏感数据的可靠保护,以便在开发、测试和其它非生产环境以及外包环境中安全地使用脱敏后的真实数据集(或称脱敏数据)而不至信息泄漏。
现有的脱敏工具分静态脱敏和动态脱敏,静态脱敏工具是对指定表或者列使用特定规则将数据批量脱敏后加载至另外一张新表提供给用户使用,这种脱敏方式只适合线下脱敏,不适合在线查询即时脱敏,且脱敏的数据经过加工后的数据失真,不能完全体现业务数据价值。而动态脱敏是根据查询出来的数据,对每条数据进行基于规则进行即时脱敏,该种方式可以实现线上脱敏,但是由于实际的业务场景比较复杂,在脱敏时容易造成误判,例如对不该脱敏的数据进行脱敏,脱敏精确性低,影响业务使用。
发明内容
本发明实施例提供一种数据脱敏方法、装置、存储介质及计算机设备,用于解决现有技术中的数据脱敏精确性低的问题。
第一方面,本发明实施例提供了一种数据脱敏方法,所述方法包括:
接收用户发送的SQL语句,所述SQL语句为结构化查询语句select语句;
对所述SQL语句进行解析,根据解析结果判断所述SQL语句是否包含有预设脱敏清单中的敏感表,若判断出所述SQL语句包含有预设脱敏清单中的敏感表,则判断所述SQL语句包含的敏感表所要查询的数据列中是否包含有所述脱敏清单中与所述敏感表对应的敏感列;
若判断出所述SQL语句包含的所述敏感表所要查询的数据列中包含有所述脱敏清单中与所述敏感表对应的敏感列,则根据所述解析结果确定所述SQL语句的返回列,并判断所述SQL语句的返回列中是否包含所述敏感列或者与所述敏感列具有血缘关系的列;
若判断出所述SQL语句的返回列中包含所述敏感列或者与所述敏感列具有血缘关系的列,则将所述返回列中包含的所述敏感列或者与所述脱敏列具有血缘关系的列确定为目标脱敏列,并将所述SQL语句中用于访问所述目标脱敏列的语句替换为自定义的脱敏函数,所述脱敏函数用于将所述目标脱敏列对应的字符转换为预先设置的特殊字符;
执行替换后的SQL语句,并输出查询结果。
可选地,所述对所述SQL语句进行解析,根据解析结果判断所述SQL语句是否包含有预设脱敏清单中的敏感表,若判断出所述SQL语句包含有预设脱敏清单中的敏感表,则判断所述SQL语句包含的所述敏感表所要查询的数据列中是否包含所述脱敏清单中与所述敏感表对应的敏感列,包括:
对所述SQL语句进行词法解析及语法解析,得到所述SQL语句对应的抽象语法树;
根据所述抽象语法树确定所述SQL语句所包含的数据表;
判断所述SQL语句所包含的数据表中是否包含有所述预设脱敏清单中的敏感表;
若判断出所述SQL语句所要查询的数据表中包含有所述预设脱敏清单中的敏感表,则根据所述抽象语法树确定所述SQL语句包含的敏感表所要查询的数据列,并判断所述数据列中是否包含有所述脱敏清单中的与所述敏感表对应的敏感列。
可选地,所述根据所述解析结果确定所述SQL语句的返回列,并判断所述SQL语句的返回列中是否包含与所述敏感列具有血缘关系的列,包括:
根据所述抽象语法树对所述SQL语句的语义特征进行分析,确定所述SQL语句的返回列;
根据所述抽象语法树判断所述SQL语句的返回列是否包含与所述敏感列相关的列;
若是,则确定所述与所述敏感列相关的列为与所述敏感列具有血缘关系的列。
可选地,所述对所述SQL语句进行词法解析及语法解析,得到与所述SQL语句对应的抽象语法树,包括:
对所述SQL语句进行分解,得到若干个单词,根据所述若干个单词构造出单词链;
对所述单词链进行语法结构分析,构造出与所述SQL语句对应的抽象语法树。
可选地,所述接收用户发送的SQL语句,包括:
接收用户发送的SQL语句以及用户标识;
将所述返回列中包含的所述敏感列或者与所述脱敏列具有血缘关系的列确定为目标脱敏列之后,所述方法还包括:
获取预设的授权用户白名单;
判断所述授权用户白名单中是否包含所述用户标识;
若否,则继续执行所述将所述SQL语句中用于访问所述目标脱敏列的语句替换为自定义的脱敏函数。
第二方面,本发明实施例提供了一种数据脱敏装置,包括:
接收模块,用于接收用户发送的SQL语句,所述SQL语句为结构化查询语句select语句;
解析模块,用于对所述SQL语句进行解析,根据解析结果判断所述SQL语句是否包含有预设脱敏清单中的敏感表,若判断出所述SQL语句包含有预设脱敏清单中的敏感表,则判断所述SQL语句包含的敏感表所要查询的数据列中是否包含有所述脱敏清单中与所述敏感表对应的敏感列;
判断模块,用于当包含的所述敏感表所要查询的数据列中包含所述脱敏清单中的与所述敏感表对应的敏感列时,根据所述解析结果确定所述SQL语句的返回列,并判断所述SQL语句的返回列中是否包含所述敏感列或者与所述敏感列具有血缘关系的列;
替换模块,用于当判断出所述SQL语句包含的所述敏感表所要查询的数据列中包含有所述脱敏清单中与所述敏感表对应的敏感列,则根据所述解析结果确定所述SQL语句的返回列,并判断所述SQL语句的返回列中是否包含所述敏感列或者与所述敏感列具有血缘关系的列;及
执行模块,用于执行替换后的SQL语句,并输出查询结果。
可选地,所述解析模块包括:
解析单元,用于对所述SQL语句进行词法解析及语法解析,得到所述SQL语句对应的抽象语法树;
第一确定单元,用于根据所述抽象语法树确定所述SQL语句所包含的数据表;
第一判断单元,用于判断所述SQL语句所包含的数据表中是否包含有所述预设脱敏清单中的敏感表;及
第二判断单元,用于当判断出所述SQL语句所要查询的数据表中包含有所述预设脱敏清单中的敏感表,则根据所述抽象语法树确定所述SQL语句包含的敏感表所要查询的数据列,并判断所述数据列中是否包含有所述脱敏清单中的与所述敏感表对应的敏感列。
可选地,所述判断模块包括:
所述判断模块包括:
分析单元,用于根据所述抽象语法树对所述SQL语句的语义特征进行分析,确定所述SQL语句的返回列;
第三判断单元,用于根据所述抽象语法树判断所述SQL语句的返回列是否包含与所述敏感列相关的列;及
第二确定单元,用于当所述SQL语句的返回列为与所述敏感列相关的列时,确定所述与所述敏感列相关的列为与所述敏感列具有血缘关系的列。
第三方面,本发明实施例提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述方法。
第四方面,本发明实施例提供了一种计算机设备,包括存储器和处理器,所述存储器用于存储包括程序指令的信息,所述处理器用于控制程序指令的执行,所述程序指令被处理器加载并执行时实现上述方法。
可以理解,本发明通过先确定SQL语句中包含的敏感表及其敏感列,然后判断SQL语句最终的返回列是否为SQL语句中所包含的包含的敏感表及其敏感列,进而再判断是否需要进行脱敏,通过预先判断SQL语句返回的最终列是否需要脱敏,避免了脱敏的误判,提高了数据脱敏的精确度,同时,本发明基于列的血缘关系分析出SQL语句最终的返回列是否来源于SQL语句中所包含的敏感表及其敏感列,因此,进一步避免了当最终的返回列来自于该SQL语句包含的敏感表及其敏感列时,而未对最终的返回列进行脱敏的情况发生,进一步提高了数据脱敏的精确度。
附图说明
下面结合附图和实施例对本发明进一步说明。
图1为本发明实施例提供的一种数据脱敏方法的流程图;
图2为本发明实施例提供的一种数据脱敏装置的示意框图;
图3为本发明实施例提供的一种计算机设备的示意框图。
具体实施例
为了更好的理解本发明的技术方案,下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
请参阅附图1,本发明实施例提供一种数据脱敏方法,该方法的执行主体可以为一种数据脱敏装置,数据脱敏装置例如可以为智能手机、平板电脑、个人计算机(PersonalComputer,PC)或者其他智能设备等。
数据脱敏方法包括:
步骤S01:接收用户发送的SQL语句,SQL语句为结构化查询语句select语句。
步骤S02:对SQL语句进行解析,根据解析结果判断SQL语句是否包含有预设脱敏清单中的敏感表,若判断出SQL语句包含有预设脱敏清单中的敏感表,则判断SQL语句包含的敏感表所要查询的数据列中是否包含有脱敏清单中与敏感表对应的敏感列。
步骤S03:若判断出SQL语句包含的敏感表所要查询的数据列中包含有脱敏清单中与敏感表对应的敏感列,则根据解析结果确定SQL语句的返回列,并判断SQL语句的返回列中是否包含敏感列或者与敏感列具有血缘关系的列。
步骤S04:若判断出SQL语句的返回列中包含敏感列或者与敏感列具有血缘关系的列,则将返回列中包含的敏感列或者与脱敏列具有血缘关系的列确定为目标脱敏列,并将SQL语句中用于访问目标脱敏列的语句替换为自定义的脱敏函数,脱敏函数用于将目标脱敏列对应的字符转换为预先设置的特殊字符。
步骤S05:执行替换后的SQL语句,并输出查询结果。
可以理解,本发明实施例先对要查询的结构化语句SQL语句进行解析,确定出SQL语句中所包含的数据表及数据表中的对应的列,并与预设的脱敏清单进行对比,先根据脱敏清单判断SQL语句是否包含有脱敏清单中的敏感表以及包含的敏感表所要查询的数据列中是否包含脱敏清单中存在的敏感列,若有则继续确定对SQL语句进行解析,确定出SQL语句的返回列,并判断SQL语句的返回列中是否包含敏感列或者与敏感列具有血缘关系的列,进而确定出脱敏列。
与现有技术相比,现有技术通常仅将SQL语句中所包含的数据表及数据表中的对应的列是否为脱敏列作为是否进行脱敏的判定条件,而当该SQL语句的返回列中没有使用到该SQL语句包含的敏感表及其敏感列时,采用上述判定条件进行判断会造成误判,进而会对不该脱敏的数据进行脱敏,而本发明与现有技术相比,通过预先确定SQL语句中包含的敏感表及其敏感列,然后判断SQL语句最终的返回列是否为SQL语句中所包含的敏感表及其敏感列,因此避免了脱敏的误判,提高了数据脱敏的精确度。
同时,本发明基于列的血缘关系分析出SQL语句最终的返回列是否来源于SQL语句中所包含的敏感表及其敏感列,可以进一步避免了当最终的返回列来自于该SQL语句包含的敏感表及其敏感列时,而未没有对最终的返回列进行脱敏的情况发生,进一步地提高了数据脱敏的精确度。另外,本发明在数据脱敏过程中未对敏感数据进行更改,而是采取对用户发送的SQL指令进行转换的方式确定数据展示方式,实现了高效率的动态脱敏效果。
下面再次结合附图1对本实施例提供的数据脱敏方法的具体技术方案进行详细的说明。
首先,执行步骤S01:接收用户发送的SQL语句,SQL语句为结构化查询语句select语句。
例如,select语句可以为:select DISTINCT(sex),name from my_student,其中,“my_student”为数据表标识,“sex”为数据库表“my_student”中包含的列标识。
需要说明的是,一个数据库通常包含一个或多个数据表,每个数据表具有对应的一个表字段标识,例如,“客户”、“订单”以及上文中的“my_student”等,每个表包含带有数据的行记录和列记录,每个行记录具有行标识,例如,1,2,3等,每个列记录具有列标识,例如,姓名、年龄、手机号码以及上文中的“sex”等。当数据表包含有指定的敏感信息(例如,身份证号码)时,该数据表为敏感表,在本发明实施例中,预设的脱敏清单中记载有敏感表信息。
其次,执行步骤S02:对SQL语句进行解析,根据解析结果判断SQL语句是否包含有预设脱敏清单中的敏感表,若判断出SQL语句包含有预设脱敏清单中的敏感表,则判断SQL语句包含的敏感表所要查询的数据列中是否包含有脱敏清单中与敏感表对应的敏感列。
在本发明的一个或多个实施例中,脱敏清单中包括至少一个需要进行脱敏的脱敏列标识及每个脱敏列对应的脱敏表标识,进一步地,在接收用户发送的结构化查询语言SQL语句之前,数据脱敏方法还包括:生成脱敏清单。
具体地,在本发明一个或者多个实施例中,脱敏清单还进一步包括各个脱敏表对应的数据库标识及各个脱敏列对应的脱敏类型标识,具体可参见表一:
表一:
数据库标识 脱敏表标识 脱敏列标识 脱敏类型标识
RAW TESTTAB COL1 name
RAW TESTTAB COL2 address
MID MTESTTAB MCOL1 name
MID MTESTTAB MCOL2 address
进一步地,生成脱敏清单的过程可以包括:
步骤一:获取预设的脱敏类型标识集及原始数据,其中,脱敏类型标识集包括一个或多个脱敏类型标识;
具体的,脱敏类型标识集可以包括vln/车牌号、vin/车架号、ec/发动机号、um/UM号、qq/QQ号、weixin/微信号、name/姓名、address/地址、email/邮件及funds/公积金号等,原始数据可以由至少一个原始数据表构成。
步骤二:根据各个原始数据表中的列标识与脱敏类型标识集中的脱敏类型标识进行字段匹配,将与脱敏类型标识集中的任一个或者多个脱敏类型标识相匹配的列标识对应的列确定为脱敏列,将每个脱敏列对应的原始数据表确定为脱敏表。
步骤三:将确定的脱敏列标识、每个脱敏列对应的脱敏表标识、每个脱敏表对应的数据库标识及每个脱敏列对应的脱敏类型标识建立关联关系并添加至脱敏清单中,在其他实施方式中,脱敏清单还可以是开发人员进行手动设置而成,本发明对脱敏清单的生成方式不做限定。
进一步地,在本发明一个或多个实施例中,为了满足不同的业务需求,数据脱敏装置可以对生成的脱敏清单进行更新,更新脱敏清单的方式可以包括但不限于以下两种:
方式一:当用户新建数据表后,将新建的数据表的列标识与预设的脱敏类型标识集进行匹配,确定新建的数据表中是否存在需要脱敏的列,若有则将新建数据表中需要进行脱敏的列标识与该新建表的表字段标识添加至脱敏清单中,以实现脱敏清单的更新。
方式二:根据定时事件定期获取新建数据表,根据新建数据表与原始数据表的血缘关系,确定新建数据表中与脱敏清单上的脱敏列具有血缘关系的所有相关列,将与脱敏清单上的脱敏列具有血缘关系的所有相关列添加至脱敏清单中,以实现对脱敏清单的更新。
其中,血缘关系意指多个数据节点(列)在生产过程中的上下游关系,例如,如果根据数据节点A(列A)生成数据节点B(列B),则数据节点A(列A)是数据节点(列B)的上游节点,同理数据节点B(列B)是数据节点A(列A)的下游节点。
举例来说,如果原始数据表raw.fs_cf_guaranty_info的vehicleno列是位于脱敏清单中,新建数据表xid中的Coll来源于raw.fs_cf_guaranty_info的列vehicleno,那么可以将Coll列以及Coll列对应的表xid添加至脱敏清单中。
进一步地,在本发明一个或多个实施例中,步骤S02:对SQL语句进行解析,根据解析结果判断SQL语句是否包含有预设脱敏清单中的敏感表,若判断出SQL语句包含有预设脱敏清单中的敏感表,则判断SQL语句包含的敏感表所要查询的数据列中是否包含脱敏清单中与敏感表对应的敏感列,可以包括:
步骤S021:对SQL语句进行词法解析及语法解析,得到SQL语句对应的抽象语法树(Abstract Syntax Tree,AST)。
步骤S022:根根据抽象语法树确定SQL语句所包含的数据表。
步骤S023:判断SQL语句所包含的数据表中是否包含有预设脱敏清单中的敏感表。
步骤S024:若判断出SQL语句所要查询的数据表中包含有预设脱敏清单中的敏感表,则根据抽象语法树确定SQL语句包含的敏感表所要查询的数据列,并判断数据列中是否包含有脱敏清单中的与敏感表对应的敏感列。
步骤S025:若判断出SQL语句所要查询的数据表中没有包含预设脱敏清单中的敏感表,则执行用户发送的SQL语句,并输出查询结果,结束流程。
进一步地,步骤S021:对SQL语句进行词法解析及语法解析,得到SQL语句的对应的抽象语法树,可以包括:
对SQL语句进行分解,得到若干个单词,根据若干个单词构造出单词链;对单词链进行语法结构分析,构造出与SQL语句对应的抽象语法树。
需要知道的是,词法分析为将字符序列转换为单词(Token)序列的过程,通过预先定义的词法,把输入的字符集转换成一个个单词,并将一个个单词组合成单词链,即单词序列,语法分析为在词法分析的基础上将单词链组合成各个语法短语,然后构造生成一棵抽象语法树,将自然语义的SQL语句解析成较为抽象地、机器可理解的数据结构,以树形结构表示Token流,树上的每个节点都是一个Token,通过树结构表示语法,抽象语法树中的各个节点之间形成强依赖关系。
接下来,执行步骤S03:若判断出SQL语句包含的敏感表所要查询的数据列中包含有脱敏清单中与敏感表对应的敏感列,则根据解析结果确定SQL语句的返回列,并判断SQL语句的返回列中是否包含敏感列或者与敏感列具有血缘关系的列。
具体的,根据解析结果确定SQL语句的返回列,并判断SQL语句的返回列中是否包含与敏感列具有血缘关系的列,可以包括:
步骤S031:根据抽象语法树对SQL语句的语义特征进行分析,确定SQL语句的返回列;
步骤S032:根据抽象语法树判断SQL语句的返回列是否包含与敏感列相关的列;
步骤S033:若是,则确定与敏感列相关的列为与敏感列具有血缘关系的列。
需要知道的是,相关的列意指根据该敏感列生成的列,也可以说,与敏感列相关的来源于脱敏清单中包括的敏感列,由于SQL最终返回给用户的最终列是根据SQL语句的逻辑关系决定,具有不确定性,其可能是数据库中某一数据表中的数据列,也有可能为了适应不同的业务场景而对原有的数据列进行加工与转换后得到新的数据列,而新生成的数据列无法根据与脱敏清单进行匹配的结果来确定是否需要脱敏,因此需要通过血缘关系查找到新生成的数据列来源于底层中的哪个数据表及数据列,进而确定返回列是否需要脱敏,实现了针对不同情景到达精确脱敏的效果。
例如,SQL语句为:select x.xid as xid FROM(select vehicleno as xid fromraw.fs_cf_guaranty_info)x,如果数据表raw.fs_cf_guaranty_info的vehicleno列为脱敏清单中的脱敏列,但该SQL语句中返回列为xid,xid来源于raw.fs_cf_guaranty_info的列vehicleno,因此xid同样也需要脱敏。
步骤S034:若否,执行用户发送的SQL语句,并输出查询结果,结束流程。
接下来,执行步骤S04:若判断出SQL语句的返回列中包含敏感列或者与敏感列具有血缘关系的列,则将返回列中包含的敏感列或者与脱敏列具有血缘关系的列确定为目标脱敏列,并将SQL语句中用于访问目标脱敏列的语句替换为自定义的脱敏函数,脱敏函数用于将目标脱敏列对应的字符转换为预先设置的特殊字符。
例如,对身份证(假设为CERITID)的指定位置的字符或根据需要直接对整个身份证号码的所有字符用预先设置的特殊字符(如:‘*’)进行替代。如对后三位进行脱敏,则指定函数为SUBSTR(CERITID,1,LENGTH(CERITID)-3)||’***’。
进一步地,步骤S01:接收用户发送的SQL语句,可以包括:
接收用户发送的SQL语句以及用户标识;
将返回列中包含的敏感列或者与脱敏列具有血缘关系的列确定为目标脱敏列之后,数据脱敏方法还可以包括:
获取预设的授权用户白名单;
判断授权用户白名单中是否包含用户标识;
若否,则继续执行将SQL语句中用于访问目标脱敏列的语句替换为自定义的脱敏函数。
可以理解,本发明通过预先设置授权用户白名单,通过将用于信息与授权用户白名单进行匹配,根据匹配结果来确定用户是否被允许访问目标脱敏列,从而了实现了数据脱敏的灵活管控。
接下来,执行步骤S05:执行替换后的SQL语句,并输出查询结果。
可以理解,本发明实施例与现有技术相比,在数据脱敏过程中未对敏感数据进行更改,而是采取对用户发送的SQL指令进行转换的方式确定数据展示方式,从而达到数据脱敏的效果,保证了数据的精确性。
请参阅附图2,本发明提供一种数据脱敏装置1,包括:
接收模块11,用于接收用户发送的SQL语句,SQL语句为结构化查询语句select语句;
解析模块12,用于对SQL语句进行解析,根据解析结果判断SQL语句是否包含有预设脱敏清单中的敏感表,若判断出SQL语句包含有预设脱敏清单中的敏感表,则判断SQL语句包含的敏感表所要查询的数据列中是否包含有脱敏清单中与敏感表对应的敏感列;
判断模块13,用于当包含的敏感表所要查询的数据列中包含脱敏清单中的与敏感表对应的敏感列时,根据解析结果确定SQL语句的返回列,并判断SQL语句的返回列中是否包含敏感列或者与敏感列具有血缘关系的列;
替换模块14,用于当判断出SQL语句包含的敏感表所要查询的数据列中包含有脱敏清单中与敏感表对应的敏感列,则根据解析结果确定SQL语句的返回列,并判断SQL语句的返回列中是否包含敏感列或者与敏感列具有血缘关系的列;及
执行模块15,用于执行替换后的SQL语句,并输出查询结果。
进一步地,解析模块12包括:
第一确定单元,用于根据抽象语法树确定SQL语句所包含的数据表;
第一判断单元,用于判断SQL语句所包含的数据表中是否包含有预设脱敏清单中的敏感表;及
第二判断单元,用于当判断出SQL语句所要查询的数据表中包含有预设脱敏清单中的敏感表,则根据抽象语法树确定SQL语句包含的敏感表所要查询的数据列,并判断数据列中是否包含有脱敏清单中的与敏感表对应的敏感列。
进一步地,判断模块13包括:
分析单元,用于根据抽象语法树对SQL语句的语义特征进行分析,确定SQL语句的返回列;
第三判断单元,用于根据抽象语法树判断SQL语句的返回列是否包含与敏感列相关的列;及
第二确定单元,用于当SQL语句的返回列为与敏感列相关的列时,确定与敏感列相关的列为与敏感列具有血缘关系的列。
进一步地,解析单元包括:
分解子单元,用于对SQL语句进行分解,得到若干个单词,根据若干个单词构造出单词链;及
分析子单元,用于对单词链进行语法结构分析,构造出与SQL语句对应的抽象语法树。
进一步地,接收模块11包括:
接收单元,用于接收用户发送的SQL语句以及用户标识;
数据脱敏装置1还包括:
获取单元,用于获取预设的授权用户白名单;及
第四判断单元,用于判断授权用户白名单中是否包含用户标识,其中,当授权用户白名单中没有包含用户标识时,替换模块14继续执行将SQL语句中用于访问目标脱敏列的语句替换为自定义的脱敏函数。
本发明实施例提供了一种存储介质,该存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行实现实施例中的数据脱敏方法。
请参阅附图3,本发明实施例提供了一种计算机设备,该实施例的计算机设备50包括:处理器51、存储器52以及存储在存储器52中并可在处理器51上运行的计算机程序53,该计算机程序53被处理器51执行时实现实施例中的数据脱敏方法,为避免重复,此处不一一赘述。或者,该计算机程序被处理器51执行时实现实施例中数据脱敏装置1中各模型/单元的功能,为避免重复,此处不一一赘述。
计算机设备50可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。计算机设备50可包括但不仅限于处理器51、存储器52。本领域技术人员可以理解,图3仅仅是计算机设备50的示例,并不构成对计算机设备50的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如计算机设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器51可以是中央处理单元(Central Processing Unit,CPU),还可以是其它通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器52可以是计算机设备50的内部存储单元,例如计算机设备50的硬盘或内存。存储器52也可以是计算机设备50的外部存储设备,例如计算机设备50上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器52还可以既包括计算机设备50的内部存储单元也包括外部存储设备。存储器52用于存储计算机程序以及计算机设备所需的其它程序和数据。存储器52还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)或处理器(Processor)执行本发明各个实施例方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (6)

1.一种数据脱敏方法,其特征在于,所述方法包括:
接收用户发送的SQL语句,所述SQL语句为结构化查询语句select语句;
对所述SQL语句进行解析,根据解析结果判断所述SQL语句是否包含有预设脱敏清单中的敏感表,若判断出所述SQL语句包含有预设脱敏清单中的敏感表,则判断所述SQL语句包含的敏感表所要查询的数据列中是否包含有所述脱敏清单中与所述敏感表对应的敏感列;
若判断出所述SQL语句包含的所述敏感表所要查询的数据列中包含有所述脱敏清单中与所述敏感表对应的敏感列,则根据所述解析结果确定所述SQL语句的返回列,并判断所述SQL语句的返回列中是否包含所述敏感列或者与所述敏感列具有血缘关系的列;
若判断出所述SQL语句的返回列中包含所述敏感列或者与所述敏感列具有血缘关系的列,则将所述返回列中包含的所述敏感列或者与所述敏感列具有血缘关系的列确定为目标脱敏列,并将所述SQL语句中用于访问所述目标脱敏列的语句替换为自定义的脱敏函数,所述脱敏函数用于将所述目标脱敏列对应的字符转换为预先设置的特殊字符;
执行替换后的SQL语句,并输出查询结果;
所述对所述SQL语句进行解析,根据解析结果判断所述SQL语句是否包含有预设脱敏清单中的敏感表,若判断出所述SQL语句包含有预设脱敏清单中的敏感表,则判断所述SQL语句包含的所述敏感表所要查询的数据列中是否包含所述脱敏清单中与所述敏感表对应的敏感列,包括:
对所述SQL语句进行词法解析及语法解析,得到所述SQL语句对应的抽象语法树;
根据所述抽象语法树确定所述SQL语句所包含的数据表;
判断所述SQL语句所包含的数据表中是否包含有所述预设脱敏清单中的敏感表;
若判断出所述SQL语句所要查询的数据表中包含有所述预设脱敏清单中的敏感表,则根据所述抽象语法树确定所述SQL语句包含的敏感表所要查询的数据列,并判断所述数据列中是否包含有所述脱敏清单中的与所述敏感表对应的敏感列;
所述根据所述解析结果确定所述SQL语句的返回列,并判断所述SQL语句的返回列中是否包含与所述敏感列具有血缘关系的列,包括:
根据所述抽象语法树对所述SQL语句的语义特征进行分析,确定所述SQL语句的返回列;
根据所述抽象语法树判断所述SQL语句的返回列是否包含与所述敏感列相关的列;
若是,则确定所述与所述敏感列相关的列为与所述敏感列具有血缘关系的列。
2.如权利要求1所述的方法,其特征在于,所述对所述SQL语句进行词法解析及语法解析,得到与所述SQL语句对应的抽象语法树,包括:
对所述SQL语句进行分解,得到若干个单词,根据所述若干个单词构造出单词链;
对所述单词链进行语法结构分析,构造出与所述SQL语句对应的抽象语法树。
3.如权利要求1所述的方法,其特征在于,所述接收用户发送的SQL语句,包括:
接收用户发送的SQL语句以及用户标识;
将所述返回列中包含的所述敏感列或者与所述敏感列具有血缘关系的列确定为目标脱敏列之后,所述方法还包括:
获取预设的授权用户白名单;
判断所述授权用户白名单中是否包含所述用户标识;
若否,则继续执行所述将所述SQL语句中用于访问所述目标脱敏列的语句替换为自定义的脱敏函数。
4.一种数据脱敏装置,其特征在于,包括:
接收模块,用于接收用户发送的SQL语句,所述SQL语句为结构化查询语句select语句;
解析模块,用于对所述SQL语句进行解析,根据解析结果判断所述SQL语句是否包含有预设脱敏清单中的敏感表,若判断出所述SQL语句包含有预设脱敏清单中的敏感表,则判断所述SQL语句包含的敏感表所要查询的数据列中是否包含有所述脱敏清单中与所述敏感表对应的敏感列;
判断模块,用于当包含的所述敏感表所要查询的数据列中包含所述脱敏清单中的与所述敏感表对应的敏感列时,根据所述解析结果确定所述SQL语句的返回列,并判断所述SQL语句的返回列中是否包含所述敏感列或者与所述敏感列具有血缘关系的列;
替换模块,用于当判断出所述SQL语句包含的所述敏感表所要查询的数据列中包含有所述脱敏清单中与所述敏感表对应的敏感列,则根据所述解析结果确定所述SQL语句的返回列,并判断所述SQL语句的返回列中是否包含所述敏感列或者与所述敏感列具有血缘关系的列;及
执行模块,用于执行替换后的SQL语句,并输出查询结果;
所述解析模块包括:
解析单元,用于对所述SQL语句进行词法解析及语法解析,得到所述SQL语句对应的抽象语法树;
第一确定单元,用于根据所述抽象语法树确定所述SQL语句所包含的数据表;
第一判断单元,用于判断所述SQL语句所包含的数据表中是否包含有所述预设脱敏清单中的敏感表;及
第二判断单元,用于当判断出所述SQL语句所要查询的数据表中包含有所述预设脱敏清单中的敏感表,则根据所述抽象语法树确定所述SQL语句包含的敏感表所要查询的数据列,并判断所述数据列中是否包含有所述脱敏清单中的与所述敏感表对应的敏感列;
所述判断模块包括:
分析单元,用于根据所述抽象语法树对所述SQL语句的语义特征进行分析,确定所述SQL语句的返回列;
第三判断单元,用于根据所述抽象语法树判断所述SQL语句的返回列是否包含与所述敏感列相关的列;及
第二确定单元,用于当所述SQL语句的返回列为与所述敏感列相关的列时,确定所述与所述敏感列相关的列为与所述敏感列具有血缘关系的列。
5.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至3中任意一项所述的方法。
6.一种计算机设备,包括存储器和处理器,所述存储器用于存储包括程序指令的信息,所述处理器用于控制程序指令的执行,其特征在于:所述程序指令被处理器加载并执行时实现权利要求1至3任意一项所述的方法。
CN201911231430.3A 2019-12-05 2019-12-05 数据脱敏方法、装置、存储介质及计算机设备 Active CN111191276B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911231430.3A CN111191276B (zh) 2019-12-05 2019-12-05 数据脱敏方法、装置、存储介质及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911231430.3A CN111191276B (zh) 2019-12-05 2019-12-05 数据脱敏方法、装置、存储介质及计算机设备

Publications (2)

Publication Number Publication Date
CN111191276A CN111191276A (zh) 2020-05-22
CN111191276B true CN111191276B (zh) 2023-09-19

Family

ID=70707689

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911231430.3A Active CN111191276B (zh) 2019-12-05 2019-12-05 数据脱敏方法、装置、存储介质及计算机设备

Country Status (1)

Country Link
CN (1) CN111191276B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112052478A (zh) * 2020-09-01 2020-12-08 上海观安信息技术股份有限公司 一种多表子集抽取脱敏方法
CN112560100B (zh) * 2020-12-22 2023-09-26 网易(杭州)网络有限公司 数据脱敏方法及装置、计算机可读存储介质、电子设备
CN112765248A (zh) * 2021-01-11 2021-05-07 上海上讯信息技术股份有限公司 基于sql的数据抽取的方法及设备
CN112818383A (zh) * 2021-01-14 2021-05-18 内蒙古蒙商消费金融股份有限公司 一种表注册方法及装置
CN112765658A (zh) * 2021-01-15 2021-05-07 杭州数梦工场科技有限公司 一种数据脱敏方法、装置及电子设备和存储介质
CN113032836B (zh) * 2021-04-22 2022-05-06 支付宝(杭州)信息技术有限公司 数据脱敏方法和装置
CN113901513A (zh) * 2021-09-30 2022-01-07 四川新网银行股份有限公司 一种基于血缘解析的动态数据脱敏方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106295388A (zh) * 2015-06-04 2017-01-04 中国移动通信集团山东有限公司 一种数据脱敏方法和装置
CN109284213A (zh) * 2018-08-07 2019-01-29 阿里巴巴集团控股有限公司 报警方法、装置、电子设备及计算机可读存储介质
CN109977222A (zh) * 2019-03-05 2019-07-05 广州海晟科技有限公司 数据敏感行为的识别方法
CN110232056A (zh) * 2019-05-21 2019-09-13 苏宁云计算有限公司 一种结构化查询语言的血缘解析方法及其工具

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106295388A (zh) * 2015-06-04 2017-01-04 中国移动通信集团山东有限公司 一种数据脱敏方法和装置
CN109284213A (zh) * 2018-08-07 2019-01-29 阿里巴巴集团控股有限公司 报警方法、装置、电子设备及计算机可读存储介质
CN109977222A (zh) * 2019-03-05 2019-07-05 广州海晟科技有限公司 数据敏感行为的识别方法
CN110232056A (zh) * 2019-05-21 2019-09-13 苏宁云计算有限公司 一种结构化查询语言的血缘解析方法及其工具

Also Published As

Publication number Publication date
CN111191276A (zh) 2020-05-22

Similar Documents

Publication Publication Date Title
CN111191276B (zh) 数据脱敏方法、装置、存储介质及计算机设备
CN109243433B (zh) 语音识别方法和装置
CN109840255B (zh) 答复文本生成方法、装置、设备及存储介质
CN110874528B (zh) 文本相似度的获取方法及装置
CN110795697B (zh) 逻辑表达式的获取方法、装置、存储介质以及电子装置
CN110287318B (zh) 业务操作的检测方法及装置、存储介质、电子装置
US20140316822A1 (en) Automatic creation of clinical study reports
CN110427375B (zh) 字段类别的识别方法及装置
CN112416962A (zh) 数据查询方法、装置以及存储介质
CN103038762B (zh) 自然语言处理装置、方法
CN111310232A (zh) 数据脱敏方法及装置、电子设备、存储介质
CN111078545A (zh) 测试数据自动生成方法及系统
US20150193213A1 (en) Computer Implemented System and Method for Checking a Program Code
CN110427470B (zh) 问答处理方法、装置及电子设备
CN111401034B (zh) 文本的语义分析方法、语义分析装置及终端
CN111492364B (zh) 数据标注方法、装置及存储介质
CN110188106B (zh) 一种数据管理方法和装置
CN109872718A (zh) 语音数据的答案获取方法及装置、存储介质、计算机设备
CN111898363A (zh) 文本长难句的压缩方法、装置、计算机设备及存储介质
CN110489740A (zh) 语义解析方法及相关产品
CN110633258A (zh) 日志插入方法、装置、计算机装置及存储介质
CN109712680B (zh) 基于hl7 规范的医疗数据生成方法及系统
CN111221843A (zh) 大数据处理方法及装置
US11908466B2 (en) Automatically determining a descriptive identifier for a process grouping
US11907275B2 (en) Systems and methods for processing text data for disabbreviation of text units

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant