CN116502273B - 基于数据血缘的动态数据脱敏方法、装置和设备 - Google Patents
基于数据血缘的动态数据脱敏方法、装置和设备 Download PDFInfo
- Publication number
- CN116502273B CN116502273B CN202310744128.8A CN202310744128A CN116502273B CN 116502273 B CN116502273 B CN 116502273B CN 202310744128 A CN202310744128 A CN 202310744128A CN 116502273 B CN116502273 B CN 116502273B
- Authority
- CN
- China
- Prior art keywords
- field
- desensitization
- data
- query
- result
- 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 151
- 239000008280 blood Substances 0.000 title claims abstract description 49
- 210000004369 blood Anatomy 0.000 title claims abstract description 49
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000012545 processing Methods 0.000 claims abstract description 47
- 238000013507 mapping Methods 0.000 claims abstract description 43
- 238000004458 analytical method Methods 0.000 claims abstract description 17
- 230000006870 function Effects 0.000 claims description 30
- 230000008571 general function Effects 0.000 claims description 8
- 230000008569 process Effects 0.000 claims description 6
- 230000002776 aggregation Effects 0.000 claims description 3
- 238000004220 aggregation Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 235000021018 plums Nutrition 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 208000007536 Thrombosis Diseases 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000008279 sol Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- 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
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/288—Entity relationship models
-
- 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/6227—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 where protection concerns the structure of data, e.g. records, types, queries
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Medical Informatics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的实施例提供了基于数据血缘的动态数据脱敏方法、装置和设备。所述方法包括获取数据库查询请求中的第一查询语句;对第一查询语句进行数据血缘解析,获取字段映射关系;获取数据库查询请求的数据脱敏参数和当前用户权限信息,判断数据库查询操作是否需要数据脱敏处理;对于需要数据脱敏处理的数据库查询操作,根据字段映射关系对结果字段进行脱敏标记,生成第二查询语句;执行第二查询语句,并拦截对应的数据库查询结果,根据结果字段上的脱敏标记对数据库查询结果进行脱敏处理。以此方式,可以在保持数据可计算性和脱敏方案灵活性的同时,有效地克服已有方案中存在的脱敏漏洞,降低隐私数据泄露的风险。
Description
技术领域
本发明涉及数据数据处理技术领域,并且更具体地,涉及基于数据血缘的动态数据脱敏方法、装置和设备。
背景技术
随着数据安全越来越受到重视,数据脱敏技术已经成为了应用系统中必不可少的功能。将用户查询结果中的敏感字段,如身份证号码、手机号码等利用脱敏规则进行转换后再返回给用户,典型地可以将中间几位替换为“*”显示,这样既避免了隐私数据的泄露,又不会影响数据的可计算性。
当前普遍采用的动态数据脱敏的方案大多可以分为如下两种:
1.应用于接口的数据脱敏:每个查询接口返回的数据传输对象DTO(DataTransfer Object的缩写)是固定格式的,可以将DTO中的敏感字段进行标记。接口返回结果统一拦截DTO,对标记字段的数据调用脱敏方法进行脱敏。这种方式可以保证所有被标记的隐私数据字段都进行脱敏,但是代码侵入性非常大,需要对每一个接口都进行改造,而且每新增一个接口都需要进行标记,不灵活。
2.应用于SQL查询结果的数据脱敏:该方案直接对数据库中的原始数据字段进行敏感标记,在SQL查询结束后,分析执行的SQL语句,利用血缘解析或者其他手段分析结果字段与原始字段的对应关系,将原始字段上设置的脱敏规则应用于结果字段。这种方案在原始数据字段上进行标记,可以避免对接口的改造,只需要增加SQL查询结果拦截器以及拦截器的处理逻辑即可,非常灵活。但是具有一定的限制,即查询的结果字段必须与原始字段是一对一映射关系,如果是一对多关系,典型的如CONCAT字符串拼接函数,由于无法获取到函数参数字段的查询结果,所以不能做到有效脱敏。用户可以通过使用多参数函数绕过设置的脱敏规则,造成敏感或隐私数据的泄露。
发明内容
根据本发明的实施例,提供了一种基于数据血缘的动态数据脱敏方案。本方案在保持了数据可计算性和脱敏方案灵活性的同时,有效地克服了已有方案中存在的脱敏漏洞,降低了隐私数据泄露的风险。
在本发明的第一方面,提供了一种基于数据血缘的动态数据脱敏方法。该方法包括:
拦截待执行的数据库查询请求,获取所述数据库查询请求中的第一查询语句;
对所述第一查询语句进行数据血缘解析,获取所述第一查询语句的字段映射关系;
获取所述数据库查询请求的数据脱敏参数和当前用户权限信息,判断所述数据库查询请求对应的数据库查询操作是否需要数据脱敏处理;
对于需要数据脱敏处理的数据库查询操作,根据所述字段映射关系对结果字段进行脱敏标记,生成第二查询语句;
执行所述第二查询语句,并拦截对应的数据库查询结果,根据结果字段上的脱敏标记对所述数据库查询结果进行脱敏处理。
进一步地,所述数据血缘解析,包括:
通过分析所述第一查询语句的字段,获得原始表字段与结果字段之间的映射关系以及字段的血缘关系类型。
进一步地,所述判断所述数据库查询请求对应的数据库查询操作是否需要数据脱敏处理,包括:
第一判断:根据所述当前用户权限信息判断当前用户是否有查看数据表的权限,若是,则执行第二判断;否则返回权限错误;
第二判断:根据所述当前用户权限信息判断当前用户是否有查看数据表中原始数据的权限,若是,则执行第三判断;否则,数据库查询操作需要数据脱敏处理;
第三判断:判断所述数据脱敏参数的状态,若所述数据脱敏参数为是,则数据库查询操作需要数据脱敏处理;若所述数据脱敏参数为否,则数据库查询操作不需要数据脱敏处理。
进一步地,所述根据所述字段映射关系对结果字段进行脱敏标记,包括:
对于存在脱敏规则的原始表字段:若字段的血缘关系类型是聚合表达式,则不对所述原始表字段关联的结果字段进行脱敏标记;若字段的血缘关系类型是直接查询字段或者一般函数表达式,则对所述原始表字段关联的结果字段进行脱敏标记。
进一步地,所述根据所述字段映射关系对结果字段进行脱敏标记,还包括:
对于存在脱敏规则的原始表字段:若存在多个原始字段合成的结果字段,则将缺失的原始表字段作为新增查询字段,改写所述第一查询语句。
进一步地,若所述第一查询语句存在子查询,则通过数据血缘的解析获得原始表字段在各级子查询过程中的字段映射关系,根据所述原始表字段在各级子查询中的字段映射关系,逐级改写子查询语句。
进一步地,若所述数据库查询结果中存在血缘关系类型是多参数函数表达式的结果字段,则所述结果字段为多个原始表字段合成的结果字段;将所述多参数函数表达式中所有标记脱敏的参数字段的查询结果进行脱敏;用脱敏后的查询结果替换所述结果字段的查询结果,生成所述结果字段脱敏后的查询结果。
进一步地,若所述数据库查询结果中存在新增查询字段,则将所述新增查询字段从所述数据库查询结果中去除。
在本发明的第二方面,提供了一种基于数据血缘的动态数据脱敏装置。该装置包括:
获取模块,用于拦截待执行的数据库查询请求,获取所述数据库查询请求中的第一查询语句;
解析模块,用于对所述第一查询语句进行数据血缘的解析,获取所述第一查询语句的字段映射关系;
判断模块,用于获取所述数据库查询请求的数据脱敏参数和当前用户权限信息,判断所述数据库查询请求对应的数据库查询操作是否需要数据脱敏处理;
脱敏标记模块,用于对于需要数据脱敏处理的数据库查询操作,根据所述字段映射关系对结果字段进行脱敏标记,生成第二查询语句;
脱敏处理模块,用于执行所述第二查询语句,并拦截对应的数据库查询结果,根据结果字段上的脱敏标记对所述数据库查询结果进行脱敏处理。
在本发明的第三方面,提供了一种电子设备。该电子设备至少一个处理器;以及与所述至少一个处理器通信连接的存储器;所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明第一方面的方法。
应当理解,发明内容部分中所描述的内容并非旨在限定本发明的实施例的关键或重要特征,亦非用于限制本发明的范围。本发明的其它特征将通过以下的描述变得容易理解。
附图说明
结合附图并参考以下详细说明,本发明各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了根据本发明的实施例的基于数据血缘的动态数据脱敏方法的流程图;
图2示出了根据本发明的实施例的基于数据血缘的动态数据脱敏装置的方框图;
图3示出了能够实施本发明的实施例的示例性电子设备的方框图;
其中,300为电子设备、301为计算单元、302为ROM、303为RAM、304为总线、305为I/O接口、306为输入单元、307为输出单元、308为存储单元、309为通信单元。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本发明保护的范围。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
图1示出了本发明实施例的基于数据血缘的动态数据脱敏方法的流程图。
该方法包括:
S101、拦截待执行的数据库查询请求,获取所述数据库查询请求中的第一查询语句。
在本实施例中,所述待执行的数据库查询请求用于触发数据库查询操作,即SOL响应于所述数据库查询请求执行数据库查询操作,数据库查询请求的发送主体可以是所有用户。
在本实施例中,通过设置SQL执行拦截器对所述待执行的数据库查询请求进行拦截。SQL执行拦截器通过配置MyBatis内置的拦截器,拦截Executor的query方法实现。MyBatis是一种Java程序开发中非常常用的持久层框架,其提供的拦截器可以实现在不入侵原有业务代码的同时增强SQL执行过程中的各项功能。对于其他持久层框架,如SpringData JPA,本方案的思路仍然适用。其逻辑亦可以不在持久层框架中实现,如可以直接对JDBC(Java Database Connectivity)进行修改来实现本发明的数据脱敏方案。
在本实施例中,所述第一查询语句,即通过解析拦截器拦截的Executor的query方法参数,获取到的用户查询的SQL语句。
S102、对所述第一查询语句进行数据血缘的解析,获取所述第一查询语句的字段映射关系。
在本实施例中,通过SQL解析器将查询语句解析为抽象语法树,然后进行数据血缘解析。
在本实施例中,所述数据血缘解析,包括:
通过分析所述第一查询语句的字段,获得原始表字段与结果字段之间的映射关系以及字段的血缘关系类型。
作为本发明的一种实施例,所述数据血缘解析通过分析抽象语法树中的字段及字段的原子性操作,子查询,多表关联,集合操作等,获得查询的数据表列表,原始表字段列表,字段的函数表达式,字段在不同子查询范围内的映射关系以及与结果字段的映射关系。字段的映射关系是指字段名称的映射以及字段血缘关系类型。将数据血缘解析后的信息存储在拦截器上下文中。
在上述实施例中,原始表字段指数据库中的数据表字段。结果字段指用户查询后生成的结果集里的字段。例如,用户的查询语句为:“SELECT t2.name AS userName, TRIM(t2.id_card) AS userIdCard, t2.desc_info AS userDesc, t1.last_login ASuserLastLogin FROM t_login AS t1 JOIN ( SELECT id, name, id_card, CONCAT(name, ":", phone ) AS desc_info FROM t_user ) AS t2 ON t1.user_id = t2.id”,其中,原始表为t_login和t_user;原始表字段为t_login.user_id, t_login.last_login,t_user.id, t_user.name, t_user.id_card, t_user.phone,标记脱敏的原始字段为t_user.name, t_user.id_card, t_user.phone;结果字段为userName, userIdCard,userDesc, userLastLogin。
在血缘解析后,获取的结果列表和映射关系如表1所示:
结果字段 | 原始表字段 | 血缘关系类型 | 映射关系 |
userName | t_user.name | 直接查询 | userName<-t2.name<-[子查询]t_user.name |
userIdCard | t_user.id_card | 一般函数表达式 | userIdCard<-t2.id_card<-[子查询]t_user.id_card |
userDesc | t_user.namet_user.phone | 多参数函数表达式 | userDesc<-t2.desc_info<-[子查询]t_user.name, t_user.phone |
userLastLogin | t_login.last_login | 直接查询 | userIdCard<-t_login.last_login |
表1
其中,结果字段userName来源于原始表t_user的字段name,userLastLogin来源于原始表t_login的字段last_login,血缘关系类型为直接查询。结果字段userIdCard来源于原始表t_user的字段id_card,血缘关系类型为一般函数表达式,即TRIM(t2.id_card)。结果字段userDesc来源于原始表t_user的字段name,phone,血缘关系类型为多参数函数表达式,即CONCAT( name, ":", phone ),该函数的参数字段是name,phone。此时的结果字段与原始表字段之间的映射关系就是一对多的关系,即结果字段为多个原始表字段合成的结果字段。
在一些实施例中,若结果字段和原始表字段没有关系,则不会通过数据血缘解析识别出来,例如查询语句SELECT DATE() as r1, COUNT(1) as r2 FROM t_test中的结果字段r1,r2并没有对应的原始表字段,血缘解析的结果中不会包含这两个字段。
S103、获取所述数据库查询请求的数据脱敏参数和当前用户权限信息,判断所述数据库查询请求对应的数据库查询操作是否需要数据脱敏处理。
在本实施例中,所述判断所述数据库查询请求对应的数据库查询操作是否需要数据脱敏处理,包括:
根据所述当前用户权限信息判断当前用户是否有查看数据表的权限,若是,则根据所述当前用户权限信息判断当前用户是否有查看数据表中原始数据的权限;否则返回权限错误。若当前用户有查看数据表中原始数据的权限,则判断所述数据脱敏参数的状态;否则,数据库查询操作需要数据脱敏处理。若所述数据脱敏参数为是,则数据库查询操作需要数据脱敏处理;若所述数据脱敏参数为否,则数据库查询操作不需要数据脱敏处理。
在本实施例中,所述数据脱敏参数是指调用查询接口时,指定是否需要数据脱敏的参数,数据脱敏参数有“是”和“否”两种状态。当前用户权限信息是指用户是否可以查看数据表以及查看表中原始数据的权限。如果用户没有查看数据表的权限,那么直接返回权限错误。否则只有当用户拥有查看数据表中原始数据的权限,并且查询中的数据脱敏参数为否时,才不需要进行数据脱敏,否则都需要进行数据脱敏。
通过上述过程,能够保证对于没有查看权限的表,用户无法获取到查询结果;对于没有查看原始数据权限的表,用户只能获取到脱敏后的查询结果,保护了隐私安全。对于有查看原始数据权限的用户,只需要在查询时设置数据脱敏参数就可以切换查询结果的类型,满足查看脱敏结果和原始结果两种应用场景,具体很好的灵活性。
S104、对于需要数据脱敏处理的数据库查询操作,根据所述字段映射关系对结果字段进行脱敏标记,生成第二查询语句。
在本实施例中,获取原始表字段脱敏标记,即用户针对原始数据表的敏感字段设定的脱敏标记,包括是否需要脱敏以及对应的脱敏规则。通过分析数据血缘解析出来的原始表字段和结果字段的映射关系,将有脱敏标记的原始数据字段对应的结果字段按照如下规则进行标记,并将标记存储在拦截器上下文中。
在本实施例中,所述根据所述字段映射关系对结果字段进行脱敏标记。
具体地,如果结果字段对应的原始表字段存在脱敏标记,则根据原始表字段和结果字段映射关系中的血缘关系类型做不同的处理操作。包括下述三种情况:
若映射关系中的血缘关系类型是聚合表达式,则不对所述原始表字段关联的结果字段进行脱敏标记;即在此种情况下,即使原始表字段有标记规则也不会标记对应的结果字段。
若映射关系中的血缘关系类型是直接查询字段或者一般函数表达式,则对该结果字段进行脱敏标记,将其对应的原始数据字段的脱敏规则指定给该结果字段。所述标记是指指定该结果字段需要进行脱敏,脱敏规则为原始表字段的脱敏规则,并记录血缘关系类型。所述一般函数表达式是指只有一个字段参数,且应用后不改变原始表字段类型和特征的函数表达式,例如在上述结果中,userIdCard对应的原始表字段为t_user.id_card,一般函数表达式为TRIM(t2.id_card),没有改变字段id_card的类型和特征。
若映射关系中的血缘关系类型是多参数函数表达式,则对该结果字段进行脱敏标记,记录血缘关系类型,并判断所述多参数函数表达式中所有标记脱敏的参数字段是否都以直接查询字段的形式存在于所述第一查询语句中;
若所述多参数函数表达式中所有标记脱敏的参数字段都以直接查询字段的形式存在于所述第一查询语句中,则不改写查询语句;若所述多参数函数表达式中存在以非直接查询字段的形式存在于所述第一查询语句中的标记脱敏的参数字段,则将第一查询语句中缺失的标记脱敏的参数字段以直接查询字段的形式添加到所述第一查询语句的查询列中,并标记为新增查询字段。
例如,在上述结果中,结果字段userDesc来源于原始数据表t_user的两个字段name和phone,血缘关系类型为多参数函数表达式,即CONCAT( name, ":", phone ) 。所述多参数函数表达式中存在以非直接查询字段的形式存在于所述第一查询语句中的标记脱敏的参数字段,即phone,故将原始SQL改写为:SELECT t2.name AS userName, TRIM(t2.id_card) AS userIdCard, t2.desc_info AS userDesc, t1.last_login ASuserLastLogin, t2.phone FROM t_login AS t1 JOIN ( SELECT id, name, id_card,CONCAT( name, ":", phone ) AS desc_info, phone FROM t_user ) AS t2 ONt1.user_id = t2.id。并标记phone是新增查询字段。
通过新增查询字段改写查询SQL的方式,可以有效地为血缘关系类型是多参数函数表达式的结果字段补充脱敏时必要的信息。
作为本发明的一种实施例,若所述第一查询语句存在子查询,则通过数据血缘的解析获得原始表字段在各级子查询过程中的字段映射关系,根据所述原始表字段在各级子查询中的字段映射关系,逐级改写子查询语句。例如,在上述结果中,结果字段userDesc来源于原始数据表t_user的两个字段name和phone,并且存在于子查询SELECT id, name,id_card, CONCAT( name, ":", phone ) AS desc_info FROM t_user中。因此在改写查询语句时,除了在最外层的查询条件中,补充新增查询字段phone外,也需要在子查询语句中补充这一信息,将子查询语句改写为 SELECT id, name, id_card, CONCAT( name, ":",phone ) AS desc_info, phone FROM t_user。
通过在数据血缘解析时获取原始表字段在各级子查询过程中的字段映射关系并在改写查询语句时逐级更改查询子语句,能够通过最小的SQL修改保证二级查询语句的正确性。
S105、执行所述第二查询语句,并拦截对应的数据库查询结果,根据结果字段上的脱敏标记对所述数据库查询结果进行脱敏处理。
在本实施例中,配置MyBatis内置的拦截器,通过拦截ResultSetHandler的handleResultSets方法对数据库查询结果进行拦截。
在本实施例中,所述根据结果字段上的脱敏标记对所述数据库查询结果进行脱敏处理,包括对直接查询字段或者一般函数表达式的结果字段以及对血缘关系类型是多参数函数表达式的结果字段的脱敏处理。
若所述数据库查询结果为直接查询字段或者一般函数表达式的结果字段,则根据结果字段中脱敏标记的脱敏规则进行脱敏处理。
若所述数据库查询结果中存在血缘关系类型是多参数函数表达式的结果字段,即所述结果字段为多个原始表字段合成的结果字段;则将所述多参数函数表达式中所有标记脱敏的参数字段的查询结果进行脱敏;用脱敏后的查询结果替换所述结果字段的查询结果,生成所述结果字段脱敏后的查询结果。
例如,上述改写后的二级查询语句的查询结果如下表2所示:
userName | userIdCard | userDesc | userLastLogin | phone |
李明 | 142322140001011111 | 李明:13213331111 | 2023-05-03 11:39:56 | 13213331111 |
表2
对于结果字段userLastLogin,由于其对应的原始表字段没有脱敏标记,所以不做处理。对于结果字段userName、userIdCard可以直接应用脱敏规则转换如表3所示:
userName | userIdCard |
李** | 142322****1111 |
表3
对于结果字段userDesc,其血缘关系类型是多参数函数表达式的结果字段,该多参数函数表达式中所有标记脱敏的参数字段为name,phone,其中name对应的结果字段是userName,phone对应的结果字段是新增查询字段phone,需要先将这两个结果字段中的数据进行脱敏,由于userName在上一步已经进行了脱敏处理,所以可以直接使用上一步的脱敏结果。如表4所示:
userName | phone |
李** | 132****1111 |
表4
使用所述参数字段脱敏后的查询结果“李*”,“132****1111”替换该所述结果字段“userDesc”的查询结果“李明:13213331111”,生成该结果字段脱敏后的查询结果“李**:132****1111”,如表5所示:
userDesc |
李**:132****1111 |
表5
在上述实施例中,对于多参数函数表达式生成的结果字段的处理,是通过改写SQL,新增查询字段,来进行结果的替换,能够有效处理血缘关系类型是多参数函数表达式的结果字段的数据脱敏,防止隐私数据泄露。
作为本发明的一种实施例,若所述数据库查询结果中存在新增查询字段,则将所
述新增查询字段从所述数据库查询结果中去除。如将上述查询结果中的phone字段去除,最
终返回给用户的查询结果如表6所示:
userName | userIdCard | userDesc | userLastLogin |
李** | 142322****1111 | 李**:132****1111 | 2023-05-03 11:39:56 |
表6
将新增查询字段从查询结果中去除,能够保证用户最终拿到的查询结果与用户的原始查询也就是第一查询语句的查询结果结构相同,将数据脱敏装置对于查询语句的修改透明化。
根据本发明的实施例,在原始数据字段上进行脱敏标记,通过拦截SQL、数据血缘解析、SQL改写和查询结果处理动态地对结果数据进行脱敏,保持了数据可计算性和脱敏方案灵活性的同时,有效地克服了已有方案中存在的脱敏漏洞,降低了隐私数据泄露的风险。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。
以上是关于方法实施例的介绍,以下通过装置实施例,对本发明所述方案进行进一步说明。
如图2所示,装置200包括:
获取模块210,用于拦截待执行的数据库查询请求,获取所述数据库查询请求中的第一查询语句;
解析模块220,用于对所述第一查询语句进行数据血缘的解析,获取所述第一查询语句的字段映射关系;
判断模块230,用于获取所述数据库查询请求的数据脱敏参数和当前用户权限信息,判断所述数据库查询请求对应的数据库查询操作是否需要数据脱敏处理;
脱敏标记模块240,用于对于需要数据脱敏处理的数据库查询操作,根据所述字段映射关系对结果字段进行脱敏标记,生成第二查询语句;
脱敏处理模块250,用于执行所述第二查询语句,并拦截对应的数据库查询结果,根据结果字段上的脱敏标记对所述数据库查询结果进行脱敏处理。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,所述描述的模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
根据本发明的实施例,本发明还提供了一种电子设备。
图3示出了可以用来实施本发明的实施例的电子设备300的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
设备300包括计算单元301,其可以根据存储在只读存储器(ROM)302中的计算机程序或者从存储单元308加载到随机访问存储器(RAM)303中的计算机程序,来执行各种适当的动作和处理。在RAM 303中,还可存储设备300操作所需的各种程序和数据。计算单元301、ROM 302以及RAM 303通过总线304彼此相连。输入/输出(I/O)接口305也连接至总线304。
设备300中的多个部件连接至I/O接口305,包括:输入单元306,例如键盘、鼠标等;输出单元307,例如各种类型的显示器、扬声器等;存储单元308,例如磁盘、光盘等;以及通信单元309,例如网卡、调制解调器、无线通信收发机等。通信单元309允许设备300通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元301可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元301的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元301执行上文所描述的各个方法和处理,例如方法S101~S105。例如,在一些实施例中,方法S101~S105可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元308。在一些实施例中,计算机程序的部分或者全部可以经由ROM 302和/或通信单元309而被载入和/或安装到设备300上。当计算机程序加载到RAM 303并由计算单元301执行时,可以执行上文描述的方法S101~S105的一个或多个步骤。备选地,在其他实施例中,计算单元301可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法S101~S105。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (8)
1.一种基于数据血缘的动态数据脱敏方法,其特征在于,包括:
拦截待执行的数据库查询请求,获取所述数据库查询请求中的第一查询语句;
对所述第一查询语句进行数据血缘解析,获取所述第一查询语句的字段映射关系;
获取所述数据库查询请求的数据脱敏参数和当前用户权限信息,判断所述数据库查询请求对应的数据库查询操作是否需要数据脱敏处理;
对于需要数据脱敏处理的数据库查询操作,根据所述字段映射关系对结果字段进行脱敏标记,生成第二查询语句;
执行所述第二查询语句,并拦截对应的数据库查询结果,根据结果字段上的脱敏标记对所述数据库查询结果进行脱敏处理;
所述数据血缘解析,包括:
通过分析所述第一查询语句的字段,获得原始表字段与结果字段之间的映射关系以及字段的血缘关系类型;
所述判断所述数据库查询请求对应的数据库查询操作是否需要数据脱敏处理,包括:
第一判断:根据所述当前用户权限信息判断当前用户是否有查看数据表的权限,若是,则执行第二判断;否则返回权限错误;
第二判断:根据所述当前用户权限信息判断当前用户是否有查看数据表中原始数据的权限,若是,则执行第三判断;否则,数据库查询操作需要数据脱敏处理;
第三判断:判断所述数据脱敏参数的状态,若所述数据脱敏参数为是,则数据库查询操作需要数据脱敏处理;若所述数据脱敏参数为否,则数据库查询操作不需要数据脱敏处理。
2.根据权利要求1所述的方法,其特征在于,所述根据所述字段映射关系对结果字段进行脱敏标记,包括:
对于存在脱敏规则的原始表字段:若字段的血缘关系类型是聚合表达式,则不对所述原始表字段关联的结果字段进行脱敏标记;若字段的血缘关系类型是直接查询字段或者一般函数表达式,则对所述原始表字段关联的结果字段进行脱敏标记。
3.根据权利要求1所述的方法,其特征在于,所述根据所述字段映射关系对结果字段进行脱敏标记,还包括:
对于存在脱敏规则的原始表字段:若存在多个原始字段合成的结果字段,则将缺失的原始表字段作为新增查询字段,改写所述第一查询语句。
4.根据权利要求2所述的方法,其特征在于,若所述第一查询语句存在子查询,则通过数据血缘的解析获得原始表字段在各级子查询过程中的字段映射关系,根据所述原始表字段在各级子查询中的字段映射关系,逐级改写子查询语句。
5.根据权利要求3所述的方法,其特征在于,若所述数据库查询结果中存在血缘关系类型是多参数函数表达式的结果字段,则所述结果字段为多个原始表字段合成的结果字段;将所述多参数函数表达式中所有标记脱敏的参数字段的查询结果进行脱敏;用脱敏后的查询结果替换所述结果字段的查询结果,生成所述结果字段脱敏后的查询结果。
6.根据权利要求3所述的方法,其特征在于,若所述数据库查询结果中存在新增查询字段,则将所述新增查询字段从所述数据库查询结果中去除。
7.一种基于数据血缘的动态数据脱敏装置,其特征在于,包括:
获取模块,用于拦截待执行的数据库查询请求,获取所述数据库查询请求中的第一查询语句;
解析模块,用于对所述第一查询语句进行数据血缘的解析,获取所述第一查询语句的字段映射关系;
判断模块,用于获取所述数据库查询请求的数据脱敏参数和当前用户权限信息,判断所述数据库查询请求对应的数据库查询操作是否需要数据脱敏处理;
脱敏标记模块,用于对于需要数据脱敏处理的数据库查询操作,根据所述字段映射关系对结果字段进行脱敏标记,生成第二查询语句;
脱敏处理模块,用于执行所述第二查询语句,并拦截对应的数据库查询结果,根据结果字段上的脱敏标记对所述数据库查询结果进行脱敏处理;
所述数据血缘解析,包括:
通过分析所述第一查询语句的字段,获得原始表字段与结果字段之间的映射关系以及字段的血缘关系类型;
所述判断所述数据库查询请求对应的数据库查询操作是否需要数据脱敏处理,包括:
第一判断:根据所述当前用户权限信息判断当前用户是否有查看数据表的权限,若是,则执行第二判断;否则返回权限错误;
第二判断:根据所述当前用户权限信息判断当前用户是否有查看数据表中原始数据的权限,若是,则执行第三判断;否则,数据库查询操作需要数据脱敏处理;
第三判断:判断所述数据脱敏参数的状态,若所述数据脱敏参数为是,则数据库查询操作需要数据脱敏处理;若所述数据脱敏参数为否,则数据库查询操作不需要数据脱敏处理。
8.一种电子设备,包括至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其特征在于,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310744128.8A CN116502273B (zh) | 2023-06-25 | 2023-06-25 | 基于数据血缘的动态数据脱敏方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310744128.8A CN116502273B (zh) | 2023-06-25 | 2023-06-25 | 基于数据血缘的动态数据脱敏方法、装置和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116502273A CN116502273A (zh) | 2023-07-28 |
CN116502273B true CN116502273B (zh) | 2023-09-05 |
Family
ID=87318706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310744128.8A Active CN116502273B (zh) | 2023-06-25 | 2023-06-25 | 基于数据血缘的动态数据脱敏方法、装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116502273B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116702181A (zh) * | 2023-08-09 | 2023-09-05 | 北方健康医疗大数据科技有限公司 | 基于Apache Calcite的数据脱敏方法、系统、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112989412A (zh) * | 2021-03-18 | 2021-06-18 | 城云科技(中国)有限公司 | 一种基于sql语句解析的数据脱敏方法及装置 |
CN113901513A (zh) * | 2021-09-30 | 2022-01-07 | 四川新网银行股份有限公司 | 一种基于血缘解析的动态数据脱敏方法 |
CN115080599A (zh) * | 2022-07-25 | 2022-09-20 | 成都烽顺科技有限公司 | 一种数据库查询sql字段血缘关系生成方法 |
CN115758459A (zh) * | 2022-11-24 | 2023-03-07 | 中国工商银行股份有限公司 | 数据权限管理方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11886454B2 (en) * | 2018-01-25 | 2024-01-30 | Capital One Services, Llc | Systems and methods for storing and accessing database queries |
-
2023
- 2023-06-25 CN CN202310744128.8A patent/CN116502273B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112989412A (zh) * | 2021-03-18 | 2021-06-18 | 城云科技(中国)有限公司 | 一种基于sql语句解析的数据脱敏方法及装置 |
CN113901513A (zh) * | 2021-09-30 | 2022-01-07 | 四川新网银行股份有限公司 | 一种基于血缘解析的动态数据脱敏方法 |
CN115080599A (zh) * | 2022-07-25 | 2022-09-20 | 成都烽顺科技有限公司 | 一种数据库查询sql字段血缘关系生成方法 |
CN115758459A (zh) * | 2022-11-24 | 2023-03-07 | 中国工商银行股份有限公司 | 数据权限管理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN116502273A (zh) | 2023-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107239479A (zh) | 一种基于区块链的数据存储以及查询的方法及装置 | |
CN110688544A (zh) | 一种查询数据库的方法、设备及存储介质 | |
US10120916B2 (en) | In-querying data cleansing with semantic standardization | |
US10936478B2 (en) | Fast change impact analysis tool for large-scale software systems | |
US9569485B2 (en) | Optimizing database query | |
US10997131B1 (en) | Using a member attribute to perform a database operation on a computing device | |
CN116502273B (zh) | 基于数据血缘的动态数据脱敏方法、装置和设备 | |
CN113360519B (zh) | 数据处理方法、装置、设备和存储介质 | |
CN111737564B (zh) | 一种信息查询方法、装置、设备及介质 | |
US10901976B2 (en) | Method and apparatus for determining SQL execution plan | |
CN110874364B (zh) | 一种查询语句处理方法、装置、设备及存储介质 | |
CN110175128B (zh) | 一种相似代码案例获取方法、装置、设备和存储介质 | |
CN109033456B (zh) | 一种条件查询方法、装置、电子设备和存储介质 | |
CN110888876A (zh) | 生成数据库脚本的方法、装置、存储介质及计算机设备 | |
CN114281803A (zh) | 数据迁移方法、装置、设备、介质和程序产品 | |
CN112148713B (zh) | 异构数据库之间数据迁移方法及装置 | |
CN108694172B (zh) | 信息输出方法和装置 | |
CN109101595B (zh) | 一种信息查询方法、装置、设备及计算机可读存储介质 | |
CN107273293B (zh) | 大数据系统性能测试方法、装置及电子设备 | |
CN112825068A (zh) | 数据血缘生成方法及装置 | |
US9201936B2 (en) | Rapid provisioning of information for business analytics | |
US7725461B2 (en) | Management of statistical views in a database system | |
CN115455091A (zh) | 数据生成方法、装置、电子设备和存储介质 | |
CN110471708B (zh) | 基于可重用组件的配置项获取的方法及装置 | |
US9208199B2 (en) | Indexing and retrieval of structured documents |
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 |