CN112560100B - 数据脱敏方法及装置、计算机可读存储介质、电子设备 - Google Patents
数据脱敏方法及装置、计算机可读存储介质、电子设备 Download PDFInfo
- Publication number
- CN112560100B CN112560100B CN202011535108.2A CN202011535108A CN112560100B CN 112560100 B CN112560100 B CN 112560100B CN 202011535108 A CN202011535108 A CN 202011535108A CN 112560100 B CN112560100 B CN 112560100B
- Authority
- CN
- China
- Prior art keywords
- desensitized
- desensitization
- field name
- name
- plan
- 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
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/24—Querying
- G06F16/248—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
- G06F40/154—Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/253—Grammatical analysis; Style critique
Abstract
本发明的实施方式提供了一种数据脱敏方法及装置、计算机可读存储介质、电子设备,涉及大数据处理技术领域,该方法包括:获取与待查询表名对应的原始结构化查询语句,并对所述原始结构化查询语句进行语法解析,得到抽象语法树;对与所述原始结构化查询语句对应的元数据以及所述抽象语法树进行绑定,生成解析计划树,并基于预设的匹配规则判断所述解析计划树中是否存在待脱敏的字段名;在确定存在所述待脱敏的字段名时,根据预设的映射关系获取与所述待脱敏的字段名对应的脱敏规则;根据所述脱敏规则对与所述待脱敏的字段名对应的值进行脱敏,并执行脱敏后的解析计划树,以得到与所述待查询表名对应的查询结果。本发明提高了脱敏效率。
Description
技术领域
本发明的实施方式涉及大数据处理领域,更具体地,本发明的实施方式涉及一种数据脱敏方法、数据脱敏装置、计算机可读存储介质以及电子设备。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
大数据时代,面对存储的海量用户隐私数据,企业既需要利用大数据分析技术以实现数据价值,同时也要避免分析过程中的数据泄露以维护用户隐私安全。基于此,业界对于相关大数据组件的脱敏技术有着迫切需求,而动态脱敏技术更是因其易用性而深受企业青睐。对于一些作为大数据离线分析领域的计算引擎来说,如何与动态脱敏技术的结合是其需要解决的问题。
通俗来讲,动态脱敏的实现方式就是对敏感字段数据做用户指定的变换;按照变换位置的不同,大致可以分为平台层脱敏和引擎层脱敏。在一些动态脱敏方案中,大多数是通过SQL(Structured Query Language,结构化查询语言)函数的方式进行脱敏的。具体的脱敏过程可以包括:对原始SQL进行语法解析得到抽象语法树,进而判断抽象语法树中是否存在待脱敏字段,如果存在,则对抽象语法树进行变换,然后再根据变换后的抽象语法树对原始SQL进行重写,然后在根据重写后的SQL执行后续的解析计划。
但是,对抽象语法树进行变换,然后再根据变换后的抽象语法树对原始SQL进行重写,会使得脱敏效率较低。
发明内容
但是,在一些技术中,一方面,对抽象语法树进行变换,然后再根据变换后的抽象语法树对原始SQL进行重写,会使得脱敏效率较低,进而导致数据查询效率较低;另一方面,由于对重写后的SQL进行解析得到的抽象语法树与对原始SQL进行解析得到的抽象语法树之间的差别较大,因此需要对重写后的SQL进行解析得到的抽象语法树进行再次解析,进而导致重复解析,使得解析效率较低。
因此在现有技术中,不能在生成解析计划后,对解析计划中所包括的待脱敏字段进行脱敏,进而可以直接执行脱敏后的解析计划树,以得到与所述待查询表名对应的查询结果,这是非常令人烦恼的过程。
为此,非常需要一种改进的数据脱敏方法、数据脱敏装置、计算机可读存储介质以及电子设备,以使得可以直接在确定解析计划树中存在待脱敏的字段名时,根据预设的映射关系获取与待脱敏的字段名对应的脱敏规则;并根据脱敏规则对与待脱敏的字段名对应的值进行脱敏,并执行脱敏后的解析计划树,以得到与所述待查询表名对应的查询结果,避免了对抽象语法树进行变换,然后再根据变换后的抽象语法树对原始SQL进行重写,会使得脱敏效率较低,进而导致数据查询效率较低的问题,提高了数据查询效率。
在本上下文中,本发明的实施方式期望提供一种数据脱敏方法、数据脱敏装置、计算机可读存储介质以及电子设备。
根据本公开的一个方面,提供一种数据脱敏方法,包括:
获取与待查询表名对应的原始结构化查询语句,并对所述原始结构化查询语句进行语法解析,得到抽象语法树;
对与所述原始结构化查询语句对应的元数据以及所述抽象语法树进行绑定,生成解析计划树,并基于预设的匹配规则判断所述解析计划树中是否存在待脱敏的字段名;
在确定存在所述待脱敏的字段名时,根据预设的映射关系获取与所述待脱敏的字段名对应的脱敏规则;
根据所述脱敏规则对与所述待脱敏的字段名对应的值进行脱敏,并执行脱敏后的解析计划树,以得到与所述待查询表名对应的查询结果。
在本公开的一种示例性实施例中,基于预设的匹配规则判断所述解析计划树中是否存在待脱敏的字段名,包括:
对所述解析计划树中所包括的字段名进行遍历,并将遍历得到的字段名在所述预设的匹配规则中进行匹配;
根据匹配结果判断所述解析计划树中是否存在待脱敏的字段名。
在本公开的一种示例性实施例中,如果所述匹配结果为所述遍历得到的字段名存在于所述预设的匹配规则中,则将该字段名作为所述待脱敏的字段名。
在本公开的一种示例性实施例中,根据预设的映射关系获取与所述待脱敏的字段名对应的脱敏规则,包括:
获取所述待查询表名所在的当前会话中包括的映射关系,并根据所述映射关系获取与所述待脱敏的字段名对应的脱敏方式;
从所述当前会话中获取与所述脱敏方式对应的脱敏函数;其中,所述脱敏函数是计算引擎通过调用所述原始结构化查询语句中所包括的注册函数而注册到所述当前会话中的。
在本公开的一种示例性实施例中,根据所述脱敏规则对与所述待脱敏的字段名对应的值进行脱敏,包括:
调用所述计算引擎所包括的接口,对与所述待脱敏的字段名对应的值以及所述脱敏函数进行处理,得到与所述待脱敏的字段名对应的假名;
利用与所述待脱敏的字段名对应的假名对所述待脱敏的字段名进行替换,得到脱敏后的字段名。
在本公开的一种示例性实施例中,所述待脱敏的字段名包括用户名称、用户身份标识、用户联系方式以及用户联系地址中的一种或多种;
其中,调用所述计算引擎的所包括的接口,对与所述待脱敏的字段名对应的值以及所述脱敏函数进行处理,得到与所述待脱敏的字段名对应的假名,包括:
调用所述计算引擎所包括的接口,利用所述脱敏函数,对与所述待脱敏的字段名相对应的值,进行掩盖和/或替换,以得到所述假名。
在本公开的一种示例性实施例中,执行脱敏后的解析计划树,以得到与所述待查询表名对应的查询结果,包括:
对所述脱敏后的解析计划树进行优化,得到优化后的解析计划树,并对优化后的解析计划树进行转换,得到多个物理计划;
计算各所述物理计划的代价,并选取代价最小的物理计划作为优化后的物理计划;
执行所述优化后的物理计划,以得到与所述待查询表名对应的查询结果。
在本公开的一种示例性实施例中,计算各所述物理计划的代价,并选取代价最小的物理计划作为优化后的物理计划,包括:
基于代价计算模型计算各所述物理计划的代价,并根据代价的大小对各所述物理计划进行排序;
根据排序结果,将代价最小的物理计划作为优化后的物理计划。
根据本公开的一个方面,提供一种数据脱敏装置,包括:
解析模块,用于获取与待查询表名对应的原始结构化查询语句,并对所述原始结构化查询语句进行语法解析,得到抽象语法树;
第一判断模块,用于对与所述原始结构化查询语句对应的元数据以及所述抽象语法树进行绑定,生成解析计划树,并基于预设的匹配规则判断所述解析计划树中是否存在待脱敏的字段名;
规则获取模块,用于在确定存在所述待脱敏的字段名时,根据预设的映射关系获取与所述待脱敏的字段名对应的脱敏规则;
脱敏模块,用于根据所述脱敏规则对与所述待脱敏的字段名对应的值进行脱敏,并执行脱敏后的解析计划树,以得到与所述待查询表名对应的查询结果。
在本公开的一种示例性实施例中,基于预设的匹配规则判断所述解析计划树中是否存在待脱敏的字段名,包括:
对所述解析计划树中所包括的字段名进行遍历,并将遍历得到的字段名在所述预设的匹配规则中进行匹配;
根据匹配结果判断所述解析计划树中是否存在待脱敏的字段名。
在本公开的一种示例性实施例中,根据预设的映射关系获取与所述待脱敏的字段名对应的脱敏规则,包括:
获取所述待查询表名所在的当前会话中包括的映射关系,并根据所述映射关系获取与所述待脱敏的字段名对应的脱敏方式;
从所述当前会话中获取与所述脱敏方式对应的脱敏函数;其中,所述脱敏函数是计算引擎通过调用所述原始结构化查询语句中所包括的注册函数而注册到所述当前会话中的。
在本公开的一种示例性实施例中,根据所述脱敏规则对与所述待脱敏的字段名对应的值进行脱敏,包括:
调用所述计算引擎所包括的接口,对与所述待脱敏的字段名对应的值以及所述脱敏函数进行处理,得到与所述待脱敏的字段名对应的假名;
利用与所述待脱敏的字段名对应的假名对所述待脱敏的字段名进行替换,得到脱敏后的字段名。
在本公开的一种示例性实施例中,所述待脱敏的字段名包括用户名称、用户身份标识、用户联系方式以及用户联系地址中的一种或多种;
其中,调用所述计算引擎的所包括的接口,对与所述待脱敏的字段名对应的值以及所述脱敏函数进行处理,得到与所述待脱敏的字段名对应的假名,包括:
调用所述计算引擎所包括的接口,利用所述脱敏函数,对与所述待脱敏的字段名相对应的值,进行掩盖和/或替换,以得到所述假名。
在本公开的一种示例性实施例中,执行脱敏后的解析计划树,以得到与所述待查询表名对应的查询结果,包括:
对所述脱敏后的解析计划树进行优化,得到优化后的解析计划树,并对优化后的解析计划树进行转换,得到多个物理计划;
计算各所述物理计划的代价,并选取代价最小的物理计划作为优化后的物理计划;
执行所述优化后的物理计划,以得到与所述待查询表名对应的查询结果。
在本公开的一种示例性实施例中,计算各所述物理计划的代价,并选取代价最小的物理计划作为优化后的物理计划,包括:
基于代价计算模型计算各所述物理计划的代价,并根据代价的大小对各所述物理计划进行排序;
根据排序结果,将代价最小的物理计划作为优化后的物理计划。
根据本公开的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的数据脱敏方法。
根据本公开的一个方面,提供一种电子设备,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的数据脱敏方法。
根据本发明实施方式的数据脱敏方法和数据脱敏装置,通过获取与待查询表名对应的原始结构化查询语句,并对原始结构化查询语句进行语法解析,得到抽象语法树;然后对与原始结构化查询语句对应的元数据以及抽象语法树进行绑定,生成解析计划树,并基于预设的匹配规则判断解析计划树中是否存在待脱敏的字段名;并在确定存在待脱敏的字段名时,根据预设的映射关系获取与待脱敏的字段名对应的脱敏规则;最后根据脱敏规则对与待脱敏的字段名对应的值进行脱敏,并执行脱敏后的解析计划树,以得到与待查询表名对应的查询结果,而无需对重写后的SQL进行解析得到的抽象语法树进行再次解析,从而显著地降低了由于需要对抽象语法树进行变换,然后再根据变换后的抽象语法树对原始SQL进行重写,并对重写后的SQL进行再次解析进而导致的时间成本浪费的问题,并且避免了在对原始SQL进行重写过程中出现重写错误进而导致解析错误的问题,为用户带来了更好的体验。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性地示出了根据Hive计算引擎所得到的一种数据解析方法的流程图;
图2示意性地示出了根据Hive计算引擎所生成的一种抽象语法树的示例图;
图3示意性地示出了根据本发明示例实施例的一种数据脱敏方法的流程图;
图4示意性地示出了根据本发明示例实施例的一种根据预设的映射关系获取与所述待脱敏的字段名对应的脱敏规则的方法流程图;
图5示意性地示出了根据本发明示例实施例的一种根据所述脱敏规则对与所述待脱敏的字段名对应的值进行脱敏的方法流程图;
图6示意性地示出了根据本发明示例实施例的一种执行脱敏后的解析计划树,以得到与待查询表名对应的查询结果的方法流程图;
图7示意性地示出了根据本发明示例实施例的一种本发明所记载的数据脱敏方法进行脱敏后,所得到的查询结果示例图;
图8(a)以及图8(b)示意性地示出了根据本发明示例实施例的一种解析计划树的示例图;
图9示意性地示出了根据本发明示例实施例的一种数据脱敏装置的框图;
图10示意性地示出了根据本发明示例实施例的一种用于实现上述数据脱敏方法的计算机可读存储介质;
图11示意性地示出了根据本发明示例实施例的一种用于实现上述数据脱敏方法的电子设备。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种数据脱敏方法、数据脱敏装置、计算机可读存储介质以及电子设备。
在本文中,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,在大数据时代,面对存储的海量用户隐私数据,企业既需要利用大数据分析技术以实现数据价值,同时也要避免分析过程中的数据泄露以维护用户隐私安全。基于此,业界对于相关大数据组件的脱敏技术有着迫切需求,而动态脱敏技术更是因其易用性而深受企业青睐。Spark作为当前大数据离线分析领域的重要一员,与动态脱敏技术的结合是其自然的趋势。
通俗来讲,动态脱敏的实现方式就是对敏感字段数据做用户指定的变换。按照变换位置的不同,大致可以分为平台层脱敏和引擎层脱敏。目前,Spark官方并没有退出任何的关于动态脱敏技术方案,而业界也并未见到成熟技术样例。因此,可以参考Hive官方的动态脱敏实现方式,一窥业界现有的技术方案。
具体的,引擎层动态脱敏的常用变换方式即为SQL函数,但具体到如何把脱敏函数注入到相应字段上,则有了技术上的分野。简单来说,Hive是通过运行时重构AST(AbstractSyntax Tree,抽象语法树)进而重写SQL来实现脱敏函数注入。例如,对下面的SQL语句:
SELECT id,name FROM user;
其中id,name为敏感字段,则SQL将被重写为:
SELECT id,name FROM(
SELECT mask1(id)AS id,mask2(name)AS name
FROM user
);
其中,上述重写过程的实现涉及到Hive的SQL解析过程。具体的,参考图1所示,具体的解析过程可以包括如下步骤:
步骤S101,对原始SQL进行语法解析得到AST;
步骤S102,Hive访问metastore获取表的字段信息,与用户配置的脱敏信息做匹配,并判断是否需要脱敏;如果需要脱敏,则跳转至步骤S103,如果不需要脱敏,则跳转至步骤S104;
步骤S103,对原始SQL进行重写,并跳转到步骤S101;
步骤S104,将AST转换为解析计划;
步骤S105,对解析计划进行优化,得到优化后计划。
此处重点关注原始SQL的重写过程。例如,参考图2所示,SQL的重写过程需要经历遍历AST和变换AST两步。具体的可以包括,首先,对变换后的AST再次遍历,其次,由AST反向构造SQL。例如,在图2中,对原始SQL(201)进行解析得到包括From子句以及表(user)信息的原始AST(202);然后,对原始AST进行遍历,得到From子句203、内联视图204,再对原始AST进行变换得到Select总体205,其中,Select总体可以包括Select字段列表以及From子句;最后,对变换后的AST进行遍历构造,得到变换后的字段Mask1(id)206、Mask2(name)207,以及表(user)信息208,实现对id以及name的脱敏。
基于此可以得知,在上述脱敏过程中,一方面,SQL的重写需要经历语法树的遍历以及变换,还需要对变换后的语法树进行遍历并反向构造SQL,整体步骤较为繁琐,在SQL比较复杂的情况下耗时较长;另一方面,语法树变化对原有树状结构变化较大,导致重新构造的SQL需要从头经历一遍解析流程,存在重复以及耗时较长的问题。
基于此,本发明的基本思想在于:一方面,通过获取与待查询表名对应的原始结构化查询语句,并对原始结构化查询语句进行语法解析,得到抽象语法树;然后对与原始结构化查询语句对应的元数据以及抽象语法树进行绑定,生成解析计划树,并基于预设的匹配规则判断解析计划树中是否存在待脱敏的字段名;并在确定存在待脱敏的字段名时,根据预设的映射关系获取与待脱敏的字段名对应的脱敏规则;最后根据脱敏规则对与待脱敏的字段名对应的值进行脱敏,并执行脱敏后的解析计划树,以得到与待查询表名对应的查询结果,由于可以直接在确定存在待脱敏的字段名时,根据预设的映射关系获取与待脱敏的字段名对应的脱敏规则;并根据脱敏规则对与待脱敏的字段名对应的值进行脱敏,避免了现有技术中由于SQL的重写需要经历语法树的遍历以及变换,还需要对变换后的语法树进行遍历并反向构造SQL,整体步骤较为繁琐,在SQL比较复杂的情况下耗时较长的问题;另一方面,避免了现有技术中由于语法树变化对原有树状结构变化较大,导致重新构造的SQL需要从头经历一遍解析流程,存在重复以及耗时较长的问题;再一方面,通过根据脱敏规则对与待脱敏的字段名对应的值进行脱敏,并执行脱敏后的解析计划树,以得到与待查询表名对应的查询结果,进一步的提高了查询效率,进而提升了用户体验,同时也避免了由于需要重写原始结构化查询语句进而导致的系统负担较重的问题,降低了系统的负担。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
示例性方法
下面结合图3来描述根据本发明示例性实施方式的数据脱敏方法,该方法可以运行于服务器、服务器集群或云服务器等;当然,本领域技术人员也可以根据需求在其他平台运行本发明的方法,本示例性实施例中对此不做特殊限定。参考图3所示,该数据脱敏方法可以包括以下步骤:
步骤S310.获取与待查询表名对应的原始结构化查询语句,并对所述原始结构化查询语句进行语法解析,得到抽象语法树;
步骤S320.对与所述原始结构化查询语句对应的元数据以及所述抽象语法树进行绑定,生成解析计划树,并基于预设的匹配规则判断所述解析计划树中是否存在待脱敏的字段名;
步骤S330.在确定存在所述待脱敏的字段名时,根据预设的映射关系获取与所述待脱敏的字段名对应的脱敏规则;
步骤S340.根据所述脱敏规则对与所述待脱敏的字段名对应的值进行脱敏,并执行脱敏后的解析计划树,以得到与所述待查询表名对应的查询结果。
上述数据脱敏方法中,通过获取与待查询表名对应的原始结构化查询语句,并对原始结构化查询语句进行语法解析,得到抽象语法树;然后对与原始结构化查询语句对应的元数据以及抽象语法树进行绑定,生成解析计划树,并基于预设的匹配规则判断解析计划树中是否存在待脱敏的字段名;并在确定存在待脱敏的字段名时,根据预设的映射关系获取与待脱敏的字段名对应的脱敏规则;最后根据脱敏规则对与待脱敏的字段名对应的值进行脱敏,并执行脱敏后的解析计划树,以得到与待查询表名对应的查询结果,而无需对重写后的SQL进行解析得到的抽象语法树进行再次解析,从而显著地降低了由于需要对抽象语法树进行变换,然后再根据变换后的抽象语法树对原始SQL进行重写,并对重写后的SQL进行再次解析进而导致的时间成本浪费的问题,并且避免了在对原始SQL进行重写过程中出现重写错误进而导致解析错误的问题,为用户带来了更好的体验。
以下,将结合附图对本公开的数据脱敏方法中所记载的各步骤进行详细的解释以及说明。
首先,对本公开所涉及的名词进行解释以及说明。
数据脱敏,是对敏感数据进行变形以保护信息安全的一种数据处理方式,可以包括静态脱敏以及动态脱敏。
静态脱敏,将真实数据从源表脱敏导出到不同的目的表(或视图),根据用户级别设置相应目的表的访问权限。
动态脱敏,利用元数据管理,根据不同级别用户对应的脱敏规则,边脱敏边使用。
AST,Abstract Syntax Tree,抽象语法树;是通过对SQL文本进行词法解析形成的,用以表征SQL各部分关系的树状结构。
解析计划,是通过对AST中的schema信息(例如可以包括database、table以及column等)做解析后得到的,可用于生成实际执行计划的树状结构。
平台层,是一种包含用户认证、任务提交,任务管理、监控告警等服务的一体化平台体系,例如大数据平台,数据中台等。
引擎层,是一种实际执行计算任务的组件所属层次,例如可以Hive计算引擎以及Spark计算引擎等等。
UDF,在SQL使用中,用户根据实际需要而自行开发的函数(User-DefinedFunction的缩写)。
其次,对本发明的发明目的进行解释以及说明。
首先需要说明的是,本发明关注Spark引擎层脱敏。同时,本发明将脱敏函数的注入位置放在解析计划生成后的优化阶段,在该处遍历解析计划,匹配字段及用户配置的脱敏信息,改造相应字段所属节点的内容。相对于Hive的方案,无需对AST做多次遍历及重构,而仅仅需要遍历一次解析计划,对脱敏字段部分重构即可,且该重构仅需改动节点内部内容,而无需重构整体结构,因此更为轻量;同时,无需重写SQL,无需再走一遍SQL解析流程,即脱敏信息的注入仅相当于对当前解析计划的一次优化,不会打乱主流程,因此更为高效。
以下,将对步骤S310-步骤S340进行解释以及说明。
在步骤S310中,获取与待查询表名对应的原始结构化查询语句,并对所述原始结构化查询语句进行语法解析,得到抽象语法树。
例如,用户执行select*from customer后,可以获取与该待查询表名(customer)对应的原始结构化查询语句(也即原始SQL),然后,对该原始结构化查询语句进行语法解析,得到抽象语法树(AST)。其中,SparkSQL可以使用Antlr进行语法解析,进而得到抽象语法树。
此处需要补充说明的是,对原始结构化查询语句进行抽象语法树的解析,可以解析出表、字段以及表之间的关系,针对于子查询会递归解析每个查询,该语法树就称为ParsedLogicalPlan;解析后的逻辑计划基本形成了执行计划的基础骨架,此逻辑执行计划被称为UnresolvedLogicalPlan(抽象语法树)。
在步骤S320中,对与所述原始结构化查询语句对应的元数据以及所述抽象语法树进行绑定,生成解析计划树,并基于预设的匹配规则判断所述解析计划树中是否存在待脱敏的字段名。
在本示例实施例中,首先,对于原始结构化查询语句对应的元数据以及抽象语法树进行绑定,进而生成解析计划树。具体的,生成Unresolved Logical Plan(抽象语法树)之后,Analyzer模块将UnresolvedLogicalPlan结合元数据catalog进行绑定,最终转化为ResolvedLogicalPlan(执行计划树),也即解析计划树。
其中,Spark的解析计划树是一种树状结构,树的各个节点(Node)即表征了不同的执行阶段;其中,常见的节点类型可以包括Project、SubQuery以及TableRelation等。而在节点内,则是具体的字段信息和变换形式,例如,Attribute表征的是数据表中的字段,Alias表征的是字段变换后的假名形式。以SQL语句SELECT id,name as nameAlias FROMuser为例,它的解析计划树如下:
Project[id#1,name#2AS nameAlias#0]
+-SubqueryAlias user
+-HiveTableRelation`user`[id#1,name#2]
其中,Project节点表征了查询字段(id,name),而‘id#1’,也就是‘字段#编号’(下文统一称为Column#Num)这一形式是字段的解析形式,也就是上文所说的Attribute;同时,name#2AS nameAlias#0’是Alias的解析形式;其中,Num值在整个解析计划中是唯一的。SubqueryAlias节点表征了SQL语句中的From部分,即查询来自于user表;TableRelation节点包含了user表的详细信息(存储方式、表信息、字段信息等)。
进一步的,当得到解析计划树以后,可以基于预设的匹配规则判断所述解析计划树中是否存在待脱敏的字段名。具体的可以包括:首先,对所述解析计划树中所包括的字段名进行遍历,并将遍历得到的字段名在所述预设的匹配规则中进行匹配;其次,根据匹配结果判断所述解析计划树中是否存在待脱敏的字段名;其中,如果所述匹配结果为所述遍历得到的字段名存在于所述预设的匹配规则中,则将该字段名作为所述待脱敏的字段名;当然,如果匹配结果为遍历得到的字段名不存在于预设的匹配规则中,则该字段名为不需要脱敏的字段名。
具体的,继续以上述解析计划树为例,对上述解析计划树中所包括的字段名进行遍历,可以得到上述解析计划树中所包括的字段名可以包括:id以及name,然后将得到的字段名在预设的匹配规则中进行匹配;其中,该预设的匹配规则可以看成是一个包括了多个需要进行脱敏的字段名的名称集合,该名称集合中所包括的需要进行脱敏的字段名可以包括id(用户身份标识)、name(用户名称)、telephoneNo.(用户联系方式)、password(用户密码)以及address(用户联系地址)等等,当然也可以对各个字段名进行进一步的细分,例如id可以包括身份证号码、银行卡号码或者设备唯一识别码等等,本示例对此不做特殊限制;进一步的,如果id以及name有任意一个存在于该名称集合中,则将存在该集合中的字段名作为待脱敏字段名。
此处需要进一步补充说明的是,上述名称集合是预先配置好的,可以根据实际需要实时增加新的字段名或者删除不需要脱敏的字段名,本示例对此不做特殊限定。
在步骤S330中,在确定存在所述待脱敏的字段名时,根据预设的映射关系获取与所述待脱敏的字段名对应的脱敏规则。
在本示例实施例中,参考图4所示,根据预设的映射关系获取与所述待脱敏的字段名对应的脱敏规则可以包括步骤S410以及步骤S420。其中:
在步骤S410中,获取所述待查询表名所在的当前会话中包括的映射关系,并根据所述映射关系获取与所述待脱敏的字段名对应的脱敏方式;
在步骤S420中,从所述当前会话中获取与所述脱敏方式对应的脱敏函数;其中,所述脱敏函数是计算引擎通过调用所述原始结构化查询语句中所包括的注册函数而注册到所述当前会话中的。
以下,将对步骤S410以及步骤S420进行解释以及说明。具体的,首先,从待查询表名所在的当前会话(Session)中获取预先存储的映射关系,该映射关系为从待脱敏的字段名到脱敏方式的映射关系colMapRule(Column->function),该映射关系可以根据待脱敏字段以及脱敏方式的实际情况进行修改、增加或者删除等等;然后,再根据映射关系获取与该待脱敏的字段名对应的脱敏方式;例如,当待脱敏的字段名为id时,对应的脱敏方式为方式1;当待脱敏的字段名为name时,对应的脱敏方式为方式2;当待脱敏的字段名为telephoneNo.时,对应的脱敏方式为方式3。进一步的,当得到脱敏方式以后,可以从当前会话(Session)中获取与该脱敏方式对应的脱敏函数,其中,该脱敏函数可以为UDF(User-Defined Function)。
此处需要补充说明的是,该脱敏函数是以Spark官方要求的注册方式添加到当前Session中的,也即,可以通过原始SQL中包括的注册函数将脱敏函数(脱敏方式)注册到当前Session中。
在步骤S340中,根据所述脱敏规则对与所述待脱敏的字段名对应的值进行脱敏,并执行脱敏后的解析计划树,以得到与所述待查询表名对应的查询结果。
在本示例实施例中,首先,根据脱敏规则对于待脱敏的字段名对应的值进行脱敏。具体的,参考图5所示,根据脱敏规则对与待脱敏的字段名对应的值进行脱敏可以包括步骤S510以及步骤S520。其中:
在步骤S510中,调用所述计算引擎所包括的接口,对与所述待脱敏的字段名对应的值以及所述脱敏函数进行处理,得到与所述待脱敏的字段名对应的假名。
具体的,待脱敏的字段名可以包括用户名称、用户身份标识、用户联系方式以及用户联系地址等等,也可以包括用户密码、用户校验码等等,本示例对此不做特殊限制。当然,用户名称可以包括用户姓名、注册名称、用户邮箱名称等等;用户身份标识可以包括用户身份证号码、用户银行卡号码等等,用户联系方式可以包括用户移动电话号码、用户固定电话号码以及用户即时通讯联系方式(例如QQ或者微信)等等;用户联系地址可以包括用户住址、用户所在的企业地址等等。
其中,调用所述计算引擎的所包括的接口,对与所述待脱敏的字段名对应的值以及所述脱敏函数进行处理,得到与所述待脱敏的字段名对应的假名,可以包括:调用所述计算引擎所包括的接口,利用所述脱敏函数,对与所述待脱敏的字段名相对应的值,进行掩盖和/或替换,以得到所述假名。
具体的,以某企业存储的消费者信息为例,对具体的过敏过程进行解释以及说明。假设数据以关系型表(table)形式存储,表名为customer,字段为姓名(name)、手机号(phoneNum)和地址(address)。手机号、姓名以及地址作为敏感字段,在暴露给相关人员时,需对某一些部分进行脱敏,仅保留剩余的部分。例如,当手机号为12345678901,其脱敏后展示为******78901,当姓名为张十三时,其脱敏后展示为张**或者张XX。
详细而言,用户执行select*from customer后,系统进入SQL解析阶段,根据预先设置的脱敏字段及其脱敏方式(以上文为例,脱敏字段为’phoneNum’,脱敏方式为‘掩盖前6位’,下同),在解析计划的初始阶段,可以将脱敏字段及脱敏方式存入colMapRule(Column->function),即在当前Session中保存字段到脱敏方式的映射关系;然后,基于该映射关系提取对应的脱敏函数。具体可以如下所示:
colMapRule.put("customer.phoneNum","maskPhoneNum");
当然,将脱敏方式可以以Spark官方要求的注册方式添加到当前Session。具体添加方法可以如下所示:
sparkSession.udf.register("maskPhoneNum",maskPhoneNum_)
其中,maskPhoneNum是脱敏函数(UDF)的名称,也就是是脱敏方式(‘掩盖前6位’)的函数实现,以scala代码实现方式如下,
至此,待脱敏字段及与其对应的脱敏函数已经注入到当前Session。
此处需要进一步补充说明的是,在调用计算引擎所包括的接口,利用脱敏函数,对与待脱敏的字段名相对应的值,进行掩盖和/或替换的过程中,替换的形式可以包括变形、利用随机加密函数进行加密或者采用特定的加密算法进行加密等等,最终被替换的部分可以表示为以XX或者**或者##等符号;而对于掩盖的形式,可以直接对需要掩盖的部分进行屏蔽以避免被显示,也可以采用其他的可以用于进行掩盖式脱敏,例如可以用填充色(填充色)、马赛克、糊化、虚化等方式对需要掩盖的部分进行处理,本示例对此不做特殊限制。
在步骤S520中,利用与所述待脱敏的字段名对应的假名对所述待脱敏的字段名进行替换,得到脱敏后的字段名。
具体的,具体的替换过程本质上是将计划节点中的Attribute替换为脱敏函数包装下的Alias的过程。作为比对,这里展示未脱敏前的解析计划如下。
Project[name#0,phoneNum#1,address#2]
+-SubqueryAlias customer
+-HiveTableRelation`customer`[name#0,phoneNum#1,address#2]
脱敏过程如下:
Begin:对解析计划自下向上遍历(由于表详情节点为根节点,需要先拿到表及字段信息以确认脱敏字段,因此需自下而上);
Case:表详情节点(HiveTableRelation)
遍历所有Attribute(即Column#Num),将Column与colMapRule中的字段名比对,构造新的Map映射attrMapRule(Attribute->maskUdf),以phoneNum为例,即为(phoneNum#1->maskPhoneNum)
Case:其他节点(例如Project)
遍历当前节点的所有Attribute,即name#0,phoneNum#1,address#2
Begin if(Attribute在attrMapRule中)
此处phoneNum#1符合,则从attrMapRule取出对应UDF(即maskPhoneNum),之后调用Spark API将Attribute与UDF包装为Alias(UDF:maskPhoneNum(phoneNum#1)ASphoneNum#3),用Alias替换当前Attribute。
End if
End
进一步的,脱敏后的解析计划如下所示:
Project[name#0,UDF:subMask(phoneNum#1)AS phoneNum#3,address#2]
+-SubqueryAlias customer
+-HiveTableRelation`customer`[name#0,phoneNum#1,address#2]。
前后对比,可以发现最终是把Attribute替换为脱敏函数包装下的Alias(假名)。
进一步的,当脱敏完成后,可以执行脱敏后的解析计划树,以得到与所述待查询表名对应的查询结果。具体的,参考图6所示,执行脱敏后的解析计划树,以得到与待查询表名对应的查询结果可以包括步骤S610-步骤S630。其中:
在步骤S610中,对所述脱敏后的解析计划树进行优化,得到优化后的解析计划树,并对优化后的解析计划树进行转换,得到多个物理计划。
在步骤S620中,计算各所述物理计划的代价,并选取代价最小的物理计划作为优化后的物理计划。
具体的,首先,基于代价计算模型计算各所述物理计划的代价,并根据代价的大小对各所述物理计划进行排序;其次,根据排序结果,将代价最小的物理计划作为优化后的物理计划。
在步骤S630中,执行所述优化后的物理计划,以得到与所述待查询表名对应的查询结果。
以下,将对步骤S610-步骤S630进行解释以及说明。具体的,为了提高SparkSQL的执行效率,在执行前,首先需要对脱敏后的解析计划树进行优化;具体的优化可以包括:列剪裁、过滤、提取以及消除等等;其中,列剪裁主要用于对无用的列进行剪裁;过滤可以包括根据限制条件对原始结构化查询语句进行过滤;提取可以包括常量提取以及Null提取等等;消除可以包括序列化消除、冗余别名消除以及无效操作消除等等;当然,还可以进行其他优化,例如条件简化以及常数折叠等等,本示例对此不做特殊限制。
其次,当完成优化以后,可以直接将优化后的解析计划树转换为PhysicalPlan(物理计划)进行执行;具体的转换过程可以包括:将优化后的解析计划树中的每个操作对应strategies中相应的caseclass,生成具体的物理操作,进而得到多个物理计划;进一步的,基于代价计算模型(Cost Model)计算各物理计划的代价,并根据代价的大小对各物理计划进行排序;再根据排序结果,将代价最小的物理计划作为优化后的物理计划;最后,执行该优化后的物理计划,进而得到查询结果。
其中,具体的查询结果可以参考图7所示。具体的,在图7中可以看出,在所得到的查询结果中,用户的手机号码是被掩盖后的。通过该方法,解决了由于不同的原始结构化查询语句的质量不同,直接执行会造成不同用户提交的语义相同的不同原始结构化查询语句执行的效率差距甚远的问题,提高了查询结果的准确率同时也保证了较高的执行效率。
以下,结合图8对本公开的数据脱敏方法与现有的脱敏方法的区别进行进一步的解释以及说明。
具体的,以原始结构化查询语句为:SELECT id,name FROM user为例,假设对id,name两个字段均做脱敏处理,脱敏前后的解析计划比对可以参考图8(a)以及图8(b)所示。首先,参考图8(a)所示,其示出了一种采用现有技术进行解析进而得到的解析计划的示例图,其所解析到的各节点包括:节点内是Attribute[id,name]-From子查询-表详情;其次,参考图8(b)所示,其示出了一种采用本公开所记载的数据脱敏方法进行解析进而得到的解析疾患的示例图,其所解析到的各节点包括:节点内是Alias:UDF:maskCol(id)AS id,UDF:maskCol(name)AS name]-From子查询-表详情。
对比图8(a)和图8(b)可以得出如下结论:一方面,同样的脱敏示例下,相较改动AST,改动解析计划对原有树状结构的变换更小,自然耗费更小,实现更为简单;另一方面,改造后的解析计划可直接用于后续的步骤,而不必像Hive方案需重构SQL后再走一遍流程,提高了查询效率。
至此,可以得出,本申请所提出的一种简单易行的Spark引擎动态脱敏技术方案,为业界实现相应技术提供了新的思路,可助力企业在保护用户隐私与实现数据价值方面实现更好平衡;同时,由于各大数据组件的SQL解析过程是相似的,因此本发明所提方案有望应用于其他大数据组件,或者作为对现有脱敏技术的改造和补充,为技术的进一步推进提供了支撑;并且,本发明是目前已知的首个明确的Spark引擎层动态脱敏方案,实用性高,且其实现是依据Spark官方支持的插件方式做的扩展,无侵入性,可随时与Spark社区保持同步,其不同于业界既有的AST重构方案,而是利用解析计划改造以实现脱敏信息注入的高效重构方式,对原有SQL解析流程影响较小,无需重复遍历AST,无需重写和再次解析SQL。
示例性装置
在介绍了本发明示例性实施方式的介质之后,接下来,参考图9对本发明示例性实施方式的数据脱敏装置进行解释。
参考图9所示,该数据脱敏装置可以包括解析模块910、第一判断模块920、规则获取模块930以及脱敏模块940。其中:
解析模块910可以用于获取与待查询表名对应的原始结构化查询语句,并对所述原始结构化查询语句进行语法解析,得到抽象语法树;
第一判断模块920可以用于对与所述原始结构化查询语句对应的元数据以及所述抽象语法树进行绑定,生成解析计划树,并基于预设的匹配规则判断所述解析计划树中是否存在待脱敏的字段名;
规则获取模块930可以用于在确定存在所述待脱敏的字段名时,根据预设的映射关系获取与所述待脱敏的字段名对应的脱敏规则;
脱敏模块940可以用于根据所述脱敏规则对与所述待脱敏的字段名对应的值进行脱敏,并执行脱敏后的解析计划树,以得到与所述待查询表名对应的查询结果。
在本公开的一种示例性实施例中,基于预设的匹配规则判断所述解析计划树中是否存在待脱敏的字段名,包括:
对所述解析计划树中所包括的字段名进行遍历,并将遍历得到的字段名在所述预设的匹配规则中进行匹配;
根据匹配结果判断所述解析计划树中是否存在待脱敏的字段名。
在本公开的一种示例性实施例中,根据预设的映射关系获取与所述待脱敏的字段名对应的脱敏规则,包括:
获取所述待查询表名所在的当前会话中包括的映射关系,并根据所述映射关系获取与所述待脱敏的字段名对应的脱敏方式;
从所述当前会话中获取与所述脱敏方式对应的脱敏函数;其中,所述脱敏函数是计算引擎通过调用所述原始结构化查询语句中所包括的注册函数而注册到所述当前会话中的。
在本公开的一种示例性实施例中,根据所述脱敏规则对与所述待脱敏的字段名对应的值进行脱敏,包括:
调用所述计算引擎所包括的接口,对与所述待脱敏的字段名对应的值以及所述脱敏函数进行处理,得到与所述待脱敏的字段名对应的假名;
利用与所述待脱敏的字段名对应的假名对所述待脱敏的字段名进行替换,得到脱敏后的字段名。
在本公开的一种示例性实施例中,所述待脱敏的字段名包括用户名称、用户身份标识、用户联系方式以及用户联系地址中的一种或多种;
其中,调用所述计算引擎的所包括的接口,对与所述待脱敏的字段名对应的值以及所述脱敏函数进行处理,得到与所述待脱敏的字段名对应的假名,包括:
调用所述计算引擎所包括的接口,利用所述脱敏函数,对与所述待脱敏的字段名相对应的值,进行掩盖和/或替换,以得到所述假名。
在本公开的一种示例性实施例中,执行脱敏后的解析计划树,以得到与所述待查询表名对应的查询结果,包括:
对所述脱敏后的解析计划树进行优化,得到优化后的解析计划树,并对优化后的解析计划树进行转换,得到多个物理计划;
计算各所述物理计划的代价,并选取代价最小的物理计划作为优化后的物理计划;
执行所述优化后的物理计划,以得到与所述待查询表名对应的查询结果。
在本公开的一种示例性实施例中,计算各所述物理计划的代价,并选取代价最小的物理计划作为优化后的物理计划,包括:
基于代价计算模型计算各所述物理计划的代价,并根据代价的大小对各所述物理计划进行排序;
根据排序结果,将代价最小的物理计划作为优化后的物理计划。
示例性存储介质
在介绍了本发明示例性实施方式的弹窗处理方法和弹窗处理装置之后,接下来,参考图10对本发明示例性实施方式的存储介质进行说明。
参考图10所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品1000,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备。
示例性电子设备
在介绍了本发明示例性实施方式的存储介质之后,接下来,参考图对本发明示例性实施方式的电子设备进行说明。
在介绍了本发明示例性实施方式的存储介质之后,接下来,参考图11对本发明示例性实施方式的电子设备进行说明。
图11显示的电子设备1100仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图11所示,电子设备1100以通用计算设备的形式表现。电子设备1100的组件可以包括但不限于:上述至少一个处理单元1110、上述至少一个存储单元1120、连接不同系统组件(包括存储单元1120和处理单元1110)的总线1130、显示单元1140。
其中,所述存储单元1120存储有程序代码,所述程序代码可以被所述处理单元1110执行,使得所述处理单元1110执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元1110可以执行如图3中所示的步骤S310-S340。
存储单元1120可以包括易失性存储单元,例如随机存取存储单元(RAM)11201和/或高速缓存存储单元11202,还可以进一步包括只读存储单元(ROM)11203。
存储单元1120还可以包括具有一组(至少一个)程序模块11205的程序/实用工具11204,这样的程序模块11205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线1130可以包括数据总线、地址总线和控制总线。
电子设备1100也可以通过输入/输出(I/O)接口1150,与一个或多个外部设备1200(例如键盘、指向设备、蓝牙设备等)通信。并且,电子设备1100还可以通过网络适配器1160与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器1160通过总线1130与电子设备1100的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1100使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了弹窗处理装置的若干模块或子模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
应当注意,尽管在上文详细描述中提及了装置的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (18)
1.一种数据脱敏方法,包括:
获取与待查询表名对应的原始结构化查询语句,并对所述原始结构化查询语句进行语法解析,得到抽象语法树;
对与所述原始结构化查询语句对应的元数据以及所述抽象语法树进行绑定,生成解析计划树,并基于预设的匹配规则判断所述解析计划树中是否存在待脱敏的字段名;
在确定存在所述待脱敏的字段名时,根据预设的映射关系获取与所述待脱敏的字段名对应的脱敏规则;
根据所述脱敏规则对与所述待脱敏的字段名对应的值进行脱敏,并执行脱敏后的解析计划树,以得到与所述待查询表名对应的查询结果。
2.根据权利要求1所述的数据脱敏方法,其中,基于预设的匹配规则判断所述解析计划树中是否存在待脱敏的字段名,包括:
对所述解析计划树中所包括的字段名进行遍历,并将遍历得到的字段名在所述预设的匹配规则中进行匹配;
根据匹配结果判断所述解析计划树中是否存在待脱敏的字段名。
3.根据权利要求2所述的数据脱敏方法,其中,如果所述匹配结果为所述遍历得到的字段名存在于所述预设的匹配规则中,则将该字段名作为所述待脱敏的字段名。
4.根据权利要求1所述的数据脱敏方法,其中,根据预设的映射关系获取与所述待脱敏的字段名对应的脱敏规则,包括:
获取所述待查询表名所在的当前会话中包括的映射关系,并根据所述映射关系获取与所述待脱敏的字段名对应的脱敏方式;
从所述当前会话中获取与所述脱敏方式对应的脱敏函数;其中,所述脱敏函数是计算引擎通过调用所述原始结构化查询语句中所包括的注册函数而注册到所述当前会话中的。
5.根据权利要求4所述的数据脱敏方法,其中,根据所述脱敏规则对与所述待脱敏的字段名对应的值进行脱敏,包括:
调用所述计算引擎所包括的接口,对与所述待脱敏的字段名对应的值以及所述脱敏函数进行处理,得到与所述待脱敏的字段名对应的假名;
利用与所述待脱敏的字段名对应的假名对所述待脱敏的字段名进行替换,得到脱敏后的字段名。
6.根据权利要求5所述的数据脱敏方法,其中,所述待脱敏的字段名包括用户名称、用户身份标识、用户联系方式以及用户联系地址中的一种或多种;
其中,调用所述计算引擎的所包括的接口,对与所述待脱敏的字段名对应的值以及所述脱敏函数进行处理,得到与所述待脱敏的字段名对应的假名,包括:
调用所述计算引擎所包括的接口,利用所述脱敏函数,对与所述待脱敏的字段名相对应的值,进行掩盖和/或替换,以得到所述假名。
7.根据权利要求1所述的数据脱敏方法,其中,执行脱敏后的解析计划树,以得到与所述待查询表名对应的查询结果,包括:
对所述脱敏后的解析计划树进行优化,得到优化后的解析计划树,并对优化后的解析计划树进行转换,得到多个物理计划;
计算各所述物理计划的代价,并选取代价最小的物理计划作为优化后的物理计划;
执行所述优化后的物理计划,以得到与所述待查询表名对应的查询结果。
8.根据权利要求7所述的数据脱敏方法,其中,计算各所述物理计划的代价,并选取代价最小的物理计划作为优化后的物理计划,包括:
基于代价计算模型计算各所述物理计划的代价,并根据代价的大小对各所述物理计划进行排序;
根据排序结果,将代价最小的物理计划作为优化后的物理计划。
9.一种数据脱敏装置,包括:
解析模块,用于获取与待查询表名对应的原始结构化查询语句,并对所述原始结构化查询语句进行语法解析,得到抽象语法树;
第一判断模块,用于对与所述原始结构化查询语句对应的元数据以及所述抽象语法树进行绑定,生成解析计划树,并基于预设的匹配规则判断所述解析计划树中是否存在待脱敏的字段名;
规则获取模块,用于在确定存在所述待脱敏的字段名时,根据预设的映射关系获取与所述待脱敏的字段名对应的脱敏规则;
脱敏模块,用于根据所述脱敏规则对与所述待脱敏的字段名对应的值进行脱敏,并执行脱敏后的解析计划树,以得到与所述待查询表名对应的查询结果。
10.根据权利要求9所述的数据脱敏装置,其中,基于预设的匹配规则判断所述解析计划树中是否存在待脱敏的字段名,包括:
对所述解析计划树中所包括的字段名进行遍历,并将遍历得到的字段名在所述预设的匹配规则中进行匹配;
根据匹配结果判断所述解析计划树中是否存在待脱敏的字段名。
11.根据权利要求10所述的数据脱敏装置,其中,如果所述匹配结果为所述遍历得到的字段名存在于所述预设的匹配规则中,则将该字段名作为所述待脱敏的字段名。
12.根据权利要求9所述的数据脱敏装置,其中,根据预设的映射关系获取与所述待脱敏的字段名对应的脱敏规则,包括:
获取所述待查询表名所在的当前会话中包括的映射关系,并根据所述映射关系获取与所述待脱敏的字段名对应的脱敏方式;
从所述当前会话中获取与所述脱敏方式对应的脱敏函数;其中,所述脱敏函数是计算引擎通过调用所述原始结构化查询语句中所包括的注册函数而注册到所述当前会话中的。
13.根据权利要求12所述的数据脱敏装置,其中,根据所述脱敏规则对与所述待脱敏的字段名对应的值进行脱敏,包括:
调用所述计算引擎所包括的接口,对与所述待脱敏的字段名对应的值以及所述脱敏函数进行处理,得到与所述待脱敏的字段名对应的假名;
利用与所述待脱敏的字段名对应的假名对所述待脱敏的字段名进行替换,得到脱敏后的字段名。
14.根据权利要求13所述的数据脱敏装置,其中,所述待脱敏的字段名包括用户名称、用户身份标识、用户联系方式以及用户联系地址中的一种或多种;
其中,调用所述计算引擎的所包括的接口,对与所述待脱敏的字段名对应的值以及所述脱敏函数进行处理,得到与所述待脱敏的字段名对应的假名,包括:
调用所述计算引擎所包括的接口,利用所述脱敏函数,对与所述待脱敏的字段名相对应的值,进行掩盖和/或替换,以得到所述假名。
15.根据权利要求9所述的数据脱敏装置,其中,执行脱敏后的解析计划树,以得到与所述待查询表名对应的查询结果,包括:
对所述脱敏后的解析计划树进行优化,得到优化后的解析计划树,并对优化后的解析计划树进行转换,得到多个物理计划;
计算各所述物理计划的代价,并选取代价最小的物理计划作为优化后的物理计划;
执行所述优化后的物理计划,以得到与所述待查询表名对应的查询结果。
16.根据权利要求15所述的数据脱敏装置,其中,计算各所述物理计划的代价,并选取代价最小的物理计划作为优化后的物理计划,包括:
基于代价计算模型计算各所述物理计划的代价,并根据代价的大小对各所述物理计划进行排序;
根据排序结果,将代价最小的物理计划作为优化后的物理计划。
17.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-8任一项所述的数据脱敏方法。
18.一种电子设备,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-8任一项所述的数据脱敏方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011535108.2A CN112560100B (zh) | 2020-12-22 | 2020-12-22 | 数据脱敏方法及装置、计算机可读存储介质、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011535108.2A CN112560100B (zh) | 2020-12-22 | 2020-12-22 | 数据脱敏方法及装置、计算机可读存储介质、电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112560100A CN112560100A (zh) | 2021-03-26 |
CN112560100B true CN112560100B (zh) | 2023-09-26 |
Family
ID=75030903
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011535108.2A Active CN112560100B (zh) | 2020-12-22 | 2020-12-22 | 数据脱敏方法及装置、计算机可读存储介质、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112560100B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113722348B (zh) * | 2021-06-24 | 2023-05-23 | 马上消费金融股份有限公司 | 结构化查询语言sql语句的处理方法、装置和电子设备 |
CN113626847A (zh) * | 2021-08-24 | 2021-11-09 | 北京京东乾石科技有限公司 | 一种数据处理的方法和装置 |
CN113836171A (zh) * | 2021-09-27 | 2021-12-24 | 北京金山云网络技术有限公司 | 数据脱敏方法、装置、电子设备及可读存储介质 |
CN113987591A (zh) * | 2021-12-28 | 2022-01-28 | 北京安华金和科技有限公司 | 一种基于树状结构的数据脱敏处理方法和系统 |
CN114880351B (zh) * | 2022-05-31 | 2024-02-06 | 中国电信股份有限公司 | 慢查询语句的识别方法及装置、存储介质、电子设备 |
CN115269683A (zh) * | 2022-07-22 | 2022-11-01 | 蚂蚁区块链科技(上海)有限公司 | 一种基于多方协作的数据查询方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106778288A (zh) * | 2015-11-24 | 2017-05-31 | 阿里巴巴集团控股有限公司 | 一种数据脱敏的方法及系统 |
CN111062490A (zh) * | 2019-12-13 | 2020-04-24 | 支付宝(杭州)信息技术有限公司 | 一种包含隐私数据的网络数据的处理方法及装置 |
CN111191276A (zh) * | 2019-12-05 | 2020-05-22 | 平安银行股份有限公司 | 数据脱敏方法、装置、存储介质及计算机设备 |
CN111475525A (zh) * | 2020-03-05 | 2020-07-31 | 平安科技(深圳)有限公司 | 基于结构化查询语言的脱敏方法、及其相关设备 |
CN111651468A (zh) * | 2020-05-29 | 2020-09-11 | 中国平安财产保险股份有限公司 | 基于sql解析的数据更新方法、装置、电子设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8024339B2 (en) * | 2005-10-12 | 2011-09-20 | Business Objects Software Ltd. | Apparatus and method for generating reports with masked confidential data |
US8898146B2 (en) * | 2010-09-22 | 2014-11-25 | Hewlett-Packard Development Company, L.P. | System and method for comparing database query plans |
US10572459B2 (en) * | 2018-01-23 | 2020-02-25 | Swoop Inc. | High-accuracy data processing and machine learning techniques for sensitive data |
US11755754B2 (en) * | 2018-10-19 | 2023-09-12 | Oracle International Corporation | Systems and methods for securing data based on discovered relationships |
-
2020
- 2020-12-22 CN CN202011535108.2A patent/CN112560100B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106778288A (zh) * | 2015-11-24 | 2017-05-31 | 阿里巴巴集团控股有限公司 | 一种数据脱敏的方法及系统 |
WO2017088683A1 (zh) * | 2015-11-24 | 2017-06-01 | 阿里巴巴集团控股有限公司 | 一种数据脱敏的方法及系统 |
CN111191276A (zh) * | 2019-12-05 | 2020-05-22 | 平安银行股份有限公司 | 数据脱敏方法、装置、存储介质及计算机设备 |
CN111062490A (zh) * | 2019-12-13 | 2020-04-24 | 支付宝(杭州)信息技术有限公司 | 一种包含隐私数据的网络数据的处理方法及装置 |
CN111475525A (zh) * | 2020-03-05 | 2020-07-31 | 平安科技(深圳)有限公司 | 基于结构化查询语言的脱敏方法、及其相关设备 |
CN111651468A (zh) * | 2020-05-29 | 2020-09-11 | 中国平安财产保险股份有限公司 | 基于sql解析的数据更新方法、装置、电子设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
基于SQL语法树的SQL注入过滤方法研究;韩宸望;林晖;黄川;;网络与信息安全学报(第11期);1-8 * |
基于互联网大数据的脱敏分析技术研究;周倩伊;王亚民;王闯;;数据分析与知识发现(第02期);62-67 * |
Also Published As
Publication number | Publication date |
---|---|
CN112560100A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112560100B (zh) | 数据脱敏方法及装置、计算机可读存储介质、电子设备 | |
US10169471B2 (en) | Generating and executing query language statements from natural language | |
US10324909B2 (en) | Omega names: name generation and derivation utilizing nested three or more attributes | |
JP4991040B2 (ja) | コマンド索引のためのローカル記憶装置および拡張記憶装置を使用したコマンドスクリプトの解釈 | |
AU2015347304B2 (en) | Testing insecure computing environments using random data sets generated from characterizations of real data sets | |
US10191946B2 (en) | Answering natural language table queries through semantic table representation | |
US10445423B2 (en) | Domain-specific lexically-driven pre-parser | |
CN106844380A (zh) | 一种数据库操作方法、信息处理方法和相应装置 | |
US9483508B1 (en) | Omega names: name generation and derivation | |
CN111078729B (zh) | 医疗数据溯源方法、装置、系统、存储介质以及电子设备 | |
CN108984155A (zh) | 数据处理流程设定方法和装置 | |
CN114328574A (zh) | 一种数据查询方法、装置、电子设备及计算机可读存储介质 | |
CN113901083A (zh) | 基于多解析器的异构数据源操作资源解析定位方法和设备 | |
CN108932225B (zh) | 用于将自然语言需求转换成为语义建模语言语句的方法和系统 | |
CN113672233B (zh) | 一种基于Redfish的服务器带外管理方法、装置及设备 | |
CN114764558A (zh) | 一种sql方言转换方法、装置、系统及存储介质 | |
Zhang et al. | A new semantic annotation approach for software vulnerability source code | |
JPH1021125A (ja) | 分散データベースシステムの所在管理方式 | |
US20190057078A1 (en) | Domain-specific lexical analysis | |
CN114625757B (zh) | 基于领域特定语言的任务执行方法及装置、介质、设备 | |
CN110209885A (zh) | 一种图查询方法及系统 | |
CN116756184B (zh) | 数据库实例处理方法、装置、设备、存储介质及程序产品 | |
CN117112021B (zh) | 路由配置生成方法、装置、设备及计算机可读存储介质 | |
CN110347573B (zh) | 应用程序分析方法、装置、电子设备及计算机可读介质 | |
CN115333821A (zh) | 基于数据库的数据处理方法、装置、设备及存储介质 |
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 |