CN110196861B - 一种数据脱敏方法和装置 - Google Patents
一种数据脱敏方法和装置 Download PDFInfo
- Publication number
- CN110196861B CN110196861B CN201810157605.XA CN201810157605A CN110196861B CN 110196861 B CN110196861 B CN 110196861B CN 201810157605 A CN201810157605 A CN 201810157605A CN 110196861 B CN110196861 B CN 110196861B
- Authority
- CN
- China
- Prior art keywords
- data
- desensitization
- data desensitization
- database
- operation instruction
- 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
Links
- 238000000586 desensitisation Methods 0.000 title claims abstract description 501
- 238000000034 method Methods 0.000 title claims abstract description 37
- 230000010365 information processing Effects 0.000 claims abstract description 4
- 238000012545 processing Methods 0.000 claims description 25
- 238000004458 analytical method Methods 0.000 claims description 15
- 238000012986 modification Methods 0.000 description 38
- 230000004048 modification Effects 0.000 description 38
- 238000012217 deletion Methods 0.000 description 17
- 230000037430 deletion Effects 0.000 description 17
- 238000003780 insertion Methods 0.000 description 5
- 230000037431 insertion Effects 0.000 description 5
- 238000011022 operating instruction Methods 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 4
- 238000009795 derivation Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000035945 sensitivity Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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/6245—Protecting personal data, e.g. for financial or medical purposes
- G06F21/6254—Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Medical Informatics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据脱敏方法,预设数据库中各数据对象分别对应的数据脱敏策略;接收数据请求端发送的数据访问请求信息,并向数据库转发所述数据访问请求信息;解析所述数据访问请求信息,获取所述数据访问请求信息中的操作指令和所述操作指令访问所述数据库时基于的数据对象;根据所述操作指令、和/或基于的数据对象、和/或所述基于的数据对象对应的数据脱敏策略,按照预设操作规则,对所述数据访问请求信息在数据库中的访问结果进行数据脱敏操作。本发明还公开了一种数据脱敏的装置、存储介质和信息处理装置。
Description
技术领域
本发明涉及数据安全技术领域,尤其涉及一种数据脱敏方法和装置。
背景技术
数据脱敏是通过对某些敏感信息使用数据脱敏策略进行数据的变形,从而实现敏感隐私数据可靠保护的技术。
现有实现数据库数据脱敏的技术、方案和产品,往往通过外置数据脱敏服务器或者数据脱敏代理网关(Gateway),以中间件转换的方式进行数据脱敏。数据脱敏服务器先接收客户端的结构化查询语言(SQL,Structured Query Language)语句数据访问请求信息,并确定本次访问会涉及的敏感数据;然后根据预先设置的数据脱敏策略改写数据访问请求信息,将敏感数据用命令形式进行替换或修改等处理;再将改写的数据访问请求信息发送到数据库;数据库根据改写的数据访问请求信息进行数据查询,并将查询数据中的敏感数据按改写的数据访问请求信息中的指令进行替换或改写等处理;最后数据库将完成数据脱敏后的查询结果通过数据脱敏服务器转发给客户端。
采用上述方法进行数据脱敏处理存在一些缺陷和不足,包括:
第一、由于SQL语句的复杂性,改写SQL语句数据访问请求信息,往往会造成业务原始请求的处理逻辑发生改变,返回非期望的结果或者执行失败;
第二、上述数据脱敏方式往往仅能处理select类的查询请求,对类似createtable A as select B语句,如果B表设置有数据脱敏策略,而派生出的新表A无法获取数据脱敏策略,就会导致对A表查询时,A表的敏感字段值被泄露,造成安全隐患;
第三、上述方法需要在各个数据库引擎上部署数据脱敏算法并生效,不同的数据库引擎的实现方式不同,就会带来版本升级、统一管理维护的困难。
因此,如何实现采用原始数据访问请求信息进行数据库访问的前提下,对查询结果集进行数据脱敏,并实现数据脱敏策略的自动继承,同时可以降低维护成本,是亟待解决的问题。
发明内容
有鉴于此,本发明实施例期望提供一种数据脱敏方法和装置,能实现采用原始数据访问请求信息进行数据库访问的前提下,对查询结果集进行数据脱敏,并实现数据脱敏策略的自动继承,同时可以降低维护成本。
为达到上述目的,本发明的技术方案是这样实现的:
本发明实施例提供了一种数据脱敏方法,预设数据库中各数据对象分别对应的数据脱敏策略;所述方法还包括:
接收数据请求端发送的数据访问请求信息,并向数据库转发所述数据访问请求信息;
解析所述数据访问请求信息,获取所述数据访问请求信息中的操作指令和所述操作指令访问所述数据库时基于的数据对象;
根据所述操作指令、和/或基于的数据对象、和/或所述基于的数据对象对应的数据脱敏策略,按照预设操作规则,对所述数据访问请求信息在数据库中的访问结果进行数据脱敏操作。
上述方案中,所述解析所述数据访问请求信息,获取所述数据访问请求信息中的操作指令和所述操作指令访问所述数据库时基于的数据对象,包括:
解析所述数据访问请求信息,获取所述数据访问请求信息中的操作指令语句;
建立所述操作指令语句的抽象语法树;
根据所述抽象语法树,获取所述操作指令语句中操作指令,以及所述操作指令访问所述数据库时基于的所述数据库中的数据对象。
上述方案中,所述按照预设操作规则,对所述数据访问请求信息在数据库中的访问结果进行数据脱敏操作,包括:
所述操作指令为数据查询指令时,采用所述数据查询指令的输出字段所基于的所述数据库中数据对象对应的数据脱敏策略,对所述数据查询指令的输出字段进行数据脱敏处理;
将所述数据脱敏处理后的输出字段发送给所述数据请求端。
上述方案中,所述按照预设操作规则,对所述数据访问请求信息在数据库中的访问结果进行数据脱敏操作,包括:
所述操作指令为对数据对象进行的新增和/或修改操作时,将所述操作指令基于的数据对象对应数据脱敏策略,作为所述操作指令进行操作结果的数据脱敏策略;
所述操作指令为对数据对象进行的删除操作时,删除所述数据对象对应的数据脱敏策略。
上述方案中,所述数据对象包括:表和/或所述表中的字段。
本发明实施例还提供了一种数据脱敏装置,所述装置包括:设置模块、转发模块、解析模块和数据脱敏模块;其中,
所述设置模块,用于预设数据库中各数据对象分别对应的数据脱敏策略;所述方法还包括:
所述转发模块,用于接收数据请求端发送的数据访问请求信息,并向数据库转发所述数据访问请求信息;
所述解析模块,用于解析所述数据访问请求信息,获取所述数据访问请求信息中的操作指令和所述操作指令访问所述数据库时基于的数据对象;
所述数据脱敏模块,用于根据所述操作指令、和/或基于的数据对象、和/或所述基于的数据对象对应的数据脱敏策略,按照预设操作规则,对所述数据访问请求信息在数据库中的访问结果进行数据脱敏操作。
上述方案中,所述解析模块,具体用于:
解析所述数据访问请求信息,获取所述数据访问请求信息中的操作指令语句;
建立所述操作指令语句的抽象语法树;
根据所述抽象语法树,获取所述操作指令语句中操作指令,以及所述操作指令访问所述数据库时基于的所述数据库中的数据对象。
上述方案中,所述数据脱敏模块,具体用于:
所述操作指令为数据查询指令时,采用所述数据查询指令的输出字段所基于的所述数据库中数据对象对应的数据脱敏策略,对所述数据查询指令的输出字段进行数据脱敏处理;
将所述数据脱敏处理后的输出字段发送给所述数据请求端。
上述方案中,所述数据脱敏模块,具体用于:
所述操作指令为对数据对象进行的新增和/或修改操作时,将所述操作指令基于的数据对象对应数据脱敏策略,作为所述操作指令进行操作结果的数据脱敏策略;
所述操作指令为对数据对象进行的删除操作时,删除所述数据对象对应的数据脱敏策略。
上述方案中,所述数据对象包括:表和/或所述表中的字段。
本发明实施例还提供了一种存储介质,其上存储由可执行程序,所述可执行程序被处理器执行时实现上述方案中任一项所述数据脱敏方法的步骤。
本发明实施例还提供了一种信息处理装置,包括处理器、存储器及存储在存储器上并能够有所述处理器运行的可执行程序,所述处理器运行所述可执行程序时执行上述方案中任一项所述数据脱敏方法的步骤。
本发明实施例所提供的数据脱敏方法和装置,预设数据库中各数据对象分别对应的数据脱敏策略;接收数据请求端发送的数据访问请求信息,并向数据库转发所述数据访问请求信息;解析所述数据访问请求信息,获取所述数据访问请求信息中的操作指令和所述操作指令访问所述数据库时基于的数据对象;根据所述操作指令、和/或基于的数据对象、和/或所述基于的数据对象对应的数据脱敏策略,按照预设操作规则,对所述数据访问请求信息在数据库中的访问结果进行数据脱敏操作。如此,仅在数据脱敏服务器中设置一个数据脱敏策略就能完成对各数据库数据的数据脱敏,降低了维护成本;并且采用原始数据访问请求信息进行数据库访问,由数据脱敏服务器对数据库访问结果进行数据脱敏,避免了改写原始数据访问请求信息产生的风险;同时,通过操作规则实现操作数据对象,即表和字段等,过程中的数据脱敏策略的继承。
附图说明
图1为本发明实施例数据脱敏方法的流程示意图;
图2为本发明实施例不同操作指令对应的数据脱敏操作示意图;
图3为本发明实施例数据查询指令数据脱敏的流程示意图;
图4为本发明实施例数据脱敏方法交互示意图;
图5为本发明实施例数据脱敏具体实施流程示意图;
图6为本发明实施例数据脱敏装置组成结构示意图。
具体实施方式
本发明实施例中,预设数据库中各数据对象分别对应的数据脱敏策略;接收数据请求端发送的数据访问请求信息,并向数据库转发所述数据访问请求信息;解析所述数据访问请求信息,获取所述数据访问请求信息中的操作指令和所述操作指令访问所述数据库时基于的数据对象;根据所述操作指令、和/或基于的数据对象、和/或所述基于的数据对象对应的数据脱敏策略,按照预设操作规则,对所述数据访问请求信息在数据库中的访问结果进行数据脱敏操作。
下面结合实施例对本发明再作进一步详细的说明。
本发明实施例提供的数据脱敏方法,如图1所示,所述方法包括:
步骤110:预设数据库中各数据对象分别对应的数据脱敏策略;
这里,可以在数据脱敏服务器等数据脱敏服务中间件中,设置各数据对象对应的数据脱敏策略;并在数据脱敏服务器内保留并执行所述数据脱敏策略;所述数据脱敏策略可以根据数据库中不同数据的不同数据敏感性设置;所述数据对象可以是用来定位数据库中数据的表、字段和记录等数据对象;
数据库中的数据通常采用表的形式存储,用记录号表示行,用字段名称表示列;可以对不同的表、表中的字段、以及记录分别设置数据脱敏策略;以数据表中的字段“电话号码”为例,可以对所述数据表中字段“电话号码”设置数据脱敏策略,可以设置为:隐含中间4位或隐含所有数位,即数据脱敏中间4位或数据脱敏所有数位;如此,当该字段的数据被读取并传送给用户端时,数据脱敏服务器可以根据该字段的数据脱敏策略进行数据脱敏处理。这里,所述数据库可以是通过SQL语句指令进行访问的数据库。
步骤120:接收数据请求端发送的数据访问请求信息,并向数据库转发所述数据访问请求信息;
这里,可以由数据脱敏服务器等数据脱敏服务中间件接收并转发所述数据访问请求信息;所述数据请求端可以是应用程序、用户和/或客户端等;所述数据请求端可以发送包含SQL语句指令的数据访问请求信息,并通过所述数据脱敏服务器转发,访问所述数据库;
数据脱敏服务器接收到所述数据请求端发送的所述数据访问请求信息后,不再对所述数据访问请求信息进行改写,直接将所述数据访问请求信息转发给数据库;如此,可以避免由于改写数据访问请求信息对数据访问请求信息的逻辑产生影响,从而影响对数据库进行访问。
步骤130:解析所述数据访问请求信息,获取所述数据访问请求信息中的操作指令和所述操作指令访问所述数据库时基于的数据对象;
这里,可以由所述数据脱敏服务器等数据脱敏服务中间件解析所述数据访问请求信息;数据脱敏服务器可以在接收到所述数据请求端发送的所述数据访问请求信息后,将所述数据访问请求信息缓存到数据脱敏服务器本地,再进行解析处理;解析出所述数据访问请求信息中的操作指令和所述操作指令访问所述数据库时基于的数据对象;
所述操作指令可以是所述数据访问请求信息中的SQL语句;可以通过现有的一些SQL语法分析软件或SQL语法分析方法进行所述数据访问请求信息中的SQL语句的语法分析,获取操作指令及基于的数据对象;
通常,SQL语句访问数据库时会进行建表、修改表、删除表、修改字段、查询数据等访问操作;如访问操作是对数据库中现有的数据对象的进行引用、管理、读取及修改等操作时,则将涉及的数据对象认为是基于的数据对象;如执行select语句指令查询表A中字段1的语句,则表A和字段1为select语句指令基于的数据对象;如在数据库中新建一个表B,表B中的字段2中的数据为表A中字段1中指定的数据,则表A和字段1为建表操作指令所基于的数据对象;在此不对各操作指令进行赘述。其中,所述基于的数据对象通常也称为依赖的数据对象;
进一步的,可以解析所述数据访问请求信息,获取所述数据访问请求信息中的操作指令语句;建立所述操作指令语句的抽象语法树(AST,Abstract Syntax Tree);根据所述AST,获取所述操作指令语句中操作指令,以及所述操作指令访问所述数据库时基于的所述数据库中的数据对象;
AST是语句结构的图形表示,它代表了语句的推导结果,有利于理解语句语法结构的层次;采用AST可以更直观确定操作指令访问所述数据库时基于的所述数据库中的数据对象。
步骤140:根据所述操作指令、和/或基于的数据对象、和/或所述基于的数据对象对应的数据脱敏策略,按照预设操作规则,对所述数据访问请求信息在数据库中的访问结果进行数据脱敏操作;
这里,可以由所述数据脱敏服务器等数据脱敏服务中间件进行数据脱敏操作;所述预设操作规则可以根据不同操作指令进行设置;如操作指令为数据查询指令时,可以进行数据查询结果的数据脱敏;操作指令为对数据库中的表和/或表中的字段进行新增和修改等操作时,可以对数据脱敏策略进行新增和修改等操作。
进一步的,所述操作指令为数据查询指令时,采用所述数据查询指令的输出字段所基于的所述数据库中数据对象对应的数据脱敏策略,对所述数据查询指令的输出字段进行数据脱敏处理;将所述数据脱敏处理后的输出字段发送给所述数据请求端;
所述操作指令为对数据对象进行的新增和/或修改操作时,将所述操作指令基于的数据对象对应数据脱敏策略,作为所述操作指令进行操作结果的数据脱敏策略;
所述操作指令为对数据对象进行的删除操作时,删除所述数据对象对应的数据脱敏策略;
具体的,针对不同操作指令可以对数据脱敏策略进行的不同操作,如此可以覆盖查询,删除、修改、插入等语句,如图2所示;可以对数据查询指令应用数据脱敏策略进行数据脱敏处理;可以对插入语句insert into、insert overwrite、create语句采用数据脱敏策略继承处理;可以对删除表drop语句采用数据脱敏策略自动删除处理;可以对修改表名或者字段名的alter语句采用数据脱敏策略自动修改处理等;
这里,所述数据查询指令可以是SQL语句中的select指令等用于查询数据库中表内数据的指令。以select指令为例,按照预设操作规则,对所述数据访问请求信息在数据库中的访问结果进行数据脱敏操作的具体步骤如图3所示,包括:
步骤141:通过遍历AST获取SQL语句的内部结构,生成输出字段间的依赖关系;
步骤142:根据依赖关系,逐个获取最外层select查询输出字段所基于的数据对象对应的数据脱敏策略;
步骤143:应用数据脱敏策略,根据依赖关系,逐个将获取的数据脱敏策略作为该输出字段的数据脱敏策略;
步骤144:逐条读取查询结果集,对每行数据进行解析,对其中的含有数据脱敏策略的字段调用对应的数据脱敏策略进行数据脱敏处理;
步骤145:对数据脱敏后的数据进行组装,缓存到本地或者其他存储系统中。
实际应用中,步骤144至步骤145可以多线程并发处理,每个线程分配一定范围的结果集进行数据脱敏处理;这里,所述结果集为SQL语句在数据库中进行查询得到的数据的集合。
所述数据对象的新增,可以是SQL语句中create table实现的表的创建等操作;也可以是SQL语句中insert into/overwrite table等语句中将数据库中原有数据添加到其他表中,使原有数据新增了所述数据对象等操作;所述数据对象的修改,可以是SQL语句中alter等实现的,表或字段的修改;所述数据对象的删除,可以是SQL语句中drop等实现的;
针对create table语句;首先,可以遍历AST,获取SQL语句的内部结构,找到新创建表及新创建表包含的每个字段所基于的数据库中已有表中的字段;然后,逐个获取新建表字段所基于的数据库中已有表中的字段的数据脱敏策略,如果新建表字段所基于的表对应字段设置了数据脱敏策略,则需要向数据脱敏策略表中插入一条该新建表字段的数据脱敏策略,新增的数据脱敏策略与所基于的数据库中已有表中的字段的数据脱敏策略一致;
通过这种方式,新建表字段可以自动继承数据脱敏策略,不破坏新建表原始数据内容,新创建表的数据在查询时根据继承的数据脱敏策略进行数据脱敏处理,从而全面保护数据安全;
针对插入语句,比如insert into/overwrite table语句;首先,可以遍历AST,获取SQL语句的内部结构,找到插入字段的各所基于的数据库中已有表中的字段;然后,逐个获取新建表字段所基于的数据库中已有表中的字段的数据脱敏策略,如果新建表字段所基于的表对应字段设置了数据脱敏策略,则需要调用向数据脱敏策略表中插入一条插入字段的数据脱敏策略,新增的数据脱敏策略与所基于的数据库中已有表中的字段的数据脱敏策略一致;
通过这种方式,新插入字段的表可以自动继承数据脱敏策略,不破坏插入表的原始数据内容,新插入表的数据在查询时根据继承的数据脱敏策略进行数据脱敏处理,全面保护数据安全;
针对drop语句;可以通过遍历AST获取SQL语句的内部结构,找到待删除的表,获取待删除表的数据脱敏策略,如果待删除表设置了数据脱敏策略,则删除与该表相关的所有数据脱敏策略;
针对alter等修改表名或者表的结构的语句;首先,通过遍历AST获取SQL语句的内部结构,找到修改的表名及修改的字段名;然后,获取修改表字段对应的数据脱敏策略,如果该表字段设置了数据脱敏策略,则同步修改与该表或者字段相关的所有数据脱敏策略;
如上,通过数据脱敏策略继承、数据脱敏策略删除、数据脱敏策略修改可以有效保证数据脱敏策略能自动更新及继承,无需人工添加、更新或者删除数据脱敏策略,避免了安全漏洞。
完成所述数据脱敏数据操作后,可以将数据脱敏后的查询结果或操作结果返回给数据访问请求端。
下面结合具体示例对本发明产生的积极效果作进一步详细的描述;
本示例中,客户端通过数据脱敏服务器访问数据库的信息交互如图4所示;所述数据脱敏服务器进行数据脱敏操作的具体步骤,如图5所示,包括:
步骤510:客户端通过数据脱敏服务器向数据库发起访问请求;
步骤520:数据脱敏服务器接收客户端发起的访问请求,对数据访问请求信息的进行解析,获取请求的数据库名称等连接信息,获取请求的业务SQL语句,并将数据访问请求信息放入请求队列中进行缓存;
步骤530:数据脱敏服务器向数据库引擎发送数据访问请求信息,发起访问请求;
步骤540:数据库服务器执行数据访问请求信息,并将执行结果返回数据脱敏服务器;
步骤550:数据脱敏服务器对数据访问请求信息的SQL语句进行解析,SQL语句语法分析后生成AST,对AST进行遍历解析,根据解析的结果以及数据脱敏策略,对SQL查询执行结果集的每条记录应用数据脱敏策略,得到数据脱敏后的数据;其具体步骤如下:
步骤551:数据脱敏服务器对数据访问请求信息的SQL语句进行解析;这里,以HiveSQL语法解析器解析后AST为解析为例;
对select查询语句生成的AST与insert into/overwrite table语句生成的AST结构相同,因此,可以对select及insert into/overwrite table解析过程共用一套解析流程;
以SQL语句操作指令insert into table info select id,name from student为例,生成的AST如下:
其中,QUERY语句对应一个名为TOK_QUERY的AST节点,该节点内部包含一个TOK_FROM子节点和一个TOK_INSERT子节点;
可以采用如下方法对select查询语句或insert into/overwrite table的AST进行处理:
分析TOK_FROM节点,通过对TOK_FROM子节点解析可以得到当前Query所直接基于的数据表的信息,即FROM从句后所跟的表;
分析TOK_FROM节点完毕可得到一个数组列表fromTablesInfo,该列表内包含当前QUERY所有基于的数据表的信息,信息包括表名、表别名等。
分析TOK_SELECT节点获取每个结果字段都来源于fromTablesInfo中的哪一张表,生成依赖关系表;
分析完TOK_SELECT子节点后,再继续分析TOK_INSERT_INTO子节点和TOK_DESTINATION子节点,获得要插入的新表信息insertTables。
步骤552:对Select语句,根据步骤551确定的依赖关系,逐个获取最外层select查询输出字段所基于的数据对象对应的数据脱敏策略;
对create table、drop及alter语句通过分析AST均可以获取数据对象对应的数据脱敏策略;
步骤553:针对不同SQL语句,采用不同预设操作规则进行访问结果的数据脱敏操作;
步骤5531:对select语句,逐个将获取的数据脱敏策略作为该输出字段的数据脱敏策略;具体包括:
步骤5531a:根据依赖关系,逐个获取最外层select查询输出字段所基于的表字段对应的数据脱敏策略;应用数据脱敏策略,根据依赖关系,逐个将获取的数据脱敏策略作为该输出字段的数据脱敏策略;
步骤5531b:逐条读取查询结果集,对每行数据进行解析,对其中的含有数据脱敏策略的字段调用对应的数据脱敏策略进行转换;
步骤5531c:对数据脱敏后的数据进行组装,缓存到本地或者其他存储系统中;
步骤5531d:判断结果集是否处理完毕,如果是,则执行步骤560,否则,执行步骤5531b;
实际应用中,步骤5531b至步骤5531d可以多线程并发处理,每个线程分配一定范围的结果集进行数据脱敏处理;
步骤5532:对create table语句,通过遍历AST获取SQL语句的内部结构,对应create table的分析主要针对分析TOK_CREATETABLE节点与上述过程类似,不再赘述;
分析完成后获取新创建表每个字段所基于的数据库中的表及字段,逐个获取新建表字段所基于的表或字段的数据脱敏策略,如果新建表字段所基于的表中的字段设置了数据脱敏策略,则需要向数据脱敏策略表中插入一条该字段的数据脱敏策略,该策略继承自基于的字段的数据脱敏策略;
通过这种方式,新建表可以自动继承数据脱敏策略,且不破坏原始数据内容,新创建表的数据在查询时根据继承的数据脱敏策略自动数据脱敏处理,全面保护数据安全。
步骤5533:对drop语句,通过遍历AST获取SQL语句的内部结构,分析TOK_DROPTABLE节点,获取删除的表名,遍历数据脱敏策略表,删除与该表相关的所有的数据脱敏策略。
步骤4534:对alter语句修改表名或者表的结构,通过遍历AST获取SQL语句的内部结构,分析TOK_ALTERTABLE_RENAME(修改表名)节点、TOK_ALTERTABLE_RENAMECOL(修改列名)节点,找到修改的表名及修改的字段名,逐个找到修改的字段对应字段的数据脱敏策略,如果该表字段设置了数据脱敏策略,则需要遍历数据脱敏策略,同步修改与该表或者字段相关的所有数据脱敏策略。
步骤5535:对insert into、insert overwrite语句则获取insertTables新表名以及新表中的插入字段,建立新数据脱敏策略,数据脱敏策略中表名和字段名为新表的表名和新字段名,数据脱敏策略继承依赖表对应字段的数据脱敏策略;
通过这种方式,新插入记录的表可以自动继承数据脱敏策略,不破坏原始数据内容,新插入表的数据在查询时根据继承的数据脱敏策略自动数据脱敏处理,全面保护数据安全。
如上,通过数据脱敏策略继承、数据脱敏策略删除、数据脱敏策略修改可以有效保证数据脱敏策略能自动更新及继承,无需人工添加、更新或者删除数据脱敏策略,避免了安全漏洞。
步骤560:将执行结果返回客户端。
本发明实施例提供的数据脱敏装置,如图6所示,所述装置包括:设置模块61、转发模块62、解析模块63和数据脱敏模块64;其中,
所述设置模块61,用于预设数据库中各数据对象分别对应的数据脱敏策略;
这里,可以在数据脱敏服务器等数据脱敏服务中间件中,设置各数据对象对应的数据脱敏策略;并在数据脱敏服务器内保留并执行所述数据脱敏策略;所述数据脱敏策略可以根据数据库中不同数据的不同数据敏感性设置;所述数据对象可以是用来定位数据库中数据的表、字段和记录等数据对象;
数据库中的数据通常采用表的形式存储,用记录号表示行,用字段名称表示列;可以对不同的表、表中的字段、以及记录分别设置数据脱敏策略;以数据表中的字段“电话号码”为例,可以对所述数据表中字段“电话号码”设置数据脱敏策略,可以设置为:隐含中间4位或隐含所有数位,即数据脱敏中间4位或数据脱敏所有数位;如此,当该字段的数据被读取并传送给用户端时,数据脱敏服务器可以根据该字段的数据脱敏策略进行数据脱敏处理。这里,所述数据库可以是通过SQL语句指令进行访问的数据库。
所述转发模块62,用于接收数据请求端发送的数据访问请求信息,并向数据库转发所述数据访问请求信息;
这里,可以由数据脱敏服务器等数据脱敏服务中间件接收并转发所述数据访问请求信息;所述数据请求端可以是应用程序、用户和/或客户端等;所述数据请求端可以发送包含SQL语句指令的数据访问请求信息,并通过所述数据脱敏服务器转发,访问所述数据库;
数据脱敏服务器接收到所述数据请求端发送的所述数据访问请求信息后,不再对所述数据访问请求信息进行改写,直接将所述数据访问请求信息转发给数据库;如此,可以避免由于改写数据访问请求信息对数据访问请求信息的逻辑产生影响,从而影响对数据库进行访问。
所述解析模块63,用于解析所述数据访问请求信息,获取所述数据访问请求信息中的操作指令和所述操作指令访问所述数据库时基于的数据对象;
这里,可以由所述数据脱敏服务器等数据脱敏服务中间件解析所述数据访问请求信息;数据脱敏服务器可以在接收到所述数据请求端发送的所述数据访问请求信息后,将所述数据访问请求信息缓存到数据脱敏服务器本地,再进行解析处理;解析出所述数据访问请求信息中的操作指令和所述操作指令访问所述数据库时基于的数据对象;
所述操作指令可以是所述数据访问请求信息中的SQL语句;可以通过现有的一些SQL语法分析软件或SQL语法分析方法进行所述数据访问请求信息中的SQL语句的语法分析,获取操作指令及基于的数据对象;
通常,SQL语句访问数据库时会进行建表、修改表、删除表、修改字段、查询数据等访问操作;如访问操作是对数据库中现有的数据对象的进行引用、管理、读取及修改等操作时,则将涉及的数据对象认为是基于的数据对象;如执行select语句指令查询表A中字段1的语句,则表A和字段1为select语句指令的数据对象;如在数据库中新建一个表B,表B中的字段2中的数据为表A中字段1中指定的数据,则表A和字段1为建表操作指令所基于的数据对象;在此不对各操作指令进行赘述。其中,所述基于的数据对象通常也称为依赖的数据对象;
进一步的,可以解析所述数据访问请求信息,获取所述数据访问请求信息中的操作指令语句;建立所述操作指令语句的抽象语法树(AST,Abstract Syntax Tree);根据所述AST,获取所述操作指令语句中操作指令,以及所述操作指令访问所述数据库时基于的所述数据库中的数据对象;
AST是语句结构的图形表示,它代表了语句的推导结果,有利于理解语句语法结构的层次;采用AST可以更直观确定操作指令访问所述数据库时基于的所述数据库中的数据对象。
所述数据脱敏模块64,用于根据所述操作指令、和/或基于的数据对象、和/或所述基于的数据对象对应的数据脱敏策略,按照预设操作规则,对所述数据访问请求信息在数据库中的访问结果进行数据脱敏操作;
这里,可以由所述数据脱敏服务器等数据脱敏服务中间件进行数据脱敏操作;所述预设操作规则可以根据不同操作指令进行设置;如操作指令为数据查询指令时,可以进行数据查询结果的数据脱敏;操作指令为对数据库中的表和/或表中的字段进行新增和修改等操作时,可以对数据脱敏策略进行新增和修改等操作。
进一步的,所述操作指令为数据查询指令时,采用所述数据查询指令的输出字段所基于的所述数据库中数据对象对应的数据脱敏策略,对所述数据查询指令的输出字段进行数据脱敏处理;将所述数据脱敏处理后的输出字段发送给所述数据请求端;
所述操作指令为对数据对象进行的新增和/或修改操作时,将所述操作指令基于的数据对象对应数据脱敏策略,作为所述操作指令进行操作结果的数据脱敏策略;
所述操作指令为对数据对象进行的删除操作时,删除所述数据对象对应的数据脱敏策略;
具体的,针对不同操作指令可以对数据脱敏策略进行的不同操作,如此可以覆盖查询,删除、修改、插入等语句,如图2所示;可以对数据查询指令应用数据脱敏策略进行数据脱敏处理;可以对插入语句insert into、insert overwrite、create语句采用数据脱敏策略继承处理;可以对删除表drop语句采用数据脱敏策略自动删除处理;可以对修改表名或者字段名的alter语句采用数据脱敏策略自动修改处理等;
这里,所述数据查询指令可以是SQL语句中的select指令等用于查询数据库中表内数据的指令。以select指令为例,按照预设操作规则,对所述数据访问请求信息在数据库中的访问结果进行数据脱敏操作的具体步骤如图3所示,包括:
步骤141:通过遍历AST获取SQL语句的内部结构,生成输出字段间的依赖关系;
步骤142:根据依赖关系,逐个获取最外层select查询输出字段所基于的数据对象对应的数据脱敏策略;
步骤143:应用数据脱敏策略,根据依赖关系,逐个将获取的数据脱敏策略作为该输出字段的数据脱敏策略;
步骤144:逐条读取查询结果集,对每行数据进行解析,对其中的含有数据脱敏策略的字段调用对应的数据脱敏策略进行数据脱敏处理;
步骤145:对数据脱敏后的数据进行组装,缓存到本地或者其他存储系统中。
实际应用中,步骤144至步骤145可以多线程并发处理,每个线程分配一定范围的结果集进行数据脱敏处理;这里,所述结果集为SQL语句在数据库中进行查询得到的数据的集合。
所述数据对象的新增,可以是SQL语句中create table实现的表的新增等操作;也可以是SQL语句中insert into/overwrite table等语句中将数据库中原有数据添加到其他表中,使原有数据新增了所述数据对象等操作;所述数据对象的修改,可以是SQL语句中alter等实现的,表或字段的修改;所述数据对象的删除,可以是SQL语句中drop等实现的;
针对create table语句;首先,可以遍历AST,获取SQL语句的内部结构,找到新创建表及新创建表包含的每个字段所基于的数据库中已有表中的字段;然后,逐个获取新建表字段所基于的数据库中已有表中的字段的数据脱敏策略,如果新建表字段所基于的表对应字段设置了数据脱敏策略,则需要向数据脱敏策略表中插入一条该新建表字段的数据脱敏策略,新增的数据脱敏策略与所基于的数据库中已有表中的字段的数据脱敏策略一致;
通过这种方式,新建表字段可以自动继承数据脱敏策略,不破坏新建表原始数据内容,新创建表的数据在查询时根据继承的数据脱敏策略进行数据脱敏处理,从而全面保护数据安全;
针对插入语句,比如insert into/overwrite table语句;首先,可以遍历AST,获取SQL语句的内部结构,找到插入字段的各所基于的数据库中已有表中的字段;然后,逐个获取新建表字段所基于的数据库中已有表中的字段的数据脱敏策略,如果新建表字段所基于的表对应字段设置了数据脱敏策略,则需要调用向数据脱敏策略表中插入一条插入字段的数据脱敏策略,新增的数据脱敏策略与所基于的数据库中已有表中的字段的数据脱敏策略一致;
通过这种方式,新插入字段的表可以自动继承数据脱敏策略,不破坏插入表的原始数据内容,新插入表的数据在查询时根据继承的数据脱敏策略进行数据脱敏处理,全面保护数据安全;
针对drop语句;可以通过遍历AST获取SQL语句的内部结构,找到待删除的表,获取待删除表的数据脱敏策略,如果待删除表设置了数据脱敏策略,则删除与该表相关的所有数据脱敏策略;
针对alter等修改表名或者表的结构的语句;首先,通过遍历AST获取SQL语句的内部结构,找到修改的表名及修改的字段名;然后,获取修改表字段对应的数据脱敏策略,如果该表字段设置了数据脱敏策略,则同步修改与该表或者字段相关的所有数据脱敏策略;
如上,通过数据脱敏策略继承、数据脱敏策略删除、数据脱敏策略修改可以有效保证数据脱敏策略能自动更新及继承,无需人工添加、更新或者删除数据脱敏策略,避免了安全漏洞。
完成所述数据脱敏数据操作后,可以将数据脱敏后的查询结果或操作结果返回给数据访问请求端。
在实际应用中,所述设置模块61、转发模块62、解析模块63和数据脱敏模块64均可以由数据脱敏服务中间件中的CPU、微处理器(MCU)、数字信号处理器(DSP)、或现场可编程门阵列(FPGA)等实现。
本发明实施例提供的存储介质,其上存储由可执行程序,所述可执行程序被处理器执行时实现数据脱敏方法,如图1所示,所述方法包括:
步骤110:预设数据库中各数据对象分别对应的数据脱敏策略;
这里,可以在数据脱敏服务器等数据脱敏服务中间件中,设置各数据对象对应的数据脱敏策略;并在数据脱敏服务器内保留并执行所述数据脱敏策略;所述数据脱敏策略可以根据数据库中不同数据的不同数据敏感性设置;所述数据对象可以是用来定位数据库中数据的表、字段和记录等数据对象;
数据库中的数据通常采用表的形式存储,用记录号表示行,用字段名称表示列;可以对不同的表、表中的字段、以及记录分别设置数据脱敏策略;以数据表中的字段“电话号码”为例,可以对所述数据表中字段“电话号码”设置数据脱敏策略,可以设置为:隐含中间4位或隐含所有数位,即数据脱敏中间4位或数据脱敏所有数位;如此,当该字段的数据被读取并传送给用户端时,数据脱敏服务器可以根据该字段的数据脱敏策略进行数据脱敏处理。这里,所述数据库可以是通过SQL语句指令进行访问的数据库。
步骤120:接收数据请求端发送的数据访问请求信息,并向数据库转发所述数据访问请求信息;
这里,可以由数据脱敏服务器等数据脱敏服务中间件接收并转发所述数据访问请求信息;所述数据请求端可以是应用程序、用户和/或客户端等;所述数据请求端可以发送包含SQL语句指令的数据访问请求信息,并通过所述数据脱敏服务器转发,访问所述数据库;
数据脱敏服务器接收到所述数据请求端发送的所述数据访问请求信息后,不再对所述数据访问请求信息进行改写,直接将所述数据访问请求信息转发给数据库;如此,可以避免由于改写数据访问请求信息对数据访问请求信息的逻辑产生影响,从而影响对数据库进行访问。
步骤130:解析所述数据访问请求信息,获取所述数据访问请求信息中的操作指令和所述操作指令访问所述数据库时基于的数据对象;
这里,可以由所述数据脱敏服务器等数据脱敏服务中间件解析所述数据访问请求信息;数据脱敏服务器可以在接收到所述数据请求端发送的所述数据访问请求信息后,将所述数据访问请求信息缓存到数据脱敏服务器本地,再进行解析处理;解析出所述数据访问请求信息中的操作指令和所述操作指令访问所述数据库时基于的数据对象;
所述操作指令可以是所述数据访问请求信息中的SQL语句;可以通过现有的一些SQL语法分析软件或SQL语法分析方法进行所述数据访问请求信息中的SQL语句的语法分析,获取操作指令及基于的数据对象;
通常,SQL语句访问数据库时会进行建表、修改表、删除表、修改字段、查询数据等访问操作;如访问操作是对数据库中现有的数据对象的进行引用、管理、读取及修改等操作时,则将涉及的数据对象认为是基于的数据对象;如执行select语句指令查询表A中字段1的语句,则表A和字段1为select语句指令基于的数据对象;如在数据库中新建一个表B,表B中的字段2中的数据为表A中字段1中指定的数据,则表A和字段1为建表操作指令所基于的数据对象;在此不对各操作指令进行赘述。其中,所述基于的数据对象通常也称为依赖的数据对象;
进一步的,可以解析所述数据访问请求信息,获取所述数据访问请求信息中的操作指令语句;建立所述操作指令语句的AST;根据所述AST,获取所述操作指令语句中操作指令,以及所述操作指令访问所述数据库时基于的所述数据库中的数据对象;
AST是语句结构的图形表示,它代表了语句的推导结果,有利于理解语句语法结构的层次;采用AST可以更直观确定操作指令访问所述数据库时基于的所述数据库中的数据对象。
步骤140:根据所述操作指令、和/或基于的数据对象、和/或所述基于的数据对象对应的数据脱敏策略,按照预设操作规则,对所述数据访问请求信息在数据库中的访问结果进行数据脱敏操作;
这里,可以由所述数据脱敏服务器等数据脱敏服务中间件进行数据脱敏操作;所述预设操作规则可以根据不同操作指令进行设置;如操作指令为数据查询指令时,可以进行数据查询结果的数据脱敏;操作指令为对数据库中的表和/或表中的字段进行新增和修改等操作时,可以对数据脱敏策略进行新增和修改等操作。
进一步的,所述操作指令为数据查询指令时,采用所述数据查询指令的输出字段所基于的所述数据库中数据对象对应的数据脱敏策略,对所述数据查询指令的输出字段进行数据脱敏处理;将所述数据脱敏处理后的输出字段发送给所述数据请求端;
所述操作指令为对数据对象进行的新增和/或修改操作时,将所述操作指令基于的数据对象对应数据脱敏策略,作为所述操作指令进行操作结果的数据脱敏策略;
所述操作指令为对数据对象进行的删除操作时,删除所述数据对象对应的数据脱敏策略;
具体的,针对不同操作指令可以对数据脱敏策略进行的不同操作,如此可以覆盖查询,删除、修改、插入等语句,如图2所示;可以对数据查询指令应用数据脱敏策略进行数据脱敏处理;可以对插入语句insert into、insert overwrite、create语句采用数据脱敏策略继承处理;可以对删除表drop语句采用数据脱敏策略自动删除处理;可以对修改表名或者字段名的alter语句采用数据脱敏策略自动修改处理等;
这里,所述数据查询指令可以是SQL语句中的select指令等用于查询数据库中表内数据的指令。以select指令为例,按照预设操作规则,对所述数据访问请求信息在数据库中的访问结果进行数据脱敏操作的具体步骤如图3所示,包括:
步骤141:通过遍历AST获取SQL语句的内部结构,找到SQL语句最外层select语句每个输出字段最终来源于哪张表的哪个字段,并生成字段间的依赖关系;
步骤142:根据依赖关系,逐个获取最外层select查询输出字段所基于的表字段对应的数据脱敏策略;
步骤143:应用数据脱敏策略,根据依赖关系,逐个将获取的数据脱敏策略作为该输出字段的数据脱敏策略;
步骤144:逐条读取查询结果集,对每行数据进行解析,对其中的含有数据脱敏策略的字段调用对应的数据脱敏策略进行数据脱敏处理;
步骤145:对数据脱敏后的数据进行组装,缓存到本地或者其他存储系统中。
实际应用中,步骤144至步骤145可以多线程并发处理,每个线程分配一定范围的结果集进行数据脱敏处理;这里,所述结果集为SQL语句在数据库中进行查询得到的数据的集合。
所述数据对象的新增,可以是SQL语句中create table实现的表的新增等操作;也可以是SQL语句中insert into/overwrite table等语句中将数据库中原有数据添加到其他表中,使原有数据新增了所述数据对象等操作;所述数据对象的修改,可以是SQL语句中alter等实现的,表或字段的修改;所述数据对象的删除,可以是SQL语句中drop等实现的;
针对create table语句;首先,可以遍历AST,获取SQL语句的内部结构,找到新创建表及新创建表包含的每个字段所基于的数据库中已有表中的字段;然后,逐个获取新建表字段所基于的数据库中已有表中的字段的数据脱敏策略,如果新建表字段所基于的表对应字段设置了数据脱敏策略,则需要向数据脱敏策略表中插入一条该新建表字段的数据脱敏策略,新增的数据脱敏策略与所基于的数据库中已有表中的字段的数据脱敏策略一致;
通过这种方式,新建表字段可以自动继承数据脱敏策略,不破坏新建表原始数据内容,新创建表的数据在查询时根据继承的数据脱敏策略进行数据脱敏处理,从而全面保护数据安全;
针对插入语句,比如insert into/overwrite table语句;首先,可以遍历AST,获取SQL语句的内部结构,找到插入字段的各所基于的数据库中已有表中的字段;然后,逐个获取新建表字段所基于的数据库中已有表中的字段的数据脱敏策略,如果新建表字段所基于的表对应字段设置了数据脱敏策略,则需要调用向数据脱敏策略表中插入一条插入字段的数据脱敏策略,新增的数据脱敏策略与所基于的数据库中已有表中的字段的数据脱敏策略一致;
通过这种方式,新插入字段的表可以自动继承数据脱敏策略,不破坏插入表的原始数据内容,新插入表的数据在查询时根据继承的数据脱敏策略进行数据脱敏处理,全面保护数据安全;
针对drop语句;可以通过遍历AST获取SQL语句的内部结构,找到待删除的表,获取待删除表的数据脱敏策略,如果待删除表设置了数据脱敏策略,则删除与该表相关的所有数据脱敏策略;
针对alter等修改表名或者表的结构的语句;首先,通过遍历AST获取SQL语句的内部结构,找到修改的表名及修改的字段名;然后,获取修改表字段对应的数据脱敏策略,如果该表字段设置了数据脱敏策略,则同步修改与该表或者字段相关的所有数据脱敏策略;
如上,通过数据脱敏策略继承、数据脱敏策略删除、数据脱敏策略修改可以有效保证数据脱敏策略能自动更新及继承,无需人工添加、更新或者删除数据脱敏策略,避免了安全漏洞。
完成所述数据脱敏数据操作后,可以将数据脱敏后的查询结果或操作结果返回给数据访问请求端。
本发明实施例提供的信息处理装置,包括处理器、存储器及存储在存储器上并能够有所述处理器运行的可执行程序,所述处理器运行所述可执行程序时执行实现数据脱敏方法,如图1所示,所述方法包括:
步骤110:预设数据库中各数据对象分别对应的数据脱敏策略;
这里,可以在数据脱敏服务器等数据脱敏服务中间件中,设置各数据对象对应的数据脱敏策略;并在数据脱敏服务器内保留并执行所述数据脱敏策略;所述数据脱敏策略可以根据数据库中不同数据的不同数据敏感性设置;所述数据对象可以是用来定位数据库中数据的表、字段和记录等数据对象;
数据库中的数据通常采用表的形式存储,用记录号表示行,用字段名称表示列;可以对不同的表、表中的字段、以及记录分别设置数据脱敏策略;以数据表中的字段“电话号码”为例,可以对所述数据表中字段“电话号码”设置数据脱敏策略,可以设置为:隐含中间4位或隐含所有数位,即数据脱敏中间4位或数据脱敏所有数位;如此,当该字段的数据被读取并传送给用户端时,数据脱敏服务器可以根据该字段的数据脱敏策略进行数据脱敏处理。这里,所述数据库可以是通过SQL语句指令进行访问的数据库。
步骤120:接收数据请求端发送的数据访问请求信息,并向数据库转发所述数据访问请求信息;
这里,可以由数据脱敏服务器等数据脱敏服务中间件接收并转发所述数据访问请求信息;所述数据请求端可以是应用程序、用户和/或客户端等;所述数据请求端可以发送包含SQL语句指令的数据访问请求信息,并通过所述数据脱敏服务器转发,访问所述数据库;
数据脱敏服务器接收到所述数据请求端发送的所述数据访问请求信息后,不再对所述数据访问请求信息进行改写,直接将所述数据访问请求信息转发给数据库;如此,可以避免由于改写数据访问请求信息对数据访问请求信息的逻辑产生影响,从而影响对数据库进行访问。
步骤130:解析所述数据访问请求信息,获取所述数据访问请求信息中的操作指令和所述操作指令访问所述数据库时基于的数据对象;
这里,可以由所述数据脱敏服务器等数据脱敏服务中间件解析所述数据访问请求信息;数据脱敏服务器可以在接收到所述数据请求端发送的所述数据访问请求信息后,将所述数据访问请求信息缓存到数据脱敏服务器本地,再进行解析处理;解析出所述数据访问请求信息中的操作指令和所述操作指令访问所述数据库时基于的数据对象;
所述操作指令可以是所述数据访问请求信息中的SQL语句;可以通过现有的一些SQL语法分析软件或SQL语法分析方法进行所述数据访问请求信息中的SQL语句的语法分析,获取操作指令及基于的数据对象;
通常,SQL语句访问数据库时会进行建表、修改表、删除表、修改字段、查询数据等访问操作;如访问操作是对数据库中现有的数据对象的进行引用、管理、读取及修改等操作时,则将涉及的数据对象认为是基于的数据对象;如执行select语句指令查询表A中字段1的语句,则表A和字段1为select语句指令基于的数据对象;如在数据库中新建一个表B,表B中的字段2中的数据为表A中字段1中指定的数据,则表A和字段1为建表操作指令所基于的数据对象;在此不对各操作指令进行赘述。其中,所述基于的数字数据对象通常也称为依赖的数值数据对象;
进一步的,可以解析所述数据访问请求信息,获取所述数据访问请求信息中的操作指令语句;建立所述操作指令语句的AST;根据所述AST,获取所述操作指令语句中操作指令,以及所述操作指令访问所述数据库时基于的所述数据库中的数据对象;
AST是语句结构的图形表示,它代表了语句的推导结果,有利于理解语句语法结构的层次;采用AST可以更直观确定操作指令访问所述数据库时基于的所述数据库中的数据对象。
步骤140:根据所述操作指令、和/或基于的数据对象、和/或所述基于的数据对象对应的数据脱敏策略,按照预设操作规则,对所述数据访问请求信息在数据库中的访问结果进行数据脱敏操作;
这里,可以由所述数据脱敏服务器等数据脱敏服务中间件进行数据脱敏操作;所述预设操作规则可以根据不同操作指令进行设置;如操作指令为数据查询指令时,可以进行数据查询结果的数据脱敏;操作指令为对数据库中的表和/或表中的字段进行新增和修改等操作时,可以对数据脱敏策略进行新增和修改等操作。
进一步的,所述操作指令为数据查询指令时,采用所述数据查询指令的输出字段所基于的所述数据库中数据对象对应的数据脱敏策略,对所述数据查询指令的输出字段进行数据脱敏处理;将所述数据脱敏处理后的输出字段发送给所述数据请求端;
所述操作指令为对数据对象进行的新增和/或修改操作时,将所述操作指令基于的数据对象对应数据脱敏策略,作为所述操作指令进行操作结果的数据脱敏策略;
所述操作指令为对数据对象进行的删除操作时,删除所述数据对象对应的数据脱敏策略;
具体的,针对不同操作指令可以对数据脱敏策略进行的不同操作,如此可以覆盖查询,删除、修改、插入等语句,如图2所示;可以对数据查询指令应用数据脱敏策略进行数据脱敏处理;可以对插入语句insert into、insert overwrite、create语句采用数据脱敏策略继承处理;可以对删除表drop语句采用数据脱敏策略自动删除处理;可以对修改表名或者字段名的alter语句采用数据脱敏策略自动修改处理等;
这里,所述数据查询指令可以是SQL语句中的select指令等用于查询数据库中表内数据的指令。以select指令为例,按照预设操作规则,对所述数据访问请求信息在数据库中的访问结果进行数据脱敏操作的具体步骤如图3所示,包括:
步骤141:通过遍历AST获取SQL语句的内部结构,生成输出字段间的依赖关系;
步骤142:根据依赖关系,逐个获取最外层select查询输出字段所基于的数据对象对应的数据脱敏策略;
步骤143:应用数据脱敏策略,根据依赖关系,逐个将获取的数据脱敏策略作为该输出字段的数据脱敏策略;
步骤144:逐条读取查询结果集,对每行数据进行解析,对其中的含有数据脱敏策略的字段调用对应的数据脱敏策略进行数据脱敏处理;
步骤145:对数据脱敏后的数据进行组装,缓存到本地或者其他存储系统中。
实际应用中,步骤144至步骤145可以多线程并发处理,每个线程分配一定范围的结果集进行数据脱敏处理;这里,所述结果集为SQL语句在数据库中进行查询得到的数据的集合。
所述数据对象的新增,可以是SQL语句中create table实现的表的新增等操作;也可以是SQL语句中insert into/overwrite table等语句中将数据库中原有数据添加到其他表中,使原有数据新增了所述数据对象等操作;所述数据对象的修改,可以是SQL语句中alter等实现的,表或字段的修改;所述数据对象的删除,可以是SQL语句中drop等实现的;
针对create table语句;首先,可以遍历AST,获取SQL语句的内部结构,找到新创建表及新创建表包含的每个字段所基于的数据库中已有表中的字段;然后,逐个获取新建表字段所基于的数据库中已有表中的字段的数据脱敏策略,如果新建表字段所基于的表对应字段设置了数据脱敏策略,则需要向数据脱敏策略表中插入一条该新建表字段的数据脱敏策略,新增的数据脱敏策略与所基于的数据库中已有表中的字段的数据脱敏策略一致;
通过这种方式,新建表字段可以自动继承数据脱敏策略,不破坏新建表原始数据内容,新创建表的数据在查询时根据继承的数据脱敏策略进行数据脱敏处理,从而全面保护数据安全;
针对插入语句,比如insert into/overwrite table语句;首先,可以遍历AST,获取SQL语句的内部结构,找到插入字段的各所基于的数据库中已有表中的字段;然后,逐个获取新建表字段所基于的数据库中已有表中的字段的数据脱敏策略,如果新建表字段所基于的表对应字段设置了数据脱敏策略,则需要调用向数据脱敏策略表中插入一条插入字段的数据脱敏策略,新增的数据脱敏策略与所基于的数据库中已有表中的字段的数据脱敏策略一致;
通过这种方式,新插入字段的表可以自动继承数据脱敏策略,不破坏插入表的原始数据内容,新插入表的数据在查询时根据继承的数据脱敏策略进行数据脱敏处理,全面保护数据安全;
针对drop语句;可以通过遍历AST获取SQL语句的内部结构,找到待删除的表,获取待删除表的数据脱敏策略,如果待删除表设置了数据脱敏策略,则删除与该表相关的所有数据脱敏策略;
针对alter等修改表名或者表的结构的语句;首先,通过遍历AST获取SQL语句的内部结构,找到修改的表名及修改的字段名;然后,获取修改表字段对应的数据脱敏策略,如果该表字段设置了数据脱敏策略,则同步修改与该表或者字段相关的所有数据脱敏策略;
如上,通过数据脱敏策略继承、数据脱敏策略删除、数据脱敏策略修改可以有效保证数据脱敏策略能自动更新及继承,无需人工添加、更新或者删除数据脱敏策略,避免了安全漏洞。
完成所述数据脱敏数据操作后,可以将数据脱敏后的查询结果或操作结果返回给数据访问请求端。
以上所述,仅为本发明的最佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种数据脱敏方法,其特征在于,预设数据库中各数据对象分别对应的数据脱敏策略;所述方法还包括:
接收数据请求端发送的数据访问请求信息,并向数据库转发所述数据访问请求信息;
解析所述数据访问请求信息,获取所述数据访问请求信息中的操作指令和所述操作指令访问所述数据库时基于的数据对象;
根据所述操作指令、和/或基于的数据对象、和/或所述基于的数据对象对应的数据脱敏策略,按照预设操作规则,对所述数据访问请求信息在数据库中的访问结果进行数据脱敏操作;
其中,所述按照预设操作规则,对所述数据访问请求信息在数据库中的访问结果进行数据脱敏操作,包括:
所述操作指令为数据查询指令时,采用所述数据查询指令的输出字段所基于的所述数据库中数据对象对应的数据脱敏策略,对所述数据查询指令的输出字段进行数据脱敏处理,将所述数据脱敏处理后的输出字段发送给所述数据请求端;
所述操作指令为对数据对象进行的新增和/或修改操作时,将所述操作指令基于的数据对象对应数据脱敏策略,作为所述操作指令进行操作结果的数据脱敏策略;
所述操作指令为对数据对象进行的删除操作时,删除所述数据对象对应的数据脱敏策略;
其中,所述数据查询指令为SQL语句中的select指令时,所述采用所述数据查询指令的输出字段所基于的所述数据库中数据对象对应的数据脱敏策略,对所述数据查询指令的输出字段进行数据脱敏处理,包括:
通过遍历抽象语法树AST获取所述SQL语句的内部结构,生成输出字段间的依赖关系;
根据所述依赖关系,逐个获取最外层select查询输出字段所基于的数据对象对应的数据脱敏策略;
应用数据脱敏策略,根据依赖关系,逐个将获取的数据脱敏策略作为相应输出字段的数据脱敏策略;
逐条读取查询结果集,对每行数据进行解析,对其中的含有数据脱敏策略的字段调用对应的数据脱敏策略进行数据脱敏处理;
对数据脱敏后的数据进行组装,缓存到本地或者其他存储系统中;
其中,所述对数据对象进行的新增操作为SQL语句中的create table指令时,所述将所述操作指令基于的数据对象对应数据脱敏策略,作为所述操作指令进行操作结果的数据脱敏策略,对所述数据访问请求信息在数据库中的访问结果进行数据脱敏操作,包括:
通过遍历抽象语法树AST获取所述SQL语句的内部结构,找到新建表及所述新建表包含的每个字段所基于的数据库中已有表中的字段;
逐个获取所述新建表的字段所基于的数据库中已有表中的字段的数据脱敏策略,如果所述新建表的字段所基于的表对应字段设置了数据脱敏策略,则向数据脱敏策略表中插入一条所述新建表的字段的数据脱敏策略,新增的所述数据脱敏策略与所基于的数据库中已有表中的字段的数据脱敏策略一致;
所述解析所述数据访问请求信息,获取所述数据访问请求信息中的操作指令和所述操作指令访问所述数据库时基于的数据对象,包括:
解析所述数据访问请求信息,获取所述数据访问请求信息中的操作指令语句;
建立所述操作指令语句的抽象语法树;
根据所述抽象语法树,获取所述操作指令语句中操作指令,以及所述操作指令访问所述数据库时基于的所述数据库中的数据对象。
2.根据权利要求1所述的方法,其特征在于,所述数据对象包括:表和/或所述表中的字段。
3.一种数据脱敏装置,其特征在于,所述装置包括:设置模块、转发模块、解析模块和数据脱敏模块;其中,
所述设置模块,用于预设数据库中各数据对象分别对应的数据脱敏策略;
所述转发模块,用于接收数据请求端发送的数据访问请求信息,并向数据库转发所述数据访问请求信息;
所述解析模块,用于解析所述数据访问请求信息,获取所述数据访问请求信息中的操作指令和所述操作指令访问所述数据库时基于的数据对象;
所述数据脱敏模块,用于根据所述操作指令、和/或基于的数据对象、和/或所述基于的数据对象对应的数据脱敏策略,按照预设操作规则,对所述数据访问请求信息在数据库中的访问结果进行数据脱敏操作;
所述操作指令为数据查询指令时,采用所述数据查询指令的输出字段所基于的所述数据库中数据对象对应的数据脱敏策略,对所述数据查询指令的输出字段进行数据脱敏处理,将所述数据脱敏处理后的输出字段发送给所述数据请求端;
所述操作指令为对数据对象进行的新增和/或修改操作时,将所述操作指令基于的数据对象对应数据脱敏策略,作为所述操作指令进行操作结果的数据脱敏策略;
所述操作指令为对数据对象进行的删除操作时,删除所述数据对象对应的数据脱敏策略;
所述数据查询指令为SQL语句中的select指令时,通过遍历抽象语法树AST获取所述SQL语句的内部结构,生成输出字段间的依赖关系;
根据依赖关系,逐个获取最外层select查询输出字段所基于的数据对象对应的数据脱敏策略;
应用数据脱敏策略,根据依赖关系,逐个将获取的数据脱敏策略作为相应输出字段的数据脱敏策略;
逐条读取查询结果集,对每行数据进行解析,对其中的含有数据脱敏策略的字段调用对应的数据脱敏策略进行数据脱敏处理;
对数据脱敏后的数据进行组装,缓存到本地或者其他存储系统中;
所述对数据对象进行的新增操作为SQL语句中的create table指令时,所述将所述操作指令基于的数据对象对应数据脱敏策略,作为所述操作指令进行操作结果的数据脱敏策略,对所述数据访问请求信息在数据库中的访问结果进行数据脱敏操作,包括:
通过遍历抽象语法树AST获取所述SQL语句的内部结构,找到新建表及所述新建表包含的每个字段所基于的数据库中已有表中的字段;
逐个获取所述新建表的字段所基于的数据库中已有表中的字段的数据脱敏策略,如果所述新建表的字段所基于的表对应字段设置了数据脱敏策略,则向数据脱敏策略表中插入一条所述新建表的字段的数据脱敏策略,新增的所述数据脱敏策略与所基于的数据库中已有表中的字段的数据脱敏策略一致;
解析所述数据访问请求信息,获取所述数据访问请求信息中的操作指令语句;
建立所述操作指令语句的抽象语法树;
根据所述抽象语法树,获取所述操作指令语句中操作指令,以及所述操作指令访问所述数据库时基于的所述数据库中的数据对象。
4.根据权利要求3所述的装置,其特征在于,所述数据对象包括:表和/或所述表中的字段。
5.一种存储介质,其上存储由可执行程序,其特征在于,所述可执行程序被处理器执行时实现如权利要求1至2任一项所述数据脱敏方法的步骤。
6.一种信息处理装置,包括处理器、存储器及存储在存储器上并能够有所述处理器运行的可执行程序,其特征在于,所述处理器运行所述可执行程序时执行如权利要求1至2任一项所述数据脱敏方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810157605.XA CN110196861B (zh) | 2018-02-24 | 2018-02-24 | 一种数据脱敏方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810157605.XA CN110196861B (zh) | 2018-02-24 | 2018-02-24 | 一种数据脱敏方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110196861A CN110196861A (zh) | 2019-09-03 |
CN110196861B true CN110196861B (zh) | 2023-12-29 |
Family
ID=67744077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810157605.XA Active CN110196861B (zh) | 2018-02-24 | 2018-02-24 | 一种数据脱敏方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110196861B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110598451B (zh) * | 2019-09-19 | 2022-02-25 | 中国银行股份有限公司 | 数据脱敏方法及装置 |
CN110889134B (zh) * | 2019-11-11 | 2024-01-23 | 北京中电飞华通信股份有限公司 | 一种数据脱敏方法、装置与电子设备 |
CN111199054B (zh) * | 2019-12-20 | 2023-09-19 | 深圳昂楷科技有限公司 | 一种数据脱敏方法、装置及数据脱敏设备 |
CN111310232A (zh) * | 2020-03-17 | 2020-06-19 | 杭州数梦工场科技有限公司 | 数据脱敏方法及装置、电子设备、存储介质 |
CN111552861A (zh) * | 2020-04-28 | 2020-08-18 | 全球能源互联网研究院有限公司 | 一种网页动态脱敏方法 |
CN112052478A (zh) * | 2020-09-01 | 2020-12-08 | 上海观安信息技术股份有限公司 | 一种多表子集抽取脱敏方法 |
CN112417476A (zh) * | 2020-11-24 | 2021-02-26 | 广州华熙汇控小额贷款有限公司 | 敏感数据的脱敏方法及数据脱敏系统 |
CN112528327B (zh) * | 2020-12-08 | 2024-08-02 | 杭州数梦工场科技有限公司 | 数据脱敏方法及装置、数据还原方法及装置 |
CN112528339A (zh) * | 2020-12-25 | 2021-03-19 | 深圳昂楷科技有限公司 | 一种基于Caché数据库的数据脱敏方法及电子设备 |
CN112632104A (zh) * | 2020-12-28 | 2021-04-09 | 深圳昂楷科技有限公司 | 一种针对存储过程和函数的动态脱敏方法和装置 |
CN113434641B (zh) * | 2021-07-26 | 2022-10-11 | 广州四三九九信息科技有限公司 | 一种多线程屏蔽字查询替换方法 |
CN113535754B (zh) * | 2021-07-27 | 2024-07-02 | 杭州海康威视数字技术股份有限公司 | 一种数据访问方法、装置及系统 |
CN113761573A (zh) * | 2021-08-30 | 2021-12-07 | 国网江苏省电力有限公司信息通信分公司 | 一种智能敏感数据动态脱敏管理系统及其使用方法 |
CN116611093B (zh) * | 2023-06-13 | 2024-03-08 | 瀚高基础软件(济南)有限公司 | 一种数据库资源的使用授权方法及设备 |
CN116662373A (zh) * | 2023-07-27 | 2023-08-29 | 天津神舟通用数据技术有限公司 | 一种数据访问控制方法、装置、设备及介质 |
CN118504036A (zh) * | 2024-07-16 | 2024-08-16 | 佛山电器照明股份有限公司 | 企业数据脱敏管控方法、装置、设备及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106203170A (zh) * | 2016-07-19 | 2016-12-07 | 北京同余科技有限公司 | 基于角色的数据库动态脱敏服务方法和系统 |
CN106548085A (zh) * | 2015-09-17 | 2017-03-29 | 中国移动通信集团甘肃有限公司 | 一种数据的处理方法及装置 |
CN106778288A (zh) * | 2015-11-24 | 2017-05-31 | 阿里巴巴集团控股有限公司 | 一种数据脱敏的方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7797341B2 (en) * | 2007-04-30 | 2010-09-14 | Hewlett-Packard Development Company, L.P. | Desensitizing database information |
-
2018
- 2018-02-24 CN CN201810157605.XA patent/CN110196861B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106548085A (zh) * | 2015-09-17 | 2017-03-29 | 中国移动通信集团甘肃有限公司 | 一种数据的处理方法及装置 |
CN106778288A (zh) * | 2015-11-24 | 2017-05-31 | 阿里巴巴集团控股有限公司 | 一种数据脱敏的方法及系统 |
CN106203170A (zh) * | 2016-07-19 | 2016-12-07 | 北京同余科技有限公司 | 基于角色的数据库动态脱敏服务方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110196861A (zh) | 2019-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110196861B (zh) | 一种数据脱敏方法和装置 | |
US20230306135A1 (en) | Masking sensitive information in records of filtered accesses to unstructured data | |
US8495701B2 (en) | Indexing of security policies | |
US9594778B1 (en) | Dynamic content systems and methods | |
US20220100852A1 (en) | Distributed security introspection | |
US6453321B1 (en) | Structured cache for persistent objects | |
US6321219B1 (en) | Dynamic symbolic links for computer file systems | |
US9231974B2 (en) | Dynamic policy-based entitlements from external data repositories | |
US8432570B1 (en) | Using bit arrays in incremental scanning of content for sensitive data | |
CN115428403B (zh) | 在客户端侧逻辑上实现客户端侧策略 | |
US7698479B2 (en) | User interface to a data storage system and rule store | |
US11663322B2 (en) | Distributed security introspection | |
US7680822B1 (en) | Method and system for automatically creating and updating access controls lists | |
CN111586201A (zh) | 域名解析系统、方法、设备及存储介质 | |
CN111813803B (zh) | 语句块执行计划的生成方法、装置、设备和存储介质 | |
CN111796855B (zh) | 一种增量版本更新方法、装置、存储介质及计算机设备 | |
US7660818B2 (en) | Method and apparatus for querying program design models | |
CN113254470B (zh) | 一种数据更改方法、装置、计算机设备及存储介质 | |
US20170364555A1 (en) | Method and system for enforcing user policy on database records | |
US10719424B1 (en) | Compositional string analysis | |
US11568060B2 (en) | Modular taint analysis with access paths | |
US11379432B2 (en) | File management using a temporal database architecture | |
US11494346B2 (en) | Composite file system commands | |
US20140149463A1 (en) | Method, apparatus, system and computer program product for managing data in database | |
US9069751B1 (en) | Systems and methods for managing document pedigrees |
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 |