CN114357480A - 一种基于sql血缘关系的数据安全查询方法、装置和设备 - Google Patents
一种基于sql血缘关系的数据安全查询方法、装置和设备 Download PDFInfo
- Publication number
- CN114357480A CN114357480A CN202111610322.4A CN202111610322A CN114357480A CN 114357480 A CN114357480 A CN 114357480A CN 202111610322 A CN202111610322 A CN 202111610322A CN 114357480 A CN114357480 A CN 114357480A
- Authority
- CN
- China
- Prior art keywords
- field
- sql
- sensitive information
- data
- blood
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种基于SQL血缘关系的数据安全查询方法、装置和设备,包括,接收并对客户端传入的SQL语句进行语法检测,若检测结果正确,则将所述SQL语句转换为抽象语法树;递归查找抽象语法树中最终展示字段的数据来源字段,并将最终展示字段和数据来源字段抽象封装为血缘关系对象;基于血缘关系对象,查询标记表,所述标记表由可查询数据库表中的字段信息配置得到,所述标记表包括字段是否为敏感信息以及敏感信息的字段名称和掩码方式;确定数据来源字段是否为敏感信息,如果是,则获取敏感信息的字段名称和掩码方式;执行SQL语句,得到数据查询结果,根据获取的敏感字段名称和掩码方式,对查询结果集做掩码处理,展示掩码处理后的结果集。
Description
技术领域
本发明涉及计算机应用和个人隐私数据安全领域,具体涉及一种基于SQL血缘关系的数据安全查询方法。
背景技术
在数据存储组件中存储的数据,一般除了用户密码在存储之前做加密处理后存储,其余个人数据如电话、邮箱、银行卡号等明文存储。对数据做业务查询时,会存在个人数据明文展示情况。上述情况导致个人隐私数据泄露,存在安全风险。
现有技术中,目前存储系统数据加密领域,对加密真实性的验证方案都需要专门的配套工具或极其复杂的操作步骤,加密方案不存在普适性和可推广性,且占用系统资源,耗时长,存在使系统性能降低的问题。
经检索发现,公开号CN113204776A的中国专利于2021年8月3日公开了实现列加密的方法、装置、设备及存储介质,用于解决数据库表不支持列加密及查询的技术问题。本公开通过对SQL引擎进行改进,在创建表时设置表属性,在表属性中设置加密列属性、加密秘钥属性等。在执行插入SQL语句时,使用秘钥对加密列数据进行加密存储,在执行查询SQL语句时,通过秘钥对加密列数据进行解密。
但是,该专利对SQL语句进行分析需要侵入SQL执行过程中,并且对数据根据密钥和加密算法进行加密处理,复杂度更高,容错率低,仍然存在加密算法占用系统资源,耗时长的问题,无疑会降低系统性能。
发明内容
为克服上述现有技术的不足,本发明提供一种基于SQL血缘关系的数据安全查询方法、装置和设备,仅需在SQL执行前分析记录血缘关系,对SQL查询后的结果做掩码处理,流程简单,容错率高,掩码处理速度快,对系统资源占用几乎可忽略,性能更高。
本发明一方面提供一种基于SQL血缘关系的数据安全查询方法,包括,接收并对客户端传入的SQL语句进行语法检测,若检测结果正确,则将所述SQL语句转换为抽象语法树;递归查找抽象语法树中最终展示字段的数据来源字段,并将最终展示字段和数据来源字段抽象封装为血缘关系对象;基于血缘关系对象,查询标记表,所述标记表由可查询数据库表中的字段信息配置得到,所述标记表包括字段是否为敏感信息以及敏感信息的字段名称和掩码方式;确定数据来源字段是否为敏感信息,如果是,则获取敏感信息的字段名称和掩码方式;执行SQL语句,得到数据查询结果,根据获取的敏感信息的字段名称和掩码方式,对查询结果做掩码处理,展示掩码处理后的结果集。
上述技术方案中,能够接收并分析转换客户端传入的SQL语句为抽象语法树,并抽象提取出抽象语法树中最终展示字段与数据源字段的血缘关系对象,针对血缘关系对象,在标记表中获取敏感信息的字段名称和掩码方式;根据敏感信息将结果集做相应的掩码处理,实现了高效率、高速度地对可查询数据库表中的字段信息进行掩码处理。
具体地,对于复杂SQL语句能够添加递归次数,查找深度等条件,限制血缘关系查找的复杂度,降低对计算机cpu、内存等的占用情况。
进一步地,所述字段信息为个人信息的字段信息。
具体地,对不同类型的个人数据做不同的掩码处理。如手机号显示首3末4位,中间用*号隐藏代替:138****4213;银行卡显示首6末4位,中间用4个*号隐藏代替:622202****4123;邮箱像是前两位及最后一位字符,及@后邮箱域名信息:ye****y@163.com等处理方式。
进一步地,对所述SQL进行语法检测前还包括如下步骤:在开源语法分析器基础上,增加适配,使语法分析器能够同时适用于HIVE、PRESTO、MYSQL、FLINK、SPARK、POSTGRE、ORACLE数据存储组件。以便于该方法可以适用多种数据存储组件的SQL方言。
进一步地,对客户端传入的SQL语句进行语法检测,若检测结果错误,则接收SQL语句的类型,输出对应数据存储组件的SQL方言规则,展示后结束。
具体地,对应的数据存储组件根据选择的数据存储方式决定,包括HIVE、PRESTO、MYSQL、FLINK、SPARK、POSTGRE、ORACLE等。
进一步地,将词片类型与词片血缘关系作为判断条件,递归查找抽象语法树中最终展示字段的数据来源字段,最终展示字段与数据源字段之间为一对一或一对多的关系。
具体地,递归查找抽象语法树中最外层TOK_TABLE_OR_COL词片与内层TOK_TABLE_OR_COL词片的对应关系。此外,本方法仅记录血缘关系中顶层展示字段和最底层数据来源字段的祖关系。
进一步地,所述标记表还包括可查询数据库表的库名、表名,所述库名、表名与字段是否为敏感信息以及敏感信息的字段名称和掩码方式相对应。
进一步地,通过可查询数据库表的库名和表名,查询数据来源字段是否为敏感信息。
具体地,根据用户选择的数据存储组件执行SQL获取结果集,对结果集遍历处理每行结果数据,将与数据源字段对应的展示字段做相应的掩码处理。
本发明另一方面提供一种基于SQL血缘关系的数据安全查询装置,包括,语法检测模块,接收并对客户端传入的SQL语句进行语法检测,若检测结果正确,则将所述SQL语句转换为抽象语法树;血缘查找模块,递归查找抽象语法树中最终展示字段的数据来源字段,并将最终展示字段和数据来源字段抽象封装为血缘关系对象;敏感信息查询模块,基于血缘关系对象,查询标记表,所述标记表由可查询数据库表中的字段信息配置得到,所述标记表包括字段是否为敏感信息以及敏感信息的字段名称和掩码方式;敏感信息获取模块,确定数据来源字段是否为敏感信息,如果是,则获取敏感信息的字段名称和掩码方式;掩码处理模块,执行SQL语句,得到数据查询结果,根据获取的敏感信息的字段名称和掩码方式,对查询结果做掩码处理,展示掩码处理后的结果集。
本发明还一方面提供一种设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行基于SQL血缘关系的数据安全查询方法的步骤。
与现有技术相比,本发明的有益效果包括:
(1)本发明能够接收并分析转换客户端传入的SQL语句为抽象语法树,并抽象提取出抽象语法树中最终展示字段与数据源字段的血缘关系对象,针对血缘关系对象,在配置字段信息的标记表中获取敏感信息的字段名称和掩码方式;根据敏感字段信息将结果集做相应的掩码处理,实现了高效率、高速度地对可查询数据库表中的字段信息进行掩码处理;
(2)本发明应用于客户端,在SQL提交时即在客户端分析SQL语句,根据血缘关系与在标记表中配置的可查询数据表中的个人信息字段和处理编码,记录需要加密处理的列,对资源的占用分摊到各个客户端,减少SQL引擎压力;相比于应用于SQL引擎所在的设备,减轻SQL引擎所在设备的负担;
(3)本发明方法仅需在SQL执行前分析记录血缘关系,对SQL查询后的结果做掩码处理,流程简单,容错率高,掩码处理速度快,对系统资源占用几乎可忽略,性能更高;
(4)本方法仅需在标记表中配置的可查询数据库表中的个人信息字段和处理编码,无需新增其它服务,相比于依赖新增的元数据服务,本发明方法成本更低,对运维要求低;
(5)本发明方法对个人信息掩码处理,不可逆,相比于对加密列进行解密展示的掩码处理方式更安全,达到了数据保密的效果,且个人信息不存在泄露的风险。
附图说明
图1为根据本发明的基于SQL血缘关系的数据安全查询方法流程图;
图2为根据本发明实施例中基于SQL血缘关系的数据安全查询方法流程图;
图3为根据本发明实施例中方法步骤(5)的SQL抽象语法树;
图4为根据本发明实施例中方法步骤(6)的SQL解析血缘关系判断模型图;
图5为根据本发明实施例中方法步骤(6)的SQL血缘关系示意图;
图6为根据本发明实施例中基于SQL血缘关系的数据安全查询装置示意图;
图7为根据本发明实施例中设备的结构示意图。
具体实施方式
以下将结合附图对本发明各实施例的技术方案进行清楚、完整的描述,显然,所描述发实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施例,都属于本发明所保护的范围。
本发明公开了一种基于SQL血缘关系的数据安全查询方法。随着商业运作中对互联网技术的运用日渐成熟,在当前数据时代对个人信息的盗用、滥用、擅自披露个人信息等安全问题越来越成为不可忽视的问题。该查询方法能很好的在通过SQL语句查询库表数据时,在数据展示前对其中包含的用户个人数据,如手机号、身份证号、银行卡号等个人信息在未经授权时做掩码等特殊方式处理,避免用户数据在使用时出现的数据安全问题。
如图1所示,本发明提供一种基于SQL血缘关系的数据安全查询方法,包括,接收并对客户端传入的SQL语句进行语法检测,若检测结果正确,则将所述SQL语句转换为抽象语法树;递归查找抽象语法树中最终展示字段的数据来源字段,并将最终展示字段和数据来源字段抽象封装为血缘关系对象;基于血缘关系对象,查询标记表,所述标记表由可查询数据库表中的字段信息配置得到,所述标记表包括字段是否为敏感信息以及敏感信息的字段名称和掩码方式;确定数据来源字段是否为敏感信息,如果是,则获取敏感信息的字段名称和掩码方式;执行SQL语句,得到数据查询结果,根据获取的敏感信息的字段名称和掩码方式,对查询结果做掩码处理,展示掩码处理后的结果集。
作为一种实施方式,如图2,一种基于SQL血缘关系的数据安全查询方法,包括如下步骤:
(1)将已有的可查询数据库表中的字段信息,存储在MYSQL标记表中,如表1所示,MYSQL标记表中记录每张可查询数据库表的所有字段名称、字段是否为敏感信息以及敏感信息的掩码处理方式,可以得到如下形式的数据:
表1MYSQL标记表
(2)接收客户端传入的SQL语句,以此SQL语句“select mid AS show from(selectsource AS mid from(select address AS source from users)t1)t”为例。
(3)选择hive数据存储方式,对SQL语句进行语法检测,判断SQL语法是否符合hiveSQL方言。
进一步地,对SQL语句进行语法检测前,还包括步骤:在开源语法分析器基础上,增加适配,使语法分析器能够同时适用于HIVE、PRESTO、MYSQL、FLINK、SPARK、POSTGRE、ORACLE等数据存储组件。
(4)若检测结果错误,则输出展示hive SQL语法规则,流程结束。如下所示:
“SELECT[ALL|DISTINCT]select_expr,select_expr,...
FROMtable_reference
[WHEREwhere_condition]
[GROUPBYcol_list]
[ORDERBYcol_list]
[CLUSTERBYcol_list
|[DISTRIBUTEBYcol_list][SORTBYcol_list]
]
[LIMIT[offset,]rows]”
(5)若语法检测结果正确,则将所述SQL语句转换为抽象语法树,如图3所示。
语法树同一层级为同一顶层对象的子对象,nil为祖级对象,<EOF>为结束标识,如:
顶层对象为词片TOK_INSERT,其下有两个子层对象词片:TOK_DESTINATION、TOK_SELECT。
(6)对抽象语法树根据词片类型与词片血缘关系为判断条件,得到如图4所示词片与血缘关系判断模型,递归查找最终展示字段的数据来源字段,即字段的血缘关系,并抽象封装为血缘关系对象。
如步骤(2)所述SQL语句“select mid AS show from(select source AS midfrom(select address AS source from users)t1)t”与步骤(5)所述抽象语法树,词片TOK_QUERY标识语句为查询select语句,词片TOK_FROM标识此语句的数据来源,词片组合后,
TOK_TABLE_OR_COL
address
source
按照层级,source与词片TOK_TABLE_OR_COL为同一层级,address为词片TOK_TABLE_OR_COL的子层级,表示数据源字段为address,别名即展示字段为source。
血缘关系示意图如图5所示。实施例SQL最终封装为
{"sourceTable":"users","showCol":"show","sourceCol":"address"}。
(7)以库名:default,表名:users作为参数,从步骤(1)所述配置数据中查询是否为敏感信息,获取到address为敏感信息的字段和掩码方式为10010,即保留前四位明文,后续以八个*替代。
进一步包括步骤:通过库名和表名获取此表的数据源字段是否为敏感信息和敏感信息的字段掩码方式。
(8)执行SQl语句,从hive中查询数据,根据步骤(7)所述获取的敏感信息的字段名称和掩码方式,对查询结果集做掩码处理。
进一步包括步骤:根据用户选择的数据存储组件执行SQL获取结果集,对结果集遍历处理每行结果数据,将与数据源字段对应的展示字段做相应的掩码处理。
(9)展示结果集,并结束流程。
以上对本发明所提供的一种基于SQL血缘关系的数据安全查询方法进行详细介绍,本文中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
如图6所示,本发明还提供一种基于SQL血缘关系的数据安全查询装置,包括,语法检测模块,接收并对客户端传入的SQL语句进行语法检测,若检测结果正确,则将所述SQL语句转换为抽象语法树;血缘查找模块,递归查找抽象语法树中最终展示字段的数据来源字段,并将最终展示字段和数据来源字段抽象封装为血缘关系对象;敏感信息查询模块,基于血缘关系对象,查询标记表,所述标记表由可查询数据库表中的字段信息配置得到,所述标记表包括字段是否为敏感信息以及敏感信息的字段名称和掩码方式;敏感信息获取模块,确定数据来源字段是否为敏感信息,如果是,则获取敏感信息的字段名称和掩码方式;掩码处理模块,执行SQL语句,得到数据查询结果,根据获取的敏感信息的字段名称和掩码方式,对查询结果做掩码处理,展示掩码处理后的结果集。
如图7所示,本发明还提供一种设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行基于SQL血缘关系的数据安全查询方法的步骤。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案。
Claims (9)
1.一种基于SQL血缘关系的数据安全查询方法,其特征在于,包括,
接收并对客户端传入的SQL语句进行语法检测,若检测结果正确,则将所述SQL语句转换为抽象语法树;
递归查找抽象语法树中最终展示字段的数据来源字段,并将最终展示字段和数据来源字段抽象封装为血缘关系对象;
基于血缘关系对象,查询标记表,所述标记表由可查询数据库表中的字段信息配置得到,所述标记表包括字段是否为敏感信息以及敏感信息的字段名称和掩码方式;
确定数据来源字段是否为敏感信息,如果是,则获取敏感信息的字段名称和掩码方式;
执行SQL语句,得到数据查询结果,根据获取的敏感信息的字段名称和掩码方式,对查询结果做掩码处理,展示掩码处理后的结果集。
2.根据权利要求1所述的一种基于SQL血缘关系的数据安全查询方法,其特征在于,所述字段信息为个人信息的字段信息。
3.根据权利要求1所述的一种基于SQL血缘关系的数据安全查询方法,其特征在于,对所述SQL进行语法检测前还包括如下步骤:在开源语法分析器基础上,增加适配,使语法分析器能够同时适用于HIVE、PRESTO、MYSQL、FLINK、SPARK、POSTGRE、ORACLE数据存储组件。
4.根据权利要求1所述的一种基于SQL血缘关系的数据安全查询方法,其特征在于,对客户端传入的SQL语句进行语法检测,若检测结果错误,则接收SQL语句的类型,输出对应数据存储组件的SQL方言规则,展示后结束。
5.根据权利要求1所述的一种基于SQL血缘关系的数据安全查询方法,其特征在于,将词片类型与词片血缘关系作为判断条件,递归查找抽象语法树中最终展示字段的数据来源字段,最终展示字段与数据源字段之间为一对一或一对多的关系。
6.根据权利要求1所述的一种基于SQL血缘关系的数据安全查询方法,其特征在于,所述标记表还包括可查询数据库表的库名、表名,所述库名、表名与字段是否为敏感信息以及敏感信息的字段名称和掩码方式相对应。
7.根据权利要求6所述的一种基于SQL血缘关系的数据安全查询方法,其特征在于,通过可查询数据库表的库名和表名,查询数据来源字段是否为敏感信息。
8.一种基于SQL血缘关系的数据安全查询装置,用于实现权利要求1至7中任一项权利要求所述一种基于SQL血缘关系的数据安全查询方法的步骤,其特征在于,包括,
语法检测模块,接收并对客户端传入的SQL语句进行语法检测,若检测结果正确,则将所述SQL语句转换为抽象语法树;
血缘查找模块,递归查找抽象语法树中最终展示字段的数据来源字段,并将最终展示字段和数据来源字段抽象封装为血缘关系对象;
敏感信息查询模块,基于血缘关系对象,查询标记表,所述标记表由可查询数据库表中的字段信息配置得到,所述标记表包括字段是否为敏感信息以及敏感信息的字段名称和掩码方式;
敏感信息获取模块,确定数据来源字段是否为敏感信息,如果是,则获取敏感信息的字段名称和掩码方式;
掩码处理模块,执行SQL语句,得到数据查询结果,根据获取的敏感信息的字段名称和掩码方式,对查询结果做掩码处理,展示掩码处理后的结果集。
9.一种设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项权利要求所述一种基于SQL血缘关系的数据安全查询方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111610322.4A CN114357480A (zh) | 2021-12-27 | 2021-12-27 | 一种基于sql血缘关系的数据安全查询方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111610322.4A CN114357480A (zh) | 2021-12-27 | 2021-12-27 | 一种基于sql血缘关系的数据安全查询方法、装置和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114357480A true CN114357480A (zh) | 2022-04-15 |
Family
ID=81101310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111610322.4A Pending CN114357480A (zh) | 2021-12-27 | 2021-12-27 | 一种基于sql血缘关系的数据安全查询方法、装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114357480A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115291889A (zh) * | 2022-09-27 | 2022-11-04 | 华控清交信息科技(北京)有限公司 | 一种数据血缘关系建立方法、装置及电子设备 |
CN116311828A (zh) * | 2023-05-11 | 2023-06-23 | 武汉科迪智能环境股份有限公司 | 报警管理方法、装置、计算机设备及计算机可读存储介质 |
-
2021
- 2021-12-27 CN CN202111610322.4A patent/CN114357480A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115291889A (zh) * | 2022-09-27 | 2022-11-04 | 华控清交信息科技(北京)有限公司 | 一种数据血缘关系建立方法、装置及电子设备 |
CN116311828A (zh) * | 2023-05-11 | 2023-06-23 | 武汉科迪智能环境股份有限公司 | 报警管理方法、装置、计算机设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114357480A (zh) | 一种基于sql血缘关系的数据安全查询方法、装置和设备 | |
WO2016023471A1 (zh) | 手写输入字符的处理、数据拆分和合并及编解码处理方法 | |
CA2786058C (en) | System, apparatus and method for encryption and decryption of data transmitted over a network | |
CN108090351B (zh) | 用于处理请求消息的方法和装置 | |
US10541982B1 (en) | Techniques for protecting electronic data | |
CN112560100B (zh) | 数据脱敏方法及装置、计算机可读存储介质、电子设备 | |
JP2018532171A (ja) | Sql審査方法、サーバ及び記憶デバイス | |
CN112307512A (zh) | 一种日志脱敏方法、装置及存储介质 | |
CN111859426B (zh) | 一种通用加密数据库连接器及其设置方法 | |
RU2003134278A (ru) | Способ и считываемый компьютером носитель для импорта и экспорта иерархически структурированных данных | |
CN106960160A (zh) | 安全的数据库搜索 | |
US8538013B2 (en) | Rules-driven hash building | |
CN108388606B (zh) | 一种校验Sql语句中库表字段名的方法以及计算机设备 | |
CN118093629A (zh) | 数据库查询语句的生成方法、装置、设备及介质 | |
WO2019000697A1 (zh) | 信息检索方法、系统、服务器及可读存储介质 | |
CN106095772A (zh) | 一种http协议信息提取的方法和装置 | |
CN116055067B (zh) | 一种弱口令检测的方法、装置、电子设备及介质 | |
CN113312373A (zh) | 一种数据结构化查询语句的解析方法及设备 | |
KR20120003567A (ko) | 로그 관리 시스템과 이의 로그 처리방법 및 이의 로그 처리방법을 저장하는 기록매체 | |
JP5588845B2 (ja) | 不正ドメイン検知装置、不正ドメイン検知方法、およびプログラム | |
CN109361591B (zh) | 一种基于插件化的个人消息聚合系统 | |
US10114860B1 (en) | Computerized case management system with auto-generated memorable case identifiers | |
JP2003178070A (ja) | 情報検索装置 | |
CN113849538A (zh) | 一种基于模糊搜索多选项的智能提取方法及系统 | |
CN113051876A (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 |