CN113535754A - 一种数据访问方法、装置及系统 - Google Patents

一种数据访问方法、装置及系统 Download PDF

Info

Publication number
CN113535754A
CN113535754A CN202110848877.6A CN202110848877A CN113535754A CN 113535754 A CN113535754 A CN 113535754A CN 202110848877 A CN202110848877 A CN 202110848877A CN 113535754 A CN113535754 A CN 113535754A
Authority
CN
China
Prior art keywords
database system
data
target
query statement
desensitization
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
Application number
CN202110848877.6A
Other languages
English (en)
Inventor
徐福生
曾锐
段雄
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Hikvision Digital Technology Co Ltd
Original Assignee
Hangzhou Hikvision Digital Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Hikvision Digital Technology Co Ltd filed Critical Hangzhou Hikvision Digital Technology Co Ltd
Priority to CN202110848877.6A priority Critical patent/CN113535754A/zh
Publication of CN113535754A publication Critical patent/CN113535754A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

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

Abstract

本发明实施例提供了一种数据访问方法、装置及系统,应用于预设的驱动程序,该预设的驱动程序与各个数据库系统相通信,该数据访问方法包括:获取目标查询语句;从预先配置的数据安全信息中,确定各个数据库系统对应的目标策略;基于各个数据库系统对应的目标策略,对所述目标查询语句进行重写,得到各个数据库系统对应的、能够数据脱敏的待下发查询语句;针对每个数据库系统,基于该数据库系统对应的待下发查询语句,从该数据库系统中,获取经过数据脱敏的查询结果。通过本方案,可以兼顾多数据库系统具有协同能力以及低成本的数据安全访问。

Description

一种数据访问方法、装置及系统
技术领域
本发明涉及数据处理技术领域,特别是涉及一种数据访问方法、装置及系统。
背景技术
随着信息技术的不断发展,数据已经成为驱动行业发展的重要因素。建设数字共享开放能力,促进数据安全可靠跨平台流动,进一步释放数据价值已经是大趋势。
当前数据体系中,数据存储于各个独立的数据库系统中。每个数据库系统通过独立的接口对外提供服务,各种数据中间缺乏协同能力;并且,当每个系统都支持安全域能力时,需要为每个数据库系统单独开发数据安全能力,以保证数据的安全访问。
如何兼顾多数据库系统具有协同能力以及低成本的数据安全访问,是一个亟待解决的技术问题。
发明内容
本发明实施例的目的在于提供一种数据访问方法、装置及系统,兼顾了多数据库系统具有协同能力以及低成本的数据安全访问。具体技术方案如下:
第一方面,本发明实施例提供一种数据访问方法,应用于预设的驱动程序,所述预设的驱动程序与各个数据库系统相通信;所述方法包括:
获取目标查询语句;其中,所述目标查询语句用于从各个数据库系统中查询数据;
从预先配置的数据安全信息中,确定各个数据库系统对应的目标策略;其中,所述数据安全信息包括各个数据库系统中数据内容对应的数据脱敏策略,所述目标策略为所述目标查询语句所需查询数据对应的数据脱敏策略;
基于各个数据库系统对应的目标策略,对所述目标查询语句进行重写,得到各个数据库系统对应的、能够数据脱敏的待下发查询语句;
针对每个数据库系统,基于该数据库系统对应的待下发查询语句,从该数据库系统中,获取经过数据脱敏的查询结果。
可选地,所述从预先配置的数据安全信息中,确定各个数据库系统对应的目标策略,包括:
从所述目标查询语句中,获取用于数据脱敏分析的第一解析内容;
从预先配置的数据安全信息中,选取与所述第一解析内容相匹配的数据内容所对应的数据脱敏策略,得到各个数据库系统对应的目标策略。
可选地,所述数据安全信息还包括:各个数据库系统中数据内容对应的权限级别;
所述从预先配置的数据安全信息中,选取与所述第一解析内容相匹配的数据内容所对应的数据脱敏策略,得到各个数据库系统对应的目标策略,包括:
若与所述第一解析内容相匹配的数据内容对应的权限级别,不高于所述目标查询语句的访问端的用户权限级别,则从预先配置的数据安全信息中,选取与所述第一解析内容相匹配的数据内容所对应的数据脱敏策略,得到各个数据库系统对应的目标策略。
可选地,各个数据库系统中数据内容对应的数据脱敏策略,包括:各个指定列与用户自定义函数UDF的函数信息的对应关系;和/或,关于行和/或列的过滤条件;
各个数据库系统对应的目标策略包括:
所述目标查询语句所涉及指定列与UDF的函数信息的对应关系,和/或,所述目标查询语句所涉及行和/或列的过滤条件。
可选地,若各个数据库系统中的数据内容的数据脱敏策略包括:各个指定列与用户自定义函数UDF的函数信息的对应关系,所述方法还包括:
将各个指定列对应的UDF,下发至各个指定列所属的数据库系统,其中,各个指定列所属的数据库系统用于利用所接收到的UDF,进行数据脱敏处理。
可选地,每一数据库系统的待下发查询语句中,写入有该数据库系统对应的目标策略;
所述针对每个数据库系统,基于该数据库系统对应的待下发查询语句,从该数据库系统中,获取经过数据脱敏的查询结果,包括:
针对每个数据库系统,将该数据库系统对应的待下发查询语句,发送给该数据库系统,以使该数据库系统基于接收到的待下发查询语句的查询范围,获取查询结果,并利用接收到的待下发查询语句中该数据库系统对应的目标策略,对所述查询结果进行数据脱敏处理,将经过数据脱敏的查询结果反馈给所述预设的驱动程序;
接收各个数据库系统反馈的经过数据脱敏的查询结果。
可选地,所述基于各个数据库系统对应的目标策略,对所述目标查询语句进行重写,得到各个数据库系统对应的、能够数据脱敏的待下发查询语句,包括:
采用关于内联视图的重写方式,基于各个数据库系统对应的目标策略,对所述目标查询语句进行重写,得到各个数据库系统对应的、能够数据脱敏的待下发查询语句。
可选地,所述预设的驱动程序为基于开源框架Calcite的Java数据库连接JDBC驱动。
第二方面,本发明实施例提供了一种数据访问系统,包括:访问端、预设的驱动程序和各个数据库系统,所述预设的驱动程序与各个数据库系统相通信;
所述访问端,用于生成目标查询语句,并向所述预设的驱动程序发送所述目标查询语句,所述目标查询语句用于从各个数据库系统中查询数据;
所述预设的驱动程序,用于获取所述目标查询语句;从预先配置的数据安全信息中,确定各个数据库系统对应的目标策略,其中,所述数据安全信息包括各个数据库系统中数据内容对应的数据脱敏策略,所述目标策略为所述目标查询语句所需查询数据对应的数据脱敏策略;基于各个数据库系统对应的目标策略,对所述目标查询语句进行重写,得到各个数据库系统对应的、能够数据脱敏的待下发查询语句;针对每个数据库系统,基于该数据库系统对应的待下发查询语句,从该数据库系统中,获取经过数据脱敏的查询结果;
每一数据库系统,用于基于该数据库系统对应的待下发查询语句,从该数据库系统中,获取经过数据脱敏的查询结果,并反馈给所述预设的驱动程序。
第三方面,本发明实施例提供了一种数据访问装置,应用于预设的驱动程序,所述预设的驱动程序与各个数据库系统相通信;所述装置包括:
第一获取模块,用于获取目标查询语句;其中,所述目标查询语句用于从各个数据库系统中查询数据;
确定模块,用于从预先配置的数据安全信息中,确定各个数据库系统对应的目标策略;其中,所述数据安全信息包括各个数据库系统中数据内容对应的数据脱敏策略,所述目标策略为所述目标查询语句所需查询数据对应的数据脱敏策略;
重写模块,用于基于各个数据库系统对应的目标策略,对所述目标查询语句进行重写,得到各个数据库系统对应的、能够数据脱敏的待下发查询语句;
第二获取模块,针对每个数据库系统,基于该数据库系统对应的待下发查询语句,从该数据库系统中,获取经过数据脱敏的查询结果。
可选地,所述确定模块,包括:
获取子模块,从所述目标查询语句中,获取用于数据脱敏分析的第一解析内容;
选取子模块,从预先配置的数据安全信息中,选取与所述第一解析内容相匹配的数据内容所对应的数据脱敏策略,得到各个数据库系统对应的目标策略。
可选地,所述数据安全信息还包括:各个数据库系统中数据内容对应的权限级别;
所述选取子模块,用于:
若与所述第一解析内容相匹配的数据内容对应的权限级别,不高于所述目标查询语句的访问端的用户权限级别,则从预先配置的数据安全信息中,选取与所述第一解析内容相匹配的数据内容所对应的数据脱敏策略,得到各个数据库系统对应的目标策略。
可选地,各个数据库系统中数据内容对应的数据脱敏策略,包括:各个指定列与用户自定义函数UDF的函数信息的对应关系;和/或,关于行和/或列的过滤条件;
各个数据库系统对应的目标策略包括:
所述目标查询语句所涉及指定列与UDF的函数信息的对应关系,和/或,所述目标查询语句所涉及行和/或列的过滤条件。
可选地,若各个数据库系统中的数据内容的数据脱敏策略包括:各个指定列与用户自定义函数UDF的函数信息的对应关系,所述装置还包括:
下发模块,用于将各个指定列对应的UDF,下发至各个指定列所属的数据库系统,其中,各个指定列所属的数据库系统用于利用所接收到的UDF,进行数据脱敏处理。
可选地,每一数据库系统的待下发查询语句中,写入有该数据库系统对应的目标策略;
所述第二获取模块,包括:
下发子模块,用于针对每个数据库系统,将该数据库系统对应的待下发查询语句,发送给该数据库系统,以使该数据库系统基于接收到的待下发查询语句的查询范围,获取查询结果,并利用接收到的待下发查询语句中该数据库系统对应的目标策略,对所述查询结果进行数据脱敏处理,将经过数据脱敏的查询结果反馈给所述预设的驱动程序;
接收子模块,用于接收各个数据库系统反馈的经过数据脱敏的查询结果。
可选地,所述重写模块,用于:
采用关于内联视图的重写方式,基于各个数据库系统对应的目标策略,对所述目标查询语句进行重写,得到各个数据库系统对应的、能够数据脱敏的待下发查询语句。
可选地,所述预设的驱动程序为基于开源框架Calcite的Java数据库连接JDBC驱动。
第四方面,本发明实施例还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第一方面所提供的数据库访问方法。
第五方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现实现上述第一方面所提供的数据库访问方法。
第六方面,本发明实施例还提供了一种JDBC驱动,所述JDBC驱动用于实现上述第一方面所提供的数据库访问方法。
本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所提供的数据库访问方法。
本发明实施例有益效果:
本发明所提供方案中,在需要从各个数据库系统中查询数据时,无需调用各个数据库系统的专门的接口,而是通过预设的驱动程序来实现对各个数据库系统的统一数据访问,这样使得各个数据库系统具有协同能力;并且,本方案无需为每个数据库系统开发数据安全能力,而是在预设的驱动程序内预先配置、统一的数据安全信息,进而,从该数据安全信息中,获取各个数据库系统对应的目标策略,并基于目标策略对于目标查询语句进行重写,以保证各个数据库系统的安全访问。可见,通过本方案,可以兼顾多数据库系统具有协同能力以及低成本的数据安全访问。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
图1为本发明实施例所提供的数据访问方法的流程示意图;
图2为本发明实施例所提供的数据访问方法的另一流程示意图;
图3为本发明实施例所提供的数据访问方法的基于安全区的调度流程图;
图4为本发明实施例所提供的整体执行逻辑过程的流程图;
图5为本发明实施例所提供的数据访问系统的结构示意图;
图6为本发明实施例所提供的数据访问装置的结构示意图;
图7为本发明实施例所提供的电子设备的结构示意图;
图8为本发明实施例所提供的通过内联视图重写SQL的原理图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本发明所获得的所有其他实施例,都属于本发明保护的范围。
当前数据体系中,数据存储于各个独立的数据库系统中,例如Hive(基于分布式系统基础架构Hadoop的一个数据仓库工具)、Impala(一种新型查询系统)、Presto(一种数据查询引擎)、Spark(一种集群计算框架)、ES(Elasticsearch,一种搜索服务器)、PG(PostgreSql,一种对象关系型数据库管理系统)、Hbase(Hadoop Database,一个开源的非关系型分布式数据库)、GP(Greenplum,一种开源数据仓库)、ClickHouse(用于联机分析(OLAP)的列式数据库管理系统)等数据库系统。每个数据库系统通过独立的接口对外提供服务,各种数据中间缺乏协同能力;并且,当每个系统都需要支持安全域能力时,需要为每个数据库系统单独开发数据安全能力,以保证数据的安全访问。另外,每个数据库系统中的数据安全解决方案,并不是完全相同的方案。需要强调的是,为了方便描述,本发明实施例中,将用于存储数据的系统以及如spark、flink等计算引擎,统称为数据库系统。
站在数据开发平台提供方来说,需要为每个数据库系统独立维护一套安全方案,当接入新的数据库系统时,也需要为该新接入的数据库系统独立开发和维护一套安全方案,这在开发量和后续维护性方面工作是非常大的。而对于应用方来说,不同安全方案使用成本是非常高的。最重要的一点,孤立的数据库系统和安全方案直接导致数据协同计算的能力缺失,以及导致协同计算场景安全方案难以覆盖。
基于上述描述可知,如何兼顾多数据库系统具有协同能力以及低成本的数据安全访问,是一个亟待解决的技术问题。其中,所谓的低成本可以包括开发成本、维护成本和使用成本。
为了兼顾多数据库系统具有协同能力以及低成本的数据安全访问,本发明实施例提供了一种数据访问方法、装置、系统及电子设备。
下面首先对本发明实施例所提供的一种数据访问方法方法进行介绍。
本发明实施例所提供的一种数据访问方法,应用于预设的驱动程序,该预设的驱动程序与各个数据库系统相通信。可以理解的是,该预设的驱动程序可以部署于服务端,这样,访问端,即客户端,通过服务端的预设的驱动程序,可以对各个数据库系统进行统一的数据查询。
需要说明的是,该预设的驱动程序对各个数据库系统进行统一封装,从而对外提供统一的数据访问服务,也就是说,在需要对各个数据库系统同时进行数据查询访问时,无需调用各个数据库系统的专门的接口,而是借助该预设的驱动程序的统一接口,来实现各个数据库系统的访问,从而使得各个数据库系统具有协同能力。
可选地,在一种实现方式中,预设的驱动程序可以为JDBC驱动,该JDBC驱动为具有JDBC接口的驱动程序。其中,所谓JDBC接口为:Java语言中用来规范客户端程序如何来访问数据库的应用程序接口;相应的,JDBC驱动为:JDBC规范完整的实现,它的存在在JAVA程序与数据库系统之间建立了一条通信的渠道。
并且,本发明实施例中,针对数据查询过程中,可以采用SQL查询语句。相应的,在实现预设的驱动程序时,可以引入SQL解析框架,例如:开源框架Calcite,此时,该预设的驱动程序可以为基于开源框架Calcite的JDBC驱动。其中,Calcite为:Apache孵化的一个项目,主要作用是提供标准的SQL语言查询底层各种数据源的一个工具。
本领域技术人员可以理解的是,在Calcit作为SQL解析框架时,可以基于其抽象接口UnregisteredDriver实现客户端和服务端自定义驱动。那么,在开源框架Calcite的基础上,对其抽象接口UnregisteredDriver进行关于JDBC接口的功能扩展,可以实现JDBC驱动。
其中,通过JDBC驱动适配各种数据库系统,具体而言,所谓适配各种数据库系统即为:针对原生不支持SQL的存储系统(HBase,ES)、其它SQL引擎(Presto、Impala、Hive、UDE、CLickHouse)以及,需要借助中间计算引擎(Spark、Flink)的混合查询系统等数据库系统,提供统一的SQL支持。这样,所有这些数据库系统的调用都可以通过统一的JDBC接口调用,从而针对访问端,屏蔽调用各种数据库系统的细节。
其中,一种数据访问方法,可以包括如下步骤:
获取目标查询语句;其中,所述目标查询语句用于从各个数据库系统中查询数据;
从预先配置的数据安全信息中,确定各个数据库系统对应的目标策略;其中,所述数据安全信息包括各个数据库系统中数据内容对应的数据脱敏策略,所述目标策略为所述目标查询语句所需查询数据对应的数据脱敏策略;
基于各个数据库系统对应的目标策略,对所述目标查询语句进行重写,得到各个数据库系统对应的、能够数据脱敏的待下发查询语句;
针对每个数据库系统,基于该数据库系统对应的待下发查询语句,从该数据库系统中,获取经过数据脱敏的查询结果。
本发明所提供方案中,在需要从各个数据库系统中查询数据时,无需调用各个数据库系统的专门的接口,而是通过预设的驱动程序来实现对各个数据库系统的统一数据访问,这样使得各个数据库系统具有协同能力;并且,本方案无需为每个数据库系统开发数据安全能力,而是在预设的驱动程序内预先配置、统一的数据安全信息,进而,从该数据安全信息中,获取各个数据库系统对应的目标策略,并基于目标策略对于目标查询语句进行重写,以保证各个数据库系统的安全访问。可见,可以兼顾多数据库系统具有协同能力以及低成本的数据安全访问。
下面结合附图,对本发明实施例所提供的一种数据访问方法进行介绍。
如图1所示,本发明实施例所提供的一种数据访问方法,可以包括如下步骤:
S101,获取目标查询语句;其中,所述目标查询语句用于从各个数据库系统中查询数据;
访问端的用户当需要从各个数据库系统同时查询数据时,可以通过访问端向预设的驱动程序发送目标查询语句,进而,预设的驱动程序可以获取目标查询语句并对目标查询语句进行响应。其中,访问端为预设的驱动程序对应的客户端,这样,访问端的用户可以通过访问端所提供的访问界面,设置查询范围,从而访问端基于查询范围,形成目标查询语句,并向预设的驱动程序发送目标查询语句。本发明实施例并不对访问界面、设置查询范围的方式进行限定。
示例性的,目标查询语句的语句类型可以为SQL类型,当然并不局限于此。
另外,为了方便理解,结合示例性的查询场景进行说明:
企业A的子公司1、子公司2和子公司3分别采用不同的数据库系统存储有各自员工的考勤信息;当企业A的主管人员需要查询各子公司内入职时间在某个时间段内的员工的考勤信息时,可以向与各子公司的数据库系统相通信的预设的驱动程序,发送符合查询要求的查询语句t,进而,预设的驱动程序可以获取该查询语句t,并对查询语句t进行响应。
S102,从预先配置的数据安全信息中,确定各个数据库系统对应的目标策略;其中,所述数据安全信息包括各个数据库系统中数据内容对应的数据脱敏策略,所述目标策略为所述目标查询语句所需查询数据对应的数据脱敏策略;
为了保证对于各个数据库系统的低成本的数据安全访问,该预设的驱动程序中可以预先配置有数据安全信息,这样,在获取到目标查询语句时,可以从预先配置的数据安全信息中,确定各个数据库系统对应的目标策略。
本实施例,对于数据安全信息的存储形式,可以存在多种,示例性的,在一种实现方式中,预先配置的数据安全信息可以存储于数据安全区,该数据安全区可以为表形式,为了方案清楚,下文对于数据安全区的存储结构进行示例性说明。
其中,在配置数据安全信息之前,预设的驱动程序可以从各个数据库系统中获取元数据,示例性的,该元数据可以包括:数据库系统的库标识、数据表标识、列标识、列字段的字段值的属性等等;进而,将各个数据库系统的元数据通过预定配置界面进行输出,配置人员/管理人员等可以通过输出的元数据,在预定配置界面中配置各个数据库系统中数据内容的数据脱敏策略,即为某些列配置列脱敏策略,或者,为某些行或列设置过滤条件。
可以理解的是,各个数据库系统可以对应有相同的数据脱敏策略,也可以对应不同的数据脱敏策略,本发明实施例并不对此进行限定。
另外,示例性的,各个数据库系统中数据内容对应的数据脱敏策略,可以包括:
各个指定列与用户自定义函数UDF的函数信息的对应关系;和/或,关于行和/或列的过滤条件;其中,所述函数信息包括函数标识和参数;
相应的,各个数据库系统对应的目标策略可以包括:
所述目标查询语句所涉及指定列与UDF的函数信息的对应关系,和/或,所述目标查询语句所涉及行和/或列的过滤条件。
示例性的,假设数据库系统1的数据表中的A列和B列,以及数据库系统2的数据表中的A列和B列,均需要被数据保护,则可以针对两个数据库系统的A列和B列,分别设置用于列脱敏的UDF,以及在利用所设置的UDF时所需赋予的参数,从而形成针对两个数据库系统中A列和B列的数据脱敏策略:A列的列标识与所设置的UDF的函数信息的对应关系,以及B列的列标识与所设置的UDF的函数信息的对应关系。这样,当目标查询语句所涉及的列为A列时,可以从数据安全信息中,获取两个数据库系统对应的目标策略:A列的列标识与UDF的对应关系。
可选地,若各个数据库系统中数据内容对应的数据脱敏策略包括:各个指定列与用户自定义函数UDF的函数信息的对应关系,则预设的驱动程序中可以预先构建有UDF中心,该UDF中心包括数据安全信息中所涉及的各个UDF;这样,该预设的驱动程序可以将各个指定列对应的UDF,下发至各个指定列所属的数据库系统,其中,各个指定列所属的数据库系统用于利用所接收到的UDF,进行数据脱敏处理。也就是说,预设的驱动程序可以将每个数据库系统的各个指定列进行数据脱敏时所需利用的UDF,下发至相应的数据库系统,从而将UDF中心的各个UDF统一注入到相应的数据库系统中。
需要说明的是,各数据库系统实现列数据脱敏,依赖于UDF。相关技术中,各个数据库系统都是各自独立管理自身所需利用的UDF,这样,当出现修改、新增或删除UDF时,需要相关组件负责人针对每个数据库系统的UDF进行操作,一方面会导致修改不及时,另一方面各个数据库系统通过独立维护来保证一致性是个很大的问题。为了解决以上问题,本发明实施例中,构建UDF中心,该UDF中心具有如下优势:代码统一实现和维护、自动化测试验证效果,以及构建自动化注册脚本,一键实现所有数据库系统和所有UDF的自动化注入。
为了方便理解数据脱敏策略和UDF注入,下面结合示例进行说明:
若数据表a中的某一列记录有各个用户的通讯标识,当需要对通讯标识中的N1至N2位进行数据脱敏时,即不显示N1至N2的号码,该某一列作为指定列,并且,需要配置能够实现对多个号码位进行隐藏的UDF:函数1,此时,针对该某一列的数据脱敏策略可以包括该某一列的列标识、函数1的函数标识,和参数N1-N2的对应关系。另外,预设的驱动程序可以将函数1注入至数据表a所属数据库系统A,以使得数据库系统A能够保存函数1,进而,后续按照预设的驱动程序所给定的参数,即N1-N2,利用该函数1对通信标识进行号码隐藏。
S103,基于各个数据库系统对应的目标策略,对所述目标查询语句进行重写,得到各个数据库系统对应的、能够数据脱敏的待下发查询语句;
本实施例中,对所述目标查询语句进行重写,即是将目标策略写入到目标查询语句中,从而使得数据库系统能够基于重写后的查询语句中的策略内容,对查询结果进行数据脱敏处理。例如:若目标策略包括:所述目标查询语句所涉及指定列与UDF的函数信息的对应关系,则将所述目标查询语句所涉及指定列与UDF的函数信息的对应关系,写入到目标查询语句中;若目标策略包括:所述目标查询语句所涉及指定列与UDF的函数信息的对应关系,以及过滤条件,则将所述目标查询语句所涉及指定列与UDF的函数信息的对应关系,以及过滤条件,均写入到目标查询语句中。
任何一种能够对查询语句进行重写的方式,均可以应用于本发明实施例中。示例性的,为了避免安全漏洞注入到数据库系统中,在一种实现方式中,采用关于内联视图的重写方式,基于各个数据库系统对应的目标策略,对所述目标查询语句进行重写,得到各个数据库系统对应的、能够数据脱敏的待下发查询语句。内联视图是在使用SQL语句编写查询时,临时构建的一个嵌入式的视图,又称为内嵌视图。查询中包含临时的内联视图时,视图中的SELECT语句先被执行,得到一个结果集,然后由外层查询语句查询内联视图的结果。
可以理解的是,关于内联视图的重写方式,具体是在更换SQL语句里面真实的表,也就是:将需要进行数据脱敏的表改写为内联视图,并且,将内联视图中具有脱敏函数的列直接重命名为相同的列名,将改写后的内联视图对应的表,作为SQL语句中的表。对于复杂的表来说,也不会影响SQL的正确性。这种方式没有用到元数据并且直接使用脱敏数据的原信息就可以实现SQL改写,因此可以采用的这种方式进行实现。
为了方便理解,重写之前的SQL语句和重写之后的SQL语句的关系以及差异,下面结合示例进行介绍:
例如,原SQL语句为select col1,col2,col3 from dual;跟预先配置的数据安全信息得知,其中col1列需要数据脱敏,脱敏后的列为mask(col1),则可以将该语句重写为:select col1,col2,col3 from(select mask(col1)as col1,col2,col3 from dual)dual;
例如,原SQL语句为:select t1.id,t2.id from t1 left join t2 on t1.id=t2.id where t1.flag=1;需要对t2表flag列中行为1、及t2表user_dept列中行为’dpc’的数据进行行过滤,则重写后的SQL语句为:select t1.id,t2.id from t1 left join(select*from t2 where t2.flag=1and t2.user_dept=‘dpc’)t2 on t1.id=t2.idwhere t1.flag=1;
例如,原SQL语句为:select t1_id,t1_name,t2_id,t2_name,t2_xxjb from t1left join t2 on t1_id=t2_id,要对t2表进行列脱敏和行脱敏,将脱敏后的t2表作为内联视图,可以得到重写后的SQL语句为:select t1_id,t1_name,t2_id,t2_name from t1left join(select mask1(t2_id)as t2_id,mask2(t2_name)as t2_name from t2 whererow_filter_expression)t2 on t1_id=t2_id;其中,mask1(t2_id)表示脱敏后的t2_id列,mask2(t2_name)表示脱敏后的t2_name列,t2_name from t2 where row_filter_expression表示行过滤后的t2_name列。
为了方便理解关于内联视图的重写方式,下面结合图8,以重写SQL语句为例,进行简单的示例说明:
针对SQL语句,对其进行语句解析,基于解析内容可以得到该SQL语句的AST(抽象语法树)。为了实现语句重写,可以对AST的各个节点进行遍历,当遍历到每一节点时,可以判断当前节点的类型:
(1)若当前节点的类型是一张表,将基于该表的元数据与当前用户信息等所确定的、针对该表的脱敏策略,嵌入该表中,得到该表对应的新的内联视图,利用所生成的内联视图,替换当前节点的节点内容;
(2)若当前节点是多张表的join操作,分别获取左、右两边的表,继续上述的(1)的处理过程。
在遍历完毕各个节点后,可以得到处理后的AST,将处理后的AST所对应的SQL语句作为重新后SQL语句。示例性的,如图8所示,对SQL语句解析得到的AST,见箭头上方的树结构,该树结构示出了两层的节点;为了实现语句重写,可以遍历各个节点,以执行表脱敏处理(即图8中的table masking)。以第二层的第二个节点为例,在遍历到第二层的第二个节点时,该第二个节点为多张表的join操作,通过上述的(1)和(2)所给出的方式,可以对第二个节点进行节点内容替换,即利用内联视图进行替换,得到新的AST,即箭头下方的树结构。另外,可以理解的是,若各个数据库系统对应的数据脱敏策略不同,则各个数据库系统对应的目标策略不同,那么,针对每个数据库系统,可以基于该数据库系统对应的目标策略,对该目标查询语句进行重写,得到该数据库系统的、能够实现数据脱敏的待下发查询语句。若各个数据库系统对应的数据脱敏策略相同,则各个目标数据库系统对应的目标策略相同,则可以针对所有数据库系统,对目标查询语句进行一次重写,得到各个该数据库系统对应的、能够数据脱敏的待下发查询语句。
S104,针对每个数据库系统,基于该数据库系统对应的待下发查询语句,从该数据库系统中,获取经过数据脱敏的查询结果。
针对每个数据库系统,预设的驱动程序可以将该数据库系统对应的待下发查询语句,发送给该数据库系统,从而该数据库系统对于接收到的待下发查询语句进行响应。
可选地,所述针对每个数据库系统,基于该数据库系统对应的待下发查询语句,从该数据库系统中,获取经过数据脱敏的查询结果,可以包括:
针对每个数据库系统,将该数据库系统对应的待下发查询语句,发送给该数据库系统,以使该数据库系统基于接收到的待下发查询语句的查询范围,获取查询结果,并利用接收到的待下发查询语句中该数据库系统对应的目标策略,对所述查询结果进行数据脱敏处理,将经过数据脱敏的查询结果反馈给所述预设的驱动程序;
接收各个数据库系统反馈的经过数据脱敏的查询结果。
示例性的,利用待下发查询语句中该数据库系统对应的目标策略,对查询结果进行数据脱敏处理,可以包括:
若该数据库系统对应的目标策略包括有过滤条件,则按照过滤条件,对查询结果进行过滤,得到经过数据脱敏处理的查询结果;
若该数据库系统对应目标策略包括有所述目标查询语句所涉及指定列与UDF的函数信息的对应关系,则利用函数信息中的函数标识确定出待利用的UDF,将函数信息中的参数赋予待利用的UDF,进而,针对目标查询语句所涉及指定列的列数据,通过待利用的UDF进行数据脱敏处理,得到查询结果。
本发明所提供方案中,在需要从各个数据库系统中查询数据时,无需调用各个数据库系统的专门的接口,而是通过预设的驱动程序来实现对各个数据库系统的统一数据访问,这样使得各个数据库系统具有协同能力;并且,本方案无需为每个数据库系统开发数据安全能力,而是在预设的驱动程序内预先配置、统一的数据安全信息,进而,从该数据安全信息中,获取各个数据库系统对应的目标策略,并基于目标策略对于目标查询语句进行重写,以保证各个数据库系统的安全访问。可见,通过本方案,可以兼顾多数据库系统具有协同能力以及低成本的数据安全访问。
另外,通过本方案配置的统一的预设的驱动程序、统一的数据安全信息和UDF中心,极大的提高了对各数据库系统的扩展能力,为开发平台接入其它数据库系统提供了极大的便利性,例如:为物信融合开发平台接入其它数据库系统提供了极大的便利性,节省成本并提高了系统的可维护性。并且,通过本方案避免了为每种数据库系统构建独立的安全区,即数据安全信息,在物信融合数据开放的大背景下,提供了平台级数据安全能力,而并非组件级数据安全能力。
可选地,基于图1所示的实施例,如图2所示,上述的步骤S102可以包括如下步骤S1021和S1022:
步骤S1021,从所述目标查询语句中,获取用于数据脱敏分析的第一解析内容;
由于列数据脱敏涉及到列,而过滤条件涉及到行或列,因此,示例性的,用于数据脱敏分析的第一解析内容可以包括但不局限于:列信息、行信息,当然,还可以包括与列信息和行信息相关的数据库标识、数据表标识等信息;其中,列信息可以包括列标识、或者列范围;而行信息可以包括行标识、行范围、行过滤条件等。
步骤S1022,从预先配置的数据安全信息中,选取与所述第一解析内容相匹配的数据内容所对应的数据脱敏策略,得到各个数据库系统对应的目标策略。
其中,所谓与第一解析内容相匹配的数据内容,示例性的,若第一解析内容为列信息,则与第一解析内容相匹配的数据内容为该列信息所指示的列;若第一解析内容为数据表标识,则与第一解析内容相匹配的数据内容为该数据表标识所指示的数据表。
也就是说,用于数据脱敏分析的第一解析内容,来从关于数据库系统的数据脱敏策略中,选取部分策略,该部分策略为目标查询语句所查询数据对应的数据脱敏策略。
示例性的,所述从预先配置的数据安全信息中,选取与所述第一解析内容相匹配的数据内容所对应的数据脱敏策略,得到各个数据库系统对应的目标策略,包括:
针对每个数据库系统,从预先配置的数据安全信息中,确定该数据库系统中数据内容对应的数据脱敏策略;从所确定的数据脱敏策略中,选取与所述第一解析内容相匹配的数据内容所对应的策略,作为该该数据库系统对应的目标策略。可以理解的是,在一种可选地实现方式中,从所确定的数据脱敏策略中,选取与所述第一解析内容相匹配的数据内容所对应的策略的实现过程,可以与现有技术中,从数据库系统自身存储的数据脱敏策略中,选取与第一解析内容相匹配的数据内容所对应的数据脱敏策略的实现方式相同。
另外,可选地,所述各个数据库系统中数据内容对应的数据脱敏策略的类型可以包括:全局策略以及局部策略;其中,所述局部策略为满足预定查询条件时所利用的策略;此时,
预设的驱动程序可以从预先配置的数据安全信息所存储的全局策略中,选取与所述第一解析内容相匹配的数据内容所对应的数据脱敏策略,得到各个数据库系统对应的第一子策略;
并且,在所述目标查询语句满足预定查询条件时,从预先配置的数据安全信息所存储的局部策略中,选取与所述第一解析内容相匹配的数据内容所对应的数据脱敏策略,得到各个数据库系统对应的第二子策略;
进而,基于所选取的第一子策略和/或第二子策略,确定各个数据库系统对应的目标策略。
本实施例中,通过从所述目标查询语句中,获取用于数据脱敏分析的第一解析内容,再预先配置的数据安全信息中,选取与所述第一解析内容相匹配的数据内容所对应的数据脱敏策略,得到各个数据库系统对应的目标策略,在需要从各个数据库系统中查询数据时,无需调用各个数据库系统的专门的接口,而是通过预设的驱动程序来实现对各个数据库系统的统一数据访问,这样使得各个数据库系统具有协同能力;并且,本方案无需为每个数据库系统开发数据安全能力,而是在预设的驱动程序内预先配置、统一的数据安全信息,进而,从该数据安全信息中,获取各个数据库系统对应的目标策略,并基于目标策略对于目标查询语句进行重写,以保证各个数据库系统的安全访问。可见,通过本方案,可以兼顾多数据库系统具有协同能力以及低成本的数据安全访问。
可选地,所述数据安全信息还可以包括:各个数据库系统中的数据内容对应的权限级别;
上述的步骤S1022可以包括:
若与所述第一解析内容相匹配的数据内容对应的权限级别,不高于所述目标查询语句的访问端的用户权限级别,则从预先配置的数据安全信息中,选取与所述第一解析内容相匹配的数据内容所对应的数据脱敏策略,得到各个数据库系统对应的目标策略。
其中,各个数据库系统中的数据内容对应的权限级别可以包括但不局限于:数据库的权限级别、数据表的权限级别、列的权限级别等等。当发出目标查询语句的访问端的用户权限级别不低于数据库的权限级别时,该访问端可以访问数据库;当发出目标查询语句的访问端的用户权限级别不低于数据表的权限级别时,该访问端可以访问数据表;当发出目标查询语句的访问端的用户权限级别不低于列的权限级别时,该访问端可以访问列。
示例性的,若某一数据库系统设置有数据表的权限级别、某一列的权限级别,当第一解析内容包括某一列时,则发出目标查询语句的访问端的用户权限级别不低于数据表的权限级别且不低于数据表的权限级别,且不低于某一列的权限级别时,可以从预先配置的数据安全信息中,选取与该某一列所对应的数据脱敏策略,得到数据库系统对应的目标策略。
本实施例中,通过设置各个数据库系统中的数据内容对应的权限级别,可以达到用户级别的数据过滤,即针对不同的用户提供不同的数据安全访问策略,进一步保证数据库的数据安全性。
为了方案清楚,下面示例性地给出数据安全区的结构。
例如在Hbase(Hadoop Database)数据库系统中,数据库的组织结构(schema)由三个数据表组成:table1-3,每个数据表都有其对应的权限级别1-3。此时,记录有各个数据表的权限级别的数据安全区的结构可以如表1所示:
datasouce database table Level_Info
Hbase Hbase-schema table1 1
Hbase Hbase-schema table2 2
Hbase Hbase-schema table3 3
表1
进一步地,在数据表1中,按照列的名称也可以分为不同的权限级别,例如,列名称(Column_Name)为IdCard的权限级别为1,列名称为Name的权限级别为2;列名称为Age的权限级别为2。其中,Family_Name是数据库的一种命名规则。此时,记录有各个列的权限级别的数据安全区的结构可以如表2所示:
datasouce database table Family_Name Column_Name Level_Info
Hbase Hbase-schema table1 cf IdCard 1
Hbase Hbase-schema table1 cf Name 2
Hbase Hbase-schema table1 cf Age 2
表2
在全局策略中,table1中名称为IdCard的列对应的UDF函数信息的标识为1,即通过标识1可以索引到IdCard这一列所需的UDF函数信息,名称为Age的列对应的UDF函数信息的标识为2,通过标识2可以索引到Age这一列所需的UDF函数信息;对于名称为Name的列,则对其中行标记不为‘Hik’的数据进行过滤。此时,记录有各个列的相关策略信息的数据安全区,即全局安全区,具体结构可以如表3所示:
datasouce database table Family_Name Column_Name func row_mask
Hbase Hbase-schema table1 cf IdCard 1
Hbase Hbase-schema table1 Name!=’Hik’
Hbase Hbase-schema table1 cf Age 2
表3
另外,还可以对满足预定查询条件的目标查询语句配置局部策略,在table1中,名称为IdCard的列执行标识为1的UDF函数,对应的级别为1;名称为Age的列执行标识为2的UDF函数,对应的级别为1;名称为Name的列中行标记不为‘Hik’的数据进行过滤,对应的级别为2。此时,记录有各个列的相关策略信息的数据安全区,即特定安全区或局部安全区,具体结构可以如表4所示:
datasouce database table Family_Name Column_Name fune row_mask LevelInfo
Hbase Hbase-schema table1 cf IdCard 1 1
Hbase Hbase-schema table1 Name!=’Hik’ 2
Hbase Hbase-schema table1 cf Age 2 1
表4
需要强调的是,上述的表1-表4仅仅是作为数据安全区的示例性结构,并不应该构成对本发明实施例的限定。
为了方案清楚,下面结合具体示例,对本发明实施例所提供的一种数据访问方法进行介绍。数据安全信息既包括各个数据库系统中数据内容对应的数据脱敏策略、又包括各个数据库系统中的数据内容对应的权限级别,即数据安全区中既包括各个数据库系统中数据内容对应的数据脱敏策略、又包括各个数据库系统中的数据内容对应的权限级别。
如图3所示,本发明实施例所提供的数据访问方法中,在SQL语句传入后,对SQL进行解析,获取用户、表名、列、用户级别、行过滤条件等信息;基于用户、表名、列信息从安全区(即数据安全区)获取脱敏策略,即上述的各个数据库系统对应的目标策略;基于所获取到的脱敏策略,对SQL语句重写,再将SQL传给对应的数据库系统,从而得到SQL语句对应的、经过数据脱敏的查询结果。
具体地,基于用户、表名、列信息从安全区(即数据安全区)获取脱敏策略,从安全区获取脱敏策略,以及重写SQL的过程,可以包括:
根据获得的表信息从安全区中获取该表的级别,即权限级别;
当用户级别不小于该表的级别时,再根据表信息与列信息从安全区获取列级别;
判断每个列的级别与用户级别,若列级别验证通过,则可以根据表名、列名、用户级别从安全区获取列脱敏函数,即获取列的脱敏函数的函数信息;根据表名、用户级别和预留的操作类型获取当前的行过滤条件;将行过滤条件与现有条件对比,重写行过滤条件;将列与UDF的函数信息的对应关系,以及行过滤条件,均写入到SQL中,完成SQL重写。其中,预留的操作类型可以根据实际需求设定访问类型、或者,语句类型等,当满足所设定的操作类型时,可以获取当前的行过滤条件。
其中,对行过滤条件的重写可以包括:判断原SQL是否含有当前列条件,如果有,则对当前的行过滤条件原SQL中的条件取并集,例如对值列举、范围查询等取并集;如果没有,则直接根据当前的行过滤条件重写行过滤条件。
本实施例中,整体执行逻辑过程如图4所示,即先对传入的SQL进行统一解析,基于解析信息自动获取安全区信息,再对SQL重写,最后将重写后的SQL下发到各个系统执行。
本实施例中,在需要从各个数据库系统中查询数据时,无需调用各个数据库系统的专门的接口,而是通过预设的驱动程序来实现对各个数据库系统的统一数据访问,这样使得各个数据库系统具有协同能力;并且,本方案无需为每个数据库系统开发数据安全能力,而是在预设的驱动程序内预先配置、统一的数据安全信息,进而,从该数据安全信息中,获取各个数据库系统对应的目标策略,并基于目标策略对于目标查询语句进行重写,以保证各个数据库系统的安全访问。可见,通过本方案,可以兼顾多数据库系统具有协同能力以及低成本的数据安全访问。
相应于上述的方法实施例,本发明实施例还提供了一种数据访问系统,如图5所示,该系统可以包括:访问端510、预设的驱动程序520和各个数据库系统530,所述预设的驱动程序与各个数据库系统相通信;
所述访问端510,用于生成目标查询语句,并向所述预设的驱动程序发送所述目标查询语句,所述目标查询语句用于从各个数据库系统中查询数据;
所述预设的驱动程序520,用于获取所述目标查询语句;从预先配置的数据安全信息中,确定各个数据库系统对应的目标策略,其中,所述数据安全信息包括各个数据库系统中数据内容对应的数据脱敏策略,所述目标策略为所述目标查询语句所需查询数据对应的数据脱敏策略;基于各个数据库系统对应的目标策略,对所述目标查询语句进行重写,得到各个数据库系统对应的、能够数据脱敏的待下发查询语句;针对每个数据库系统,基于该数据库系统对应的待下发查询语句,从该数据库系统中,获取经过数据脱敏的查询结果;
每一数据库系统530,用于基于该数据库系统对应的待下发查询语句,从该数据库系统中,获取经过数据脱敏的查询结果,并反馈给所述预设的驱动程序。
可选地,所述预设的驱动程序520从预先配置的数据安全信息中,确定各个数据库系统对应的目标策略,包括:
从所述目标查询语句中,获取用于数据脱敏分析的第一解析内容;
从预先配置的数据安全信息中,选取与所述第一解析内容相匹配的数据内容所对应的数据脱敏策略,得到各个数据库系统对应的目标策略。
可选地,所述数据安全信息还包括:各个数据库系统中数据内容对应的权限级别;
所述预设的驱动程序520从预先配置的数据安全信息中,选取与所述第一解析内容相匹配的数据内容所对应的数据脱敏策略,得到各个数据库系统对应的目标策略,包括:
若与所述第一解析内容相匹配的数据内容对应的权限级别,不高于所述目标查询语句的访问端的用户权限级别,则从预先配置的数据安全信息中,选取与所述第一解析内容相匹配的数据内容所对应的数据脱敏策略,得到各个数据库系统对应的目标策略。
可选地,各个数据库系统中数据内容对应的数据脱敏策略,包括:各个指定列与用户自定义函数UDF的函数信息的对应关系;和/或,关于行和/或列的过滤条件;
各个数据库系统对应的目标策略包括:
所述目标查询语句所涉及指定列与UDF的函数信息的对应关系,和/或,所述目标查询语句所涉及行和/或列的过滤条件。
可选地,若各个数据库系统中的数据内容的数据脱敏策略包括:各个指定列与用户自定义函数UDF的函数信息的对应关系,所述预设的驱动程序520还用于:
将各个指定列对应的UDF,下发至各个指定列所属的数据库系统,其中,各个指定列所属的数据库系统用于利用所接收到的UDF,进行数据脱敏处理。
可选地,每一数据库系统的待下发查询语句中,写入有该数据库系统对应的目标策略;
所述预设的驱动程序520针对每个数据库系统,基于该数据库系统对应的待下发查询语句,从该数据库系统中,获取经过数据脱敏的查询结果,包括:
针对每个数据库系统,将该数据库系统对应的待下发查询语句,发送给该数据库系统,以使该数据库系统基于接收到的待下发查询语句的查询范围,获取查询结果,并利用接收到的待下发查询语句中该数据库系统对应的目标策略,对所述查询结果进行数据脱敏处理,将经过数据脱敏的查询结果反馈给所述预设的驱动程序;
接收各个数据库系统反馈的经过数据脱敏的查询结果。
可选地,所述预设的驱动程序520基于各个数据库系统对应的目标策略,对所述目标查询语句进行重写,得到各个数据库系统对应的、能够数据脱敏的待下发查询语句,包括:
采用关于内联视图的重写方式,基于各个数据库系统对应的目标策略,对所述目标查询语句进行重写,得到各个数据库系统对应的、能够数据脱敏的待下发查询语句。
可选地,所述预设的驱动程序520为基于开源框架Calcite的Java数据库连接JDBC驱动。
对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
可见,通过本方案,可以兼顾多数据库系统具有协同能力以及低成本的数据安全访问。
相应于上述方法实施例,本发明实施例还提供了一种数据访问装置,应用于预设的驱动程序,所述预设的驱动程序与各个数据库系统相通信;如图6所示,所述装置包括:
第一获取模块610,用于获取目标查询语句;其中,所述目标查询语句用于从各个数据库系统中查询数据;
确定模块620,用于从预先配置的数据安全信息中,确定各个数据库系统对应的目标策略;其中,所述数据安全信息包括各个数据库系统中数据内容对应的数据脱敏策略,所述目标策略为所述目标查询语句所需查询数据对应的数据脱敏策略;
重写模块630,用于基于各个数据库系统对应的目标策略,对所述目标查询语句进行重写,得到各个数据库系统对应的、能够数据脱敏的待下发查询语句;
第二获取模块640,针对每个数据库系统,基于该数据库系统对应的待下发查询语句,从该数据库系统中,获取经过数据脱敏的查询结果。
可选地,所述确定模块,包括:
获取子模块,从所述目标查询语句中,获取用于数据脱敏分析的第一解析内容;
选取子模块,从预先配置的数据安全信息中,选取与所述第一解析内容相匹配的数据内容所对应的数据脱敏策略,得到各个数据库系统对应的目标策略。
可选地,所述数据安全信息还包括:各个数据库系统中数据内容对应的权限级别;
所述选取子模块,用于:
若与所述第一解析内容相匹配的数据内容对应的权限级别,不高于所述目标查询语句的访问端的用户权限级别,则从预先配置的数据安全信息中,选取与所述第一解析内容相匹配的数据内容所对应的数据脱敏策略,得到各个数据库系统对应的目标策略。
可选地,各个数据库系统中数据内容对应的数据脱敏策略,包括:各个指定列与用户自定义函数UDF的函数信息的对应关系;和/或,关于行和/或列的过滤条件;
各个数据库系统对应的目标策略包括:
所述目标查询语句所涉及指定列与UDF的函数信息的对应关系,和/或,所述目标查询语句所涉及行和/或列的过滤条件。
可选地,若各个数据库系统中的数据内容的数据脱敏策略包括:各个指定列与用户自定义函数UDF的函数信息的对应关系,所述装置还包括:
下发模块,用于将各个指定列对应的UDF,下发至各个指定列所属的数据库系统,其中,各个指定列所属的数据库系统用于利用所接收到的UDF,进行数据脱敏处理。
可选地,每一数据库系统的待下发查询语句中,写入有该数据库系统对应的目标策略;
所述第二获取模块,包括:
下发子模块,用于针对每个数据库系统,将该数据库系统对应的待下发查询语句,发送给该数据库系统,以使该数据库系统基于接收到的待下发查询语句的查询范围,获取查询结果,并利用接收到的待下发查询语句中该数据库系统对应的目标策略,对所述查询结果进行数据脱敏处理,将经过数据脱敏的查询结果反馈给所述预设的驱动程序;
接收子模块,用于接收各个数据库系统反馈的经过数据脱敏的查询结果。
可选地,所述重写模块,用于:
采用关于内联视图的重写方式,基于各个数据库系统对应的目标策略,对所述目标查询语句进行重写,得到各个数据库系统对应的、能够数据脱敏的待下发查询语句。
可选地,所述预设的驱动程序为基于开源框架Calcite的JDBC(Java DatabaseConnectivity,Java数据库连接)驱动。
本发明实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,
存储器703,用于存放计算机程序;
处理器701,用于执行存储器703上所存放的程序时,实现本发明实施例上述所提供的任一方法的步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据访问方法的步骤。
在本发明提供的又一实施例中,还提供了一种JDBC驱动,所述JDBC驱动用于实现上述的任一数据访问方法步骤。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一数据访问方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (11)

1.一种数据访问方法,其特征在于,应用于预设的驱动程序,所述预设的驱动程序与各个数据库系统相通信;所述方法包括:
获取目标查询语句;其中,所述目标查询语句用于从各个数据库系统中查询数据;
从预先配置的数据安全信息中,确定各个数据库系统对应的目标策略;其中,所述数据安全信息包括各个数据库系统中数据内容对应的数据脱敏策略,所述目标策略为所述目标查询语句所需查询数据对应的数据脱敏策略;
基于各个数据库系统对应的目标策略,对所述目标查询语句进行重写,得到各个数据库系统对应的、能够数据脱敏的待下发查询语句;
针对每个数据库系统,基于该数据库系统对应的待下发查询语句,从该数据库系统中,获取经过数据脱敏的查询结果。
2.根据权利要求1所述的方法,其特征在于,所述从预先配置的数据安全信息中,确定各个数据库系统对应的目标策略,包括:
从所述目标查询语句中,获取用于数据脱敏分析的第一解析内容;
从预先配置的数据安全信息中,选取与所述第一解析内容相匹配的数据内容所对应的数据脱敏策略,得到各个数据库系统对应的目标策略。
3.根据权利要求2所述的方法,其特征在于,所述数据安全信息还包括:各个数据库系统中数据内容对应的权限级别;
所述从预先配置的数据安全信息中,选取与所述第一解析内容相匹配的数据内容所对应的数据脱敏策略,得到各个数据库系统对应的目标策略,包括:
若与所述第一解析内容相匹配的数据内容对应的权限级别,不高于所述目标查询语句的访问端的用户权限级别,则从预先配置的数据安全信息中,选取与所述第一解析内容相匹配的数据内容所对应的数据脱敏策略,得到各个数据库系统对应的目标策略。
4.根据权利要求1所述的方法,其特征在于,各个数据库系统中数据内容对应的数据脱敏策略,包括:各个指定列与用户自定义函数UDF的函数信息的对应关系;和/或,关于行和/或列的过滤条件;
各个数据库系统对应的目标策略包括:
所述目标查询语句所涉及指定列与UDF的函数信息的对应关系,和/或,所述目标查询语句所涉及行和/或列的过滤条件。
5.根据权利要求4所述的方法,其特征在于,若各个数据库系统中的数据内容的数据脱敏策略包括:各个指定列与用户自定义函数UDF的函数信息的对应关系,所述方法还包括:
将各个指定列对应的UDF,下发至各个指定列所属的数据库系统,其中,各个指定列所属的数据库系统用于利用所接收到的UDF,进行数据脱敏处理。
6.根据权利要求1-5任一项所述的方法,其特征在于,每一数据库系统的待下发查询语句中,写入有该数据库系统对应的目标策略;
所述针对每个数据库系统,基于该数据库系统对应的待下发查询语句,从该数据库系统中,获取经过数据脱敏的查询结果,包括:
针对每个数据库系统,将该数据库系统对应的待下发查询语句,发送给该数据库系统,以使该数据库系统基于接收到的待下发查询语句的查询范围,获取查询结果,并利用接收到的待下发查询语句中该数据库系统对应的目标策略,对所述查询结果进行数据脱敏处理,将经过数据脱敏的查询结果反馈给所述预设的驱动程序;
接收各个数据库系统反馈的经过数据脱敏的查询结果。
7.根据权利要求1-5任一项所述的方法,其特征在于,所述基于各个数据库系统对应的目标策略,对所述目标查询语句进行重写,得到各个数据库系统对应的、能够数据脱敏的待下发查询语句,包括:
采用关于内联视图的重写方式,基于各个数据库系统对应的目标策略,对所述目标查询语句进行重写,得到各个数据库系统对应的、能够数据脱敏的待下发查询语句。
8.一种数据访问系统,其特征在于,包括:访问端、预设的驱动程序和各个数据库系统,所述预设的驱动程序与各个数据库系统相通信;
所述访问端,用于生成目标查询语句,并向所述预设的驱动程序发送所述目标查询语句,所述目标查询语句用于从各个数据库系统中查询数据;
所述预设的驱动程序,用于获取所述目标查询语句;从预先配置的数据安全信息中,确定各个数据库系统对应的目标策略,其中,所述数据安全信息包括各个数据库系统中数据内容对应的数据脱敏策略,所述目标策略为所述目标查询语句所需查询数据对应的数据脱敏策略;基于各个数据库系统对应的目标策略,对所述目标查询语句进行重写,得到各个数据库系统对应的、能够数据脱敏的待下发查询语句;针对每个数据库系统,基于该数据库系统对应的待下发查询语句,从该数据库系统中,获取经过数据脱敏的查询结果;
每一数据库系统,用于基于该数据库系统对应的待下发查询语句,从该数据库系统中,获取经过数据脱敏的查询结果,并反馈给所述预设的驱动程序。
9.一种数据访问装置,应用于预设的驱动程序,所述预设的驱动程序与各个数据库系统相通信;所述装置包括:
第一获取模块,用于获取目标查询语句;其中,所述目标查询语句用于从各个数据库系统中查询数据;
确定模块,用于从预先配置的数据安全信息中,确定各个数据库系统对应的目标策略;其中,所述数据安全信息包括各个数据库系统中数据内容对应的数据脱敏策略,所述目标策略为所述目标查询语句所需查询数据对应的数据脱敏策略;
重写模块,用于基于各个数据库系统对应的目标策略,对所述目标查询语句进行重写,得到各个数据库系统对应的、能够数据脱敏的待下发查询语句;
第二获取模块,针对每个数据库系统,基于该数据库系统对应的待下发查询语句,从该数据库系统中,获取经过数据脱敏的查询结果。
10.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一所述的方法步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一所述的方法步骤。
CN202110848877.6A 2021-07-27 2021-07-27 一种数据访问方法、装置及系统 Pending CN113535754A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110848877.6A CN113535754A (zh) 2021-07-27 2021-07-27 一种数据访问方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110848877.6A CN113535754A (zh) 2021-07-27 2021-07-27 一种数据访问方法、装置及系统

Publications (1)

Publication Number Publication Date
CN113535754A true CN113535754A (zh) 2021-10-22

Family

ID=78089132

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110848877.6A Pending CN113535754A (zh) 2021-07-27 2021-07-27 一种数据访问方法、装置及系统

Country Status (1)

Country Link
CN (1) CN113535754A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114116683A (zh) * 2022-01-27 2022-03-01 深圳市明源云科技有限公司 计算平台的多语法处理方法、设备及可读存储介质
CN114625764A (zh) * 2022-02-23 2022-06-14 南方电网数字电网研究院有限公司 基于混合引擎的大数据处理系统与方法
CN114925400A (zh) * 2022-05-27 2022-08-19 杭州帕拉迪网络科技有限公司 数据动态脱敏方法和装置

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107194276A (zh) * 2017-05-03 2017-09-22 上海上讯信息技术股份有限公司 数据库动态脱敏方法及设备
CN108446570A (zh) * 2018-02-28 2018-08-24 四川新网银行股份有限公司 一种数据脱敏方法及装置
CN111274610A (zh) * 2020-01-21 2020-06-12 京东数字科技控股有限公司 一种数据脱敏方法、装置及脱敏服务平台
CN111428141A (zh) * 2020-04-23 2020-07-17 北京中安星云软件技术有限公司 基于驱动代理的应用和数据库访问行为关联的方法及装置
CN111475525A (zh) * 2020-03-05 2020-07-31 平安科技(深圳)有限公司 基于结构化查询语言的脱敏方法、及其相关设备
CN111782682A (zh) * 2020-06-30 2020-10-16 北京金山云网络技术有限公司 数据查询方法、装置、设备及存储介质
CN112765658A (zh) * 2021-01-15 2021-05-07 杭州数梦工场科技有限公司 一种数据脱敏方法、装置及电子设备和存储介质
CN112860749A (zh) * 2021-03-05 2021-05-28 中国农业银行股份有限公司广州分行 数据处理方法、装置、计算机设备和存储介质
CN112989412A (zh) * 2021-03-18 2021-06-18 城云科技(中国)有限公司 一种基于sql语句解析的数据脱敏方法及装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107194276A (zh) * 2017-05-03 2017-09-22 上海上讯信息技术股份有限公司 数据库动态脱敏方法及设备
CN108446570A (zh) * 2018-02-28 2018-08-24 四川新网银行股份有限公司 一种数据脱敏方法及装置
CN111274610A (zh) * 2020-01-21 2020-06-12 京东数字科技控股有限公司 一种数据脱敏方法、装置及脱敏服务平台
CN111475525A (zh) * 2020-03-05 2020-07-31 平安科技(深圳)有限公司 基于结构化查询语言的脱敏方法、及其相关设备
CN111428141A (zh) * 2020-04-23 2020-07-17 北京中安星云软件技术有限公司 基于驱动代理的应用和数据库访问行为关联的方法及装置
CN111782682A (zh) * 2020-06-30 2020-10-16 北京金山云网络技术有限公司 数据查询方法、装置、设备及存储介质
CN112765658A (zh) * 2021-01-15 2021-05-07 杭州数梦工场科技有限公司 一种数据脱敏方法、装置及电子设备和存储介质
CN112860749A (zh) * 2021-03-05 2021-05-28 中国农业银行股份有限公司广州分行 数据处理方法、装置、计算机设备和存储介质
CN112989412A (zh) * 2021-03-18 2021-06-18 城云科技(中国)有限公司 一种基于sql语句解析的数据脱敏方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114116683A (zh) * 2022-01-27 2022-03-01 深圳市明源云科技有限公司 计算平台的多语法处理方法、设备及可读存储介质
CN114625764A (zh) * 2022-02-23 2022-06-14 南方电网数字电网研究院有限公司 基于混合引擎的大数据处理系统与方法
CN114925400A (zh) * 2022-05-27 2022-08-19 杭州帕拉迪网络科技有限公司 数据动态脱敏方法和装置
CN114925400B (zh) * 2022-05-27 2024-05-14 杭州帕拉迪网络科技有限公司 数据动态脱敏方法和装置

Similar Documents

Publication Publication Date Title
CN113535754A (zh) 一种数据访问方法、装置及系统
WO2019210758A1 (zh) 数据保护方法、装置及存储介质
US9384361B2 (en) Distributed event system for relational models
US9361330B2 (en) System and method for consistent embedded search across enterprise applications with an enterprise crawl and search framework
EP3468145B1 (en) Automated vulnerability grouping
US10891357B2 (en) Managing the display of hidden proprietary software code to authorized licensed users
CN113711218A (zh) 协同智能的约束查询以及约束计算
CN115758459A (zh) 数据权限管理方法及装置
US10242037B2 (en) Index suggestion engine for relational databases
CN116541372A (zh) 一种数据资产治理方法及系统
CN115238247A (zh) 基于零信任数据访问控制系统的数据处理方法
DE112022000878T5 (de) Datensatzmultiplexer für datenverarbeitungssystem
EP3876098A1 (en) Centralized multi-tenancy as a service in cloud-based computing environment
CN112613075A (zh) 权限的确定方法及装置、存储介质及电子装置
US20200257809A1 (en) Managing the sharing of common library packages with subscribers
WO2015150792A1 (en) An improved database access control method and system
US8561132B2 (en) Access control apparatus, information management apparatus, and access control method
CN114238273A (zh) 数据库管理方法、装置、设备及存储介质
CN113127906A (zh) 基于c/s架构的统一权限管理平台、方法及存储介质
CN115935421B (zh) 一种数据产品发布方法、系统及存储介质
CN118133267A (zh) 一种基于Ranger的权限管理方法、设备及介质
CN114282195A (zh) 应用权限管理方法、装置、计算机设备、存储介质
CN117332430A (zh) 一种用户动态数据权限控制方法及系统
CN116521703A (zh) 查询引擎中数据源的调整方法及相关设备
CN116432223A (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