CN111756752A - 对数据库的访问权限的控制方法、装置及电子设备 - Google Patents

对数据库的访问权限的控制方法、装置及电子设备 Download PDF

Info

Publication number
CN111756752A
CN111756752A CN202010594599.1A CN202010594599A CN111756752A CN 111756752 A CN111756752 A CN 111756752A CN 202010594599 A CN202010594599 A CN 202010594599A CN 111756752 A CN111756752 A CN 111756752A
Authority
CN
China
Prior art keywords
client
request
database
data
query
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
CN202010594599.1A
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.)
Beijing Kingsoft Cloud Network Technology Co Ltd
Original Assignee
Beijing Kingsoft Cloud Network 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 Beijing Kingsoft Cloud Network Technology Co Ltd filed Critical Beijing Kingsoft Cloud Network Technology Co Ltd
Priority to CN202010594599.1A priority Critical patent/CN111756752A/zh
Publication of CN111756752A publication Critical patent/CN111756752A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services

Abstract

本发明提供了一种对数据库的访问权限的控制方法、装置及电子设备,涉及数据处理技术领域,该方法应用于代理服务模块,代理服务模块与分布式数据查询引擎通信连接,分布式数据查询引擎与数据库通信连接;该方法包括:接收用户基于客户端发送的连接请求,并基于连接请求对用户进行身份认证,如果身份认证通过,则与客户端建立通信连接通道以接收客户端发送的查询请求,其中,查询请求包括用户名和待查询数据信息;根据预存的用户名与可访问数据信息的对应关系,确定客户端是否具有访问数据库中与待查询数据信息对应的数据的权限;如果是,将该查询请求转发至访问数据库中与待查询数据信息对应的数据的。本发明可以提升访问数据库的安全性。

Description

对数据库的访问权限的控制方法、装置及电子设备
技术领域
本发明涉及数据处理技术领域,尤其是涉及一种对数据库的访问权限的控制方法、装置及电子设备。
背景技术
现有的一些分布式数据查询引擎,在对用户的身份认证环节,仅仅是简单的判定用户是否具有对某个数据库的访问权限。而在云计算的使用场景中,为了最高效率的利用计算等资源,通常一个分布式数据查询引擎系统需要同时为多个租户提供数据查询服务,因此当将现有的分布式数据查询引擎部署在云计算场景下时,会带来租户之间数据不隔离的问题,尤其是对分布式数据库来说,例如:A租户和B租户的数据共同存储在C数据库的不同数据表中,因此,当A租户通过对C数据库的认证之后,A租户也可以访问B租户的相关数据,这存在严重的安全隐患。
发明内容
本发明的目的在于提供一种对数据库的访问权限的控制方法、装置及电子设备,以提高访问在基于分布式数据查询引擎的场景下对数据库访问的安全性。
本发明实施例提供了一种对数据库的访问权限的控制方法,应用于代理服务模块,所述代理服务模块与所述分布式数据查询引擎通信连接,所述分布式数据查询引擎与所述数据库通信连接;所述方法包括:接收用户基于客户端发送的连接请求,并基于所述连接请求对所述用户进行身份认证;如果身份认证通过,则与所述客户端建立通信连接通道以接收客户端发送的查询请求,其中,所述查询请求包括用户名和待查询数据信息;根据预存的用户名与可访问数据信息的对应关系,确定所述客户端是否具有访问所述数据库中与所述待查询数据信息对应的数据的权限;如果是,将所述查询请求转发至所述分布式数据查询引擎,以使得所述分布式数据查询引擎根据所述查询请求对所述数据库进行查询,得到查询结果。
进一步地,所述接收客户端发送的连接请求,并基于所述连接请求对所述客户端进行身份认证的步骤包括:接收客户端发送的连接请求;基于所述连接请求向所述客户端发送认证请求;接收所述客户端发送的身份验证数据包,其中,所述身份验证数据包包括第一令牌,所述第一令牌是所述客户端根据所述认证请求和预存的用户密钥进行加密而生成;基于预设的第二令牌对所述身份验证数据包中的第一令牌进行验证。
进一步地,所述待查询数据信息包括数据库名称、数据表名称和字段名称;所述预存的用户名与可访问数据信息的对应关系包括:用户名与数据库名称的对应关系和/或用户名与数据表名称的对应关系。
进一步地,将所述查询请求转发至所述分布式数据查询引擎的步骤,包括:确定所述待查询数据信息对应的数据源类型;将所述数据源类型添加到所述查询请求中,得到更新后的查询请求;将所述更新后的查询请求转发至所述分布式数据查询引擎。
进一步地,所述分布式数据查询引擎包括主协调服务器和备协调服务器;将所述查询请求转发至所述分布式数据查询引擎的步骤,包括:探测所述主协调服务器是否可用;如果所述主协调服务器不可用,探测所述备协调服务器是否可用;如果所述备协调服务器可用,将所述查询请求转发至所述备协调服务器。
进一步地,在将所述查询请求转发至所述分布式数据查询引擎之后,所述方法还包括:接收所述分布式数据查询引擎基于所述查询请求返回的查询结果;将所述查询结果发送至所述客户端。
本发明实施例还提供了一种对数据库的访问权限的控制装置,应用于代理服务模块,所述代理服务模块与分布式数据查询引擎通信连接,所述分布式数据查询引擎与所述数据库通信连接;所述装置包括:身份认证模块,用于接收用户基于客户端发送的连接请求,并基于所述连接请求对所述用户进行身份认证;通道建立模块,用于如果身份认证通过,则与所述客户端建立通信连接通道以接收客户端发送的查询请求,其中,所述查询请求包括用户名和待查询数据信息;权限确定模块,用于根据预存的用户名与可访问数据信息的对应关系,确定所述客户端是否具有访问所述数据库中与所述待查询数据信息对应的数据的权限;转发模块,用于在所述权限确定模块的确定结果为是时,将所述查询请求转发至所述分布式数据查询引擎,以使得所述分布式数据查询引擎根据所述查询请求对所述数据库进行查询,得到查询结果。
进一步地,所述身份认证模块还用于:接收所述客户端发送的连接请求;基于所述连接请求向所述客户端发送认证请求;接收所述客户端发送的身份验证数据包,其中,所述身份验证数据包包括第一令牌,所述第一令牌是所述客户端根据所述认证请求和预存的用户密钥进行加密而生成;基于预设的第二令牌对所述身份验证数据包中的第一令牌进行验证。
本发明实施例还提供了一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述对数据库的访问权限的控制方法任一项所述的方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述的对数据库的访问权限的控制方法。
本发明实施例提供的对数据库的访问权限的控制方法、装置及电子设备中,该方法应用于代理服务模块,代理服务模块与分布式数据查询引擎通信连接,分布式数据查询引擎与数据库通信连接;该方法包括:接收用户基于客户端发送的连接请求,并基于连接请求对用户进行身份认证,如果身份认证通过则与客户端建立通信连接通道以接收客户端发送的查询请求(包括用户名和待查询数据信息),然后根据预存的用户名与可访问数据信息的对应关系,确定客户端是否具有访问数据库中与待查询数据信息对应的数据的权限,并在确定客户端具有访问数据库中与待查询数据信息对应的数据权限时,将该查询请求转发至分布式数据查询引擎,以使得分布式数据查询引擎根据查询请求对数据库进行查询,得到查询结果。这样通过代理服务模块实现了基于待查询数据信息的访问控制,使得用户只能查询自身访问权限内的数据,也即实现了不同用户的访问隔离,降低了信息泄露风险,从而提升了基于分布式数据查询引擎的场景下对数据库访问的安全性。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种Presto系统架构意图;
图2为本发明实施例提供的一种对数据库的访问权限的控制方法、装置及电子设备的应用环境示意图;
图3为本发明实施例提供的一种对数据库的访问权限的控制方法的流程示意图;
图4为本发明实施例提供的另一种对数据库的访问权限的控制方法的流程示意图;
图5为本发明实施例提供的对数据库的访问权限的控制装置的结构示意图;
图6为本发明实施例提供的一种电子设备的结构示意图;
图7为本发明实施例提供的一种数据查询系统的结构示意图;
图8为本发明实施例提供的一种Coordinator故障接管服务的架构图。
具体实施方式
下面将结合实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有的分布式数据查询引擎有多种,例如开源的分布式数据查询引擎有Presto、Spark、Spark SQL、MapReduce、tez等。这些分布式数据查询引擎,在对用户的身份认证环节,仅仅是简单的判定用户是否具有对某个数据库的访问权限。而具有多租户的云计算的使用场景中,由于不能实现租户之间数据不隔离的问题,导致存在严重的安全隐患。
以Presto为例,参见图1所示的Presto系统架构意图。
如图1所示,一个Presto系统包括一个协调模块Coordinator和多个执行模块Worker。每个执行模块均在协调模块上进行注册,从而与协调模块通信连接。协调模块用于接收客户端发送的查询请求,在对客户端进行身份验证之后,将查询请求解析为多个执行计划,然后将各个执行计划分发到各个执行模块,各个执行模块通过与数据库进行交互来执行查询任务,并将查询结果返回给协调模块,协调模块再将查询结果返回给客户端。
其中,Presto在对客户端进行身份验证的环节中,安全性依赖于LDAP(Lightweight Directory Access Protocol,轻量级目录访问协议)服务。LADP服务运行在TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联协议)或者其他的面向连接的传输服务之上,能够实现基本的用户鉴权功能。发明人在实施本申请的过程中发现,基于LDAP服务的鉴权功能,Presto服务的数据读取是基于数据库维度,而没有关联到用户权限,导致LADP服务无法实现不同用户的访问隔离,例如:A租户和B租户的数据共同存储在C数据库的不同数据表中,因此,当A租户通过LDAP服务的鉴权后,A租户也可以访问B租户的相关数据,这会导致Presto存在严重的安全隐患。
基于此,本发明实施例提供的一种对数据库的访问权限的控制方法、装置及电子设备,通过开发一个代理服务模块,通过该代理服务模块对从客户端发送至分布式数据查询引擎的请求进行身份验证和权限控制,可以做到数据表级别的访问权限控制,避免直接将分布式数据查询引擎的接口暴露给客户端,从而避免出现信息泄露,提升数据查询系统的安全性。
参见图2所示的一种对数据库的访问权限的控制方法、装置及电子设备的应用环境示意图。需要说明的是,图2是以将本发明应用在Presto系统为例进行介绍,并不代表本发明必须使用在Presto上,本发明也可以使用在除了Presto之外的其他分布式数据查询引擎,例如Spark、Spark SQL、MapReduce、tez等。
如图2所示,客户端与分布式数据查询引擎Presto之间设置有代理服务模块(也可以称之为Presto-Proxy)。该代理服务模块可以部署在一台服务器上,该服务器可以是虚拟机也可以是物理机,本发明不做限定。其中,代理服务模块与分布式数据查询引擎通信连接,分布式数据查询引擎与数据库通信连接,该代理服务模块可以为基于TCP协议的服务程序,客户端基于TCP协议发送至分布式数据查询引擎的查询请求需要先由代理服务模块接收,经过该代理服务模块的鉴权等一系列处理后将查询请求转发到分布式数据查询引擎的服务器,从而实现将分布式数据查询引擎屏蔽在代理服务模块后面,客户端无法直接访问分布式数据查询引擎。
代理服务模块也可以兼容JDBC:MySQL协议,用户可以基于客户端使用JDBC:MySQL协议与代理服务模块进行通信进而访问分布式数据查询引擎,在调用数据时更加方便、快捷。需要说明的是,虽然本实施例中,代理服务模块兼容JDBC:MySQL协议,但本发明的保护范围不限于此,在其他实施例中,代理服务模块可以根据需要选择兼容的通信协议。
为便于对本实施例进行理解,下面对本发明实施例所公开的一种对数据库的访问权限的控制方法进行详细介绍。
本发明实施例提供了一种对数据库的访问权限的控制方法,该方法可以由上述代理服务模块执行。参见图3所示的一种对数据库的访问权限的控制方法的流程示意图,该方法主要包括如下步骤S302至步骤S308:
步骤S302,接收用户基于客户端发送的连接请求,并基于连接请求对用户进行身份认证。其中,连接请求可以包括客户端的ID(Identity document,身份证识别号),该连接请求可以为基于TCP通信协议的连接请求。在一种实施方式中,代理服务模块接收客户端发送的连接请求后,可进一步接收客户端发送的认证请求,该认证请求中可以包括随机字符串,从而利用加密算法和该随机字符串对预存的用户密码进行加密得到第一令牌,并通过比对该第一令牌与运存的第二令牌对用户的身份进行认证。
步骤S304,如果身份认证通过,则与客户端建立通信连接通道以接收客户端发送的查询请求。
其中,查询请求包括用户名和待查询数据信息。客户端与代理服务模块建立连接后,客户端可以发送查询请求给代理服务模块,该查询请求包括用户ID(Identitydocument,账号)和待查询数据信息,待查询数据信息可以包括数据库名称、数据表名称和字段名称。代理服务模块通过对该查询请求进行解析,可以得到该用户ID和待查询数据信息。需要说明的是,用户也可以进行模糊查询,例如待查询数据信息中的字段名可以以“*”代替,从而不限制查询的字段。
步骤S306,根据预存的用户名与可访问数据信息的对应关系,确定客户端是否具有访问数据库中与待查询数据信息对应的数据的权限。
其中,预存的用户名与可访问数据信息的对应关系包括:用户名与数据库名称的对应关系和/或用户名与数据表名称的对应关系。代理服务模块内预先配置有不同用户ID对应的可访问数据信息,每个用户ID只能访问自身的可访问数据信息内的相关数据,这些信息可以存储在预设的元数据库中。基于此,上述步骤S306可以通过如下过程实现:在预设的元数据库中查找用户名对应的可访问数据信息;判断待查询数据信息是否属于可访问数据信息;如果属于,确定客户端具有访问数据库中与待查询数据信息对应的数据的权限;如果不属于,确定客户端不具有访问数据库中与待查询数据信息对应的数据的权限。当确定客户端具有访问数据库中与待查询数据信息对应的数据的权限时,代理服务模块执行步骤S308;当确定客户端不具有访问数据库中与待查询数据信息对应的数据的权限时,代理服务模块可以向客户端返回没有访问权限或拒绝访问等的消息。
在数据库开通时,代理服务模块先对客户端进行授权,确定用户可访问的数据库权限,即用户可访问哪些数据库,以及数据库中的哪些表等。代理服务模块可以基于步骤S304得到的用户ID来查找用户名对应的可访问数据信息,可访问数据信息可以包括可访问的数据库名称、数据表名称和字段名称等。
步骤S308,当判断结果为是时,将上述查询请求转发至分布式数据查询引擎,以使得分布式数据查询引擎根据查询请求对数据库进行查询,得到查询结果。
考虑到数据库与数据源类型具有映射关系,客户端发送的查询请求中不带数据源类型,而数据库是跨数据源的,因此可以将相应的数据源类型添加到查询请求中,再将其转发至分布式数据查询引擎,以符合用户当前的使用习惯。基于此,上述步骤S308可以通过如下过程实现:确定待查询数据信息对应的数据源类型;将该数据源类型添加到查询请求中,得到更新后的查询请求;将更新后的查询请求转发至分布式数据查询引擎,从而通过分布式数据查询引擎根据查询请求对数据库进行查询,得到查询结果。代理服务模块可以在元数据库中查找数据库名对应的数据源类型,来得到待查询数据信息对应的数据源类型。其中,数据源类型可以包括对象存储系统、系型数据库、MongoDB或Kafka等。
本发明实施例中,上述对数据库的访问权限的控制通过代理服务模块实现了基于待查询数据信息的访问控制,使得用户只能查询自身访问权限内的数据,也即实现了不同用户的访问隔离,降低了信息泄露风险,从而提升了访问数据库的安全性。
上述代理服务模块还用于在与客户端建立连接之前,对客户端进行鉴权。基于此,本发明实施例提供了一种接收客户端发送的连接请求,并基于所述连接请求对所述客户端进行身份认证的实施方式,参见如下步骤1至步骤4:
步骤1,接收客户端发送的连接请求。其中,连接请求可以包括客户端的ID,代理服务模块将根据该ID对客户端进行认证。
步骤2,基于连接请求向客户端发送认证请求。其中,认证请求可以包括随机字符串。在一种实施方式中,在接收到客户端发送的连接请求后,可以生成随机字符串,并将包括有该随机字符串的认证请求发送至该ID对应的客户端,以对该客户端进行认证。
步骤3,接收客户端发送的身份验证数据包。其中,身份验证数据包包括第一令牌,第一令牌是客户端根据认证请求和预存的用户密钥进行加密而生成。
步骤4,基于预设的第二令牌对身份验证数据包中的第一令牌进行验证。其中,在对数据库的访问权限进行认证前,代理服务模块可以利用加密算法和上述随机字符串预先对用户密钥进行加密,以生成第二令牌,在一种具体的实施方式中,当第一令牌与第二令牌一致时,可以生成认证成功消息,当第一令牌与第二令牌不一致时,则可以生成认证失败消息。
对于上述步骤S308,本发明实施例还提供了一种将查询请求转发至分布式数据查询引擎的实施方式,具体的,可以确定待查询数据信息对应的数据源类型,并将数据源类型添加到查询请求中,得到更新后的查询请求,然后将更新后的查询请求转发至分布式数据查询引擎。其中,数据源类型可以包括对象存储系统、系型数据库、MongoDB或Kafka等,用以表征数据库的源信息,通过将数据源类型添加到查询请求中,可以使分布式数据查询引擎接收到更新后的查询请求时,在数据源类型对应的数据库中进行查询,得到查询结果。
上述代理服务模块还用于将分布式数据查询引擎返回的查询结果同步返回给客户端。基于此,在将查询请求转发至分布式数据查询引擎之后,上述方法还包括:接收分布式数据查询引擎基于查询请求返回的查询结果;将该查询结果发送至客户端。
另外,考虑到现有的有些分布式数据查询引擎服务架构中存在可靠性缺陷,以Presto为例,Presto架构中,以协调服务器Coordinator为接收所有访问请求的接入口,但协调服务器只有一个实施例节点,如果协调服务器发生故障,则导致整个服务不可用,因此存在单点服务缺陷,本实施例中,可以在主协调服务器的基础上,搭建一个备协调服务器,备协调服务器定时探测主协调服务器的存活状态,并将配置信息定时同步到备协调服务器。基于此,上述分布式数据查询引擎包括主协调服务器和备协调服务器;上述步骤S308可以包括:探测主协调服务器是否可用;如果主协调服务器不可用,探测备协调服务器是否可用;如果备协调服务器可用,将查询请求转发至备协调服务器。这样保障了分布式数据查询引擎的可靠性,实现了分布式数据查询引擎的高可用。
为了便于理解,本发明实施例以分布式数据查询引擎采用Presto服务器为例进行说明,本实施例还提供了客户端、代理服务模块和Presto服务器之间的交互过程。客户端与代理服务模块的交互主要分为两个阶段,分别为握手认证阶段和命令执行阶段,参见图4所示的另一种对数据库的访问权限的控制方法的流程示意图,握手认证阶段的一次正常的交互过程如下:
步骤S402,客户端向代理服务模块发起连接请求,其中,连接请求包括客户端的ID,该连接请求可以为基于TCP通信协议的连接请求。
步骤S404,代理服务模块在基于连接请求与客户端建立通信连接之后,向客户端发送认证请求。其中,认证请求包括随机字符串。
步骤S406,客户端在接收到认证请求之后,基于认证请求中的随机字符串和预设的加密算法对预存的用户密码进行加密生成第一令牌,并将所述第一令牌发送至代理服务模块。其中,加密的算法可以采用现有的加密算法。本步骤的目的是防止以明文的方式发送用户密码被他人截获后造成数据安全风险。
步骤S408,代理服务模块在接收到第一令牌之后,验证第一令牌与预存的第二令牌是否一致(如果一致,则生成认证成功消息,如果失败,则生成认证失败消息)。代理服务模块根据验证结果生成认证结果消息,并向客户端发送认证结果消息。其中,代理服务模块基于预设的加密算法(与客户端加密算法一致)和之前生成的随机字符串对预存的用户密码进行运算生成第二令牌。
客户端与代理服务模块的连接建立完成之后,进入命令执行阶段,命令执行阶段还存在代理服务模块与Presto服务器之间的交互。如图3所示,命令执行阶段的一次正常的交互过程如下:
步骤S410,客户端向代理服务模块发起查询请求。
步骤S412,代理服务模块根据查询请求中的待查询数据信息确定客户端具有访问权限。
步骤S414,代理服务模块向Presto服务器转发查询请求。
步骤S416,Presto服务器向代理服务模块返回查询结果。
步骤S418,代理服务模块向客户端返回查询结果。
这样实现了一个完整的Presto服务访问流程。
对应于上述的对数据库的访问权限的控制方法,本发明实施例还提供了一种对数据库的访问权限的控制装置,该装置应用于上述代理服务模块,代理服务模块与分布式数据查询引擎通信连接,分布式数据查询引擎与数据库通信连接,参见图5所示的一种对数据库的访问权限的控制装置的结构示意图,该装置包括:
身份认证模块52,用于接收用户基于客户端发送的连接请求,并基于所述连接请求对所述用户进行身份认证;
通道建立模块54,用于如果身份认证通过,则与所述客户端建立通信连接通道以接收客户端发送的查询请求,其中,查询请求包括用户名和待查询数据信息;
权限确定模块56,用于预存的用户名与可访问数据信息的对应关系,确定客户端是否具有访问数据库中与待查询数据信息对应的数据的权限;
转发模块58,用于在权限确定模块56的确定结果为是时,将查询请求转发至分布式数据查询引擎,以使得分布式数据查询引擎根据查询请求对数据库进行查询,得到查询结果。
本发明实施例中,上述对数据库的访问权限的控制装置通过代理服务模块实现了基于待查询数据信息的访问控制,使得用户只能查询自身访问权限内的数据,也即实现了不同用户的访问隔离,降低了信息泄露风险,从而提升了访问Presto服务的安全性。
可选地,上述身份认证模块52还用于:接收所述客户端发送的连接请求;基于所述连接请求向所述客户端发送认证请求;接收所述客户端发送的身份验证数据包,其中,所述身份验证数据包包括第一令牌,所述第一令牌是所述客户端根据所述认证请求和预存的用户密钥进行加密而生成;基于预设的第二令牌对所述身份验证数据包中的第一令牌进行验证。
上述待查询数据信息包括数据库名称、数据表名称和字段名称;上述预存的用户名与可访问数据信息的对应关系包括:用户名与数据库名称的对应关系和/或用户名与数据表名称的对应关系。
可选地,上述转发模块58具体用于:确定待查询数据信息对应的数据源类型;将该数据源类型添加到查询请求中,得到更新后的查询请求;将更新后的查询请求转发至分布式数据查询引擎。
可选地,上述分布式数据查询引擎包括主协调服务器和备协调服务器;上述转发模块58还用于:探测主协调服务器是否可用;如果主协调服务器不可用,探测备协调服务器是否可用;如果备协调服务器可用,将查询请求转发至备协调服务器。
可选地,在将查询请求转发至分布式数据查询引擎之后,上述转发模块58还用于:接收分布式数据查询引擎基于查询请求返回的查询结果;将该查询结果发送至客户端。
本实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
参见图6,本发明实施例还提供一种电子设备,例如服务器,该电子设备包括:处理器60,存储器61,总线62和通信接口63,所述处理器60、通信接口63和存储器61通过总线62连接;处理器60用于执行存储器61中存储的可执行模块,例如计算机程序。
其中,存储器61可能包含随机存取存储器(Random Access Memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory,简称NVM),例如至少一个磁盘存储器。通过至少一个通信接口63(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线62可以是工业标准体系结构(Industry Standard Architecture,简称ISA)总线、外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,简称EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器61用于存储程序,所述处理器60在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器60中,或者由处理器60实现。
处理器60可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器60中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器60可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器61,处理器60读取存储器61中的信息,结合其硬件完成上述方法的步骤。
本发明实施例还提供了一种数据查询系统,参见图7所示的一种数据查询系统的结构示意图,该数据查询系统包括上述的代理服务模块72,以及与代理服务模块72连接的Presto服务器74。
本实施例所提供的数据查询系统,其实现原理及产生的技术效果和前述代理服务模块实施例相同,为简要描述,数据查询系统实施例部分未提及之处,可参考前述代理服务模块实施例中相应内容。
考虑到现有的Presto服务存在单点服务缺陷,参见图8所示的一种Coordinator故障接管服务的架构图,上述代理服务模块72采用HA Proxy,HA Proxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理;上述Presto服务器74包括主Coordinator(主协调服务器)和备Coordinator(备协调服务器),主Coordinator和备Coordinator均与HA Proxy连接。当存在客户端的外部调用时,HA Proxy将相应的任务转发给主Coordinator或备Coordinator。这样在主Coordinator异常时,可以由备Coordinator接管Presto服务,从而解决了Presto服务的单点服务问题。
为了实现故障自动切换,在主Coordinator可用时,备Coordinator启动防火墙,防火墙拒绝HA Proxy的调用服务;在主Coordinator不可用时,备Coordinator关闭防火墙。
上述备Coordinator定时探测主Coordinator的存活状态,并将配置信息定时同步到备Coordinator。上述防火墙优选软件防火墙,以降低开发成本。例如,可以采用Linux系统自带的iptables作为防火墙。
具体实现时,主Coordinator服务和备Coordinator服务可以均处于启动状态,主Coordinator和备Coordinator的对外服务端口保持一致,不同的是备Coordinator启用iptables作为防火墙,防火墙策略拒绝外部对该端口的调用服务,因此HA Proxy会认为备Coordinator是不可用状态,也就不会将任务转发到备Coordinator。当备Coordinator探测主Coordinator异常时,可以将本机iptables防火墙关闭,此时HA Proxy探测备Coordinator服务是可用状态,这样下次就会将任务转发到备Coordinator,从而实现快速服务接管。
需要说明的是,在其他实施例中,上述Presto服务器74也可以采用另一种故障接管方法:采用Presto配置文件管理,当变更对外服务的Coordinator时,如在监控系统监控到主Coordinator发生故障时,重启Presto服务,重启过程中Presto服务暂时不可用。
综上,本发明实施例提供的数据查询系统具有以下优点:提高了访问Presto服务的安全性,可以实现数据表级别的访问控制;实现了Presto服务的高可用,避免了Coordinator单点故障时服务不可用。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行前面方法实施例中所述的对数据库的访问权限的控制方法。该计算机可读存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,简称ROM)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种对数据库的访问权限的控制方法,其特征在于,应用于代理服务模块,所述代理服务模块与分布式数据查询引擎通信连接,所述分布式数据查询引擎与所述数据库通信连接;所述方法包括:
接收用户基于客户端发送的连接请求,并基于所述连接请求对所述用户进行身份认证;
如果身份认证通过,则与所述客户端建立通信连接通道以接收客户端发送的查询请求,其中,所述查询请求包括用户名和待查询数据信息;
根据预存的用户名与可访问数据信息的对应关系,确定所述客户端是否具有访问所述数据库中与所述待查询数据信息对应的数据的权限;
如果是,将所述查询请求转发至所述分布式数据查询引擎,以使得所述分布式数据查询引擎根据所述查询请求对所述数据库进行查询,得到查询结果。
2.根据权利要求1所述的方法,其特征在于,所述接收客户端发送的连接请求,并基于所述连接请求对所述客户端进行身份认证的步骤包括:
接收所述客户端发送的连接请求;
基于所述连接请求向所述客户端发送认证请求;
接收所述客户端发送的身份验证数据包,其中,所述身份验证数据包包括第一令牌,所述第一令牌是所述客户端根据所述认证请求和预存的用户密钥进行加密而生成;
基于预设的第二令牌对所述身份验证数据包中的第一令牌进行验证。
3.根据权利要求1所述的方法,其特征在于,所述待查询数据信息包括数据库名称、数据表名称和字段名称;
所述预存的用户名与可访问数据信息的对应关系包括:用户名与数据库名称的对应关系和/或用户名与数据表名称的对应关系。
4.根据权利要求1所述的方法,其特征在于,将所述查询请求转发至所述分布式数据查询引擎的步骤,包括:
确定所述待查询数据信息对应的数据源类型;
将所述数据源类型添加到所述查询请求中,得到更新后的查询请求;
将所述更新后的查询请求转发至所述分布式数据查询引擎。
5.根据权利要求1所述的方法,其特征在于,所述分布式数据查询引擎包括主协调服务器和备协调服务器;将所述查询请求转发至所述分布式数据查询引擎的步骤,包括:
探测所述主协调服务器是否可用;
如果所述主协调服务器不可用,探测所述备协调服务器是否可用;
如果所述备协调服务器可用,将所述查询请求转发至所述备协调服务器。
6.根据权利要求1-5中任一项所述的方法,其特征在于,在将所述查询请求转发至所述分布式数据查询引擎之后,所述方法还包括:
接收所述分布式数据查询引擎基于所述查询请求返回的查询结果;
将所述查询结果发送至所述客户端。
7.一种对数据库的访问权限的控制装置,其特征在于,应用于代理服务模块,所述代理服务模块与分布式数据查询引擎通信连接,所述分布式数据查询引擎与所述数据库通信连接;所述装置包括:
身份认证模块,用于接收用户基于客户端发送的连接请求,并基于所述连接请求对所述用户进行身份认证;
通道建立模块,用于如果身份认证通过,则与所述客户端建立通信连接通道以接收客户端发送的查询请求,其中,所述查询请求包括用户名和待查询数据信息;
权限确定模块,用于根据预存的用户名与可访问数据信息的对应关系,确定所述客户端是否具有访问所述数据库中与所述待查询数据信息对应的数据的权限;
转发模块,用于在所述权限确定模块的确定结果为是时,将所述查询请求转发至所述分布式数据查询引擎,以使得所述分布式数据查询引擎根据所述查询请求对所述数据库进行查询,得到查询结果。
8.根据权利要求7所述的装置,其特征在于,所述身份认证模块还用于:
接收所述客户端发送的连接请求;
基于所述连接请求向所述客户端发送认证请求;
接收所述客户端发送的身份验证数据包,其中,所述身份验证数据包包括第一令牌,所述第一令牌是所述客户端根据所述认证请求和预存的用户密钥进行加密而生成;
基于预设的第二令牌对所述身份验证数据包中的第一令牌进行验证。
9.一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至6任一项所述的方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行权利要求1-6中任一项所述的方法。
CN202010594599.1A 2020-06-24 2020-06-24 对数据库的访问权限的控制方法、装置及电子设备 Pending CN111756752A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010594599.1A CN111756752A (zh) 2020-06-24 2020-06-24 对数据库的访问权限的控制方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010594599.1A CN111756752A (zh) 2020-06-24 2020-06-24 对数据库的访问权限的控制方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN111756752A true CN111756752A (zh) 2020-10-09

Family

ID=72677411

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010594599.1A Pending CN111756752A (zh) 2020-06-24 2020-06-24 对数据库的访问权限的控制方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN111756752A (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112104668A (zh) * 2020-11-10 2020-12-18 成都掌控者网络科技有限公司 一种分布式权限流程分离控制方法及装置
CN112351099A (zh) * 2020-11-06 2021-02-09 北京金山云网络技术有限公司 数据访问方法、装置和服务器
CN112559871A (zh) * 2020-12-21 2021-03-26 深圳供电局有限公司 一种信息查询方法及其系统、服务器设备
CN112783979A (zh) * 2021-01-28 2021-05-11 北京读我网络技术有限公司 分布式数据库访问方法、装置及分布式数据库管理系统
CN112800399A (zh) * 2021-01-26 2021-05-14 苏州浪潮智能科技有限公司 一种Presto查询平台的权限管理方法、系统及相关装置
CN112817997A (zh) * 2021-02-24 2021-05-18 广州市品高软件股份有限公司 一种分布式计算引擎使用动态用户访问s3对象存储的方法及装置
CN112818016A (zh) * 2021-01-21 2021-05-18 广州汇通国信科技有限公司 基于api的实时、离线数据查询方法及系统
CN112866239A (zh) * 2021-01-15 2021-05-28 广州视源电子科技股份有限公司 一种代理认证装置、方法及电子设备
CN113254994A (zh) * 2021-05-27 2021-08-13 平安普惠企业管理有限公司 数据库访问方法、装置、存储介质和计算机设备
CN114036489A (zh) * 2021-11-11 2022-02-11 国网山东省电力公司 一种基于大数据的信息安全管理方法及系统
CN115174423A (zh) * 2022-07-12 2022-10-11 中国建设银行股份有限公司 Kafka的查询方法、装置、存储介质及设备
CN116028980A (zh) * 2023-03-29 2023-04-28 北京中安星云软件技术有限公司 一种数据库防绕过方法、系统、设备及介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104090897A (zh) * 2013-12-19 2014-10-08 深圳市腾讯计算机系统有限公司 访问元数据的方法、服务器及系统
US20140331337A1 (en) * 2013-05-02 2014-11-06 International Business Machines Corporation Secure isolation of tenant resources in a multi-tenant storage system using a gatekeeper
CN104679886A (zh) * 2015-03-17 2015-06-03 浪潮集团有限公司 一种多租户模式下Hive数据隔离的方法和装置
CN107818127A (zh) * 2017-09-09 2018-03-20 国网浙江省电力公司 一种用于多源数据的查询方法及系统
CN108549683A (zh) * 2018-04-03 2018-09-18 联想(北京)有限公司 数据查询方法以及系统
CN108920494A (zh) * 2018-05-21 2018-11-30 深圳市彬讯科技有限公司 多租户数据库的隔离访问方法、服务端以及存储介质
US20190182226A1 (en) * 2017-12-11 2019-06-13 International Business Machines Corporation Provide access to data storage services in a network environment
CN110008244A (zh) * 2019-03-29 2019-07-12 国家计算机网络与信息安全管理中心 一种数据查询方法及数据查询装置
CN110232292A (zh) * 2019-05-06 2019-09-13 平安科技(深圳)有限公司 数据访问权限认证方法、服务器及存储介质
CN110837515A (zh) * 2019-11-06 2020-02-25 北京天融信网络安全技术有限公司 一种基于数据库的数据处理方法及电子设备
CN111090803A (zh) * 2019-11-22 2020-05-01 贝壳技术有限公司 一种数据处理方法、装置、电子设备和存储介质

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140331337A1 (en) * 2013-05-02 2014-11-06 International Business Machines Corporation Secure isolation of tenant resources in a multi-tenant storage system using a gatekeeper
CN104090897A (zh) * 2013-12-19 2014-10-08 深圳市腾讯计算机系统有限公司 访问元数据的方法、服务器及系统
CN104679886A (zh) * 2015-03-17 2015-06-03 浪潮集团有限公司 一种多租户模式下Hive数据隔离的方法和装置
CN107818127A (zh) * 2017-09-09 2018-03-20 国网浙江省电力公司 一种用于多源数据的查询方法及系统
US20190182226A1 (en) * 2017-12-11 2019-06-13 International Business Machines Corporation Provide access to data storage services in a network environment
CN108549683A (zh) * 2018-04-03 2018-09-18 联想(北京)有限公司 数据查询方法以及系统
CN108920494A (zh) * 2018-05-21 2018-11-30 深圳市彬讯科技有限公司 多租户数据库的隔离访问方法、服务端以及存储介质
CN110008244A (zh) * 2019-03-29 2019-07-12 国家计算机网络与信息安全管理中心 一种数据查询方法及数据查询装置
CN110232292A (zh) * 2019-05-06 2019-09-13 平安科技(深圳)有限公司 数据访问权限认证方法、服务器及存储介质
CN110837515A (zh) * 2019-11-06 2020-02-25 北京天融信网络安全技术有限公司 一种基于数据库的数据处理方法及电子设备
CN111090803A (zh) * 2019-11-22 2020-05-01 贝壳技术有限公司 一种数据处理方法、装置、电子设备和存储介质

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112351099A (zh) * 2020-11-06 2021-02-09 北京金山云网络技术有限公司 数据访问方法、装置和服务器
CN112104668B (zh) * 2020-11-10 2021-02-05 成都掌控者网络科技有限公司 一种分布式权限流程分离控制方法及装置
CN112104668A (zh) * 2020-11-10 2020-12-18 成都掌控者网络科技有限公司 一种分布式权限流程分离控制方法及装置
CN112559871A (zh) * 2020-12-21 2021-03-26 深圳供电局有限公司 一种信息查询方法及其系统、服务器设备
CN112866239A (zh) * 2021-01-15 2021-05-28 广州视源电子科技股份有限公司 一种代理认证装置、方法及电子设备
CN112818016A (zh) * 2021-01-21 2021-05-18 广州汇通国信科技有限公司 基于api的实时、离线数据查询方法及系统
CN112800399B (zh) * 2021-01-26 2024-02-09 苏州浪潮智能科技有限公司 一种Presto查询平台的权限管理方法、系统及相关装置
CN112800399A (zh) * 2021-01-26 2021-05-14 苏州浪潮智能科技有限公司 一种Presto查询平台的权限管理方法、系统及相关装置
CN112783979A (zh) * 2021-01-28 2021-05-11 北京读我网络技术有限公司 分布式数据库访问方法、装置及分布式数据库管理系统
CN112817997A (zh) * 2021-02-24 2021-05-18 广州市品高软件股份有限公司 一种分布式计算引擎使用动态用户访问s3对象存储的方法及装置
CN113254994A (zh) * 2021-05-27 2021-08-13 平安普惠企业管理有限公司 数据库访问方法、装置、存储介质和计算机设备
CN114036489A (zh) * 2021-11-11 2022-02-11 国网山东省电力公司 一种基于大数据的信息安全管理方法及系统
CN115174423A (zh) * 2022-07-12 2022-10-11 中国建设银行股份有限公司 Kafka的查询方法、装置、存储介质及设备
CN116028980A (zh) * 2023-03-29 2023-04-28 北京中安星云软件技术有限公司 一种数据库防绕过方法、系统、设备及介质
CN116028980B (zh) * 2023-03-29 2023-08-25 北京中安星云软件技术有限公司 一种数据库防绕过方法、系统、设备及介质

Similar Documents

Publication Publication Date Title
CN111756752A (zh) 对数据库的访问权限的控制方法、装置及电子设备
US11757661B2 (en) Systems, methods, and devices for multi-stage provisioning and multi-tenant operation for a security credential management system
US8813225B1 (en) Provider-arbitrated mandatory access control policies in cloud computing environments
US20190207812A1 (en) Hybrid cloud network configuration management
WO2020057163A1 (zh) Mec平台部署方法及装置
US9401954B2 (en) Scaling a trusted computing model in a globally distributed cloud environment
US20180091391A1 (en) Device State Management
US7844710B2 (en) Proxy caching for directory services
JP2016535880A (ja) 単一のフレキシブルかつプラガブルOAuthサーバを備える複数のリソースサーバ、OAuth保護したREST式OAuth許諾管理サービス、およびモバイルアプリケーションシングルサインオンするOAuthサービス
US11368462B2 (en) Systems and method for hypertext transfer protocol requestor validation
US10318747B1 (en) Block chain based authentication
US10356155B2 (en) Service onboarding
EP3977696B1 (en) Method, node and computer program of lawful interception systems and networks
US10757015B2 (en) Multi-tenant routing management
CN112514328A (zh) 通信系统、提供商节点、通信节点以及用于向客户节点提供虚拟网络功能的方法
CN113206866A (zh) 一种多区域场景下服务提供方法、装置及存储介质
US11777742B2 (en) Network device authentication
WO2020063002A1 (zh) 一种数据管理方法、装置和服务器
CN114301682B (zh) 数据处理方法、装置和终端设备
US10498536B2 (en) System for permitting access to scoped applications
US20220337572A1 (en) Communication between server systems in different network regions
US20200410126A1 (en) Database Access Method and Apparatus, Computing Device, and Computer Program Product
US9609080B2 (en) Systems and methods for device identity delegation for application software
US10789179B1 (en) Decentralized access management in information processing system utilizing persistent memory
US20230246818A1 (en) Secure data migration

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20201009