数据访问控制方法、设备、存储介质和数据库系统与流程

    专利2022-07-08  106

    本发明实施例涉及数据库
    技术领域
    :,尤其涉及一种数据访问控制方法、设备、存储介质和数据库系统。
    背景技术
    ::随着大数据时代的来临,数据的规模呈现指数级的增长,数据的检索存储需求也随着发生变化。传统的单机数据库在面临海量数据请求的情况下性能会急剧下降,因此业界提出采用分布式数据,将完整的数据或计算任务拆分到多个节点的数据库子系统中,每个子系统只处理请求中的一个子集,最后计算合并结果来达到提升性能的目的。目前分布式数据库的权限访问控制设计较为简易,大多采用静态文件配置或是完全复用数据库子系统本身已有的权限管控功能,且多为dac(discretionaryaccesscontrol,自主访问控制)或rbac(role-basedaccesscontrol,基于角色的访问控制)模型。在上述权限访问控制方法中,以vitess为代表的分布式数据库简单采用静态的acl(accesscontrollists,访问控制列表)方式,在数据库启动时读取文本文件中预定义的用户、库表及操作类型(分为read、write及admin)间的关系,运行时根据静态的关系判断允许或拒绝用户的访问,一旦需要变更规则需要重启整个系统,并且操作类型的定义粒度太粗;而直接复用节点数据库子系统(例如采用mysql)本身已有的权限管控功能,虽然能够做到细粒度的访问控制,但由于无法事先预测某个请求涉及哪些数据节点上的分片,每个节点必须重复保存相同的权限信息,并且由于数据存在多副本,势必造成大量的数据冗余,在进行节点扩展时问题更为突显。此外,如果采用的是dac或者rbac的模型,可能存在用户将被授权的权限授予他人的情况,造成权限的扩散,不满足等级保护的要求。技术实现要素:本发明实施例提供数据访问控制方法、设备、存储介质和数据库系统,实现了高度安全、高性能、高可用性的数据访问控制。第一方面,本发明实施例提供了一种数据访问控制方法,应用于数据库系统中的访问控制节点,所述方法包括:接收数据库系统中路由节点发送的第一权限查询信息,所述第一权限查询信息包括:客户端的访问请求中的用户标识,和所述请求访问的静态访问对象的静态对象标识;在数据库系统的各存储节点中查询与第一权限查询信息中用户标识对应的元数据,并根据查询得到的元数据和所述静态对象标识判断所述客户端是否具有对所述静态访问对象的访问权限;将访问权限判断结果返回至所述路由节点,以供所述路由节点执行与所述权限判断结果匹配的操作响应。第二方面,本发明实施例还提供了一种数据访问控制方法,应用于数据库系统中的路由节点,所述方法包括:接收并读取客户端的访问请求;当所述访问请求中包括静态访问对象时,获取所述访问请求中的用户标识和所述静态访问对象的访问对象标识信息,生成第一权限查询信息;将所述第一权限查询信息发送至数据库系统中的任一访问控制节点,并接收所述访问控制节点反馈的对所述客户端的权限判断结果;执行与所述权限判断结果匹配的响应操作。第三方面,本发明实施例还提供了一种数据访问控制方法,应用于数据库系统中的计算节点,所述方法包括:接收并读取数据库系统中路由节点发送的客户端的访问请求;当所述访问请求中包括动态访问对象时,获取所述访问请求中的用户标识和所述动态访问对象的访问对象标识信息,生成第二权限查询信息;将所述第二权限查询信息发送至数据库系统中的任一访问控制节点,并接收所述访问控制节点反馈的对所述客户端的权限判断结果;执行与所述权限判断结果匹配的响应操作。第四方面,本发明实施例还提供了一种访问控制节点设备,包括处理器和存储器,所述存储器用于存储指令,当所述指令执行时使得所述处理器执行以下操作:接收数据库系统中路由节点发送的第一权限查询信息,所述第一权限查询信息包括:客户端的访问请求中的用户标识,和所述请求访问的静态访问对象的静态对象标识;在数据库系统的各存储节点中查询与第一权限查询信息中用户标识对应的元数据,并根据查询得到的元数据和所述静态对象标识判断所述客户端是否具有对所述静态访问对象的访问权限;将访问权限判断结果返回至所述路由节点,以供所述路由节点执行与所述权限判断结果匹配的操作响应。第五方面,本发明实施例还提供了一种路由节点设备,包括处理器和存储器,所述存储器用于存储指令,当所述指令执行时使得所述处理器执行以下操作:接收并读取客户端的访问请求;当所述访问请求中包括静态访问对象时,获取所述访问请求中的用户标识和所述静态访问对象的访问对象标识信息,生成第一权限查询信息;将所述第一权限查询信息发送至数据库系统中的任一访问控制节点,并接收所述访问控制节点反馈的对所述客户端的权限判断结果;执行与所述权限判断结果匹配的响应操作。第六方面,本发明实施例还提供了一种计算节点设备,包括处理器和存储器,所述存储器用于存储指令,当所述指令执行时使得所述处理器执行以下操作:接收并读取数据库系统中路由节点发送的客户端的访问请求;当所述访问请求中包括动态访问对象时,获取所述访问请求中的用户标识和所述动态访问对象的访问对象标识信息,生成第二权限查询信息;将所述第二权限查询信息发送至数据库系统中的任一访问控制节点,并接收所述访问控制节点反馈的对所述客户端的权限判断结果;执行与所述权限判断结果匹配的响应操作。第七方面,本发明实施例还提供了一种数据库系统,包括至少一个访问控制节点,至少一个路由节点、至少一个计算节点以及至少一个存储节点;所述访问控制节点,用于执行本发明第一方面中所述的方法;所述路由节点,用于执行本发明第二方面中任一所述的方法;所述计算节点,用于执行本发明第三方面中任一所述的方法;所述存储节点,用于存储有与客户端对应的元数据。第八方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如本发明实施例中任一实施例所述的数据访问控制方法。本发明实施例的技术方案,通过引入描述访问主体用户对访问客体数据的权限信息的元数据,使主体和客体的安全属性都是固定的,普通用户无法随意修改,保证了权限的可控性,且通过将访问控制过程部署在多个节点上,可消除单点故障,提升分布式数据库并行事务的访问控制性能,实现了高度安全、高性能、高可用性的数据访问控制。附图说明图1为本发明实施例一提供的一种数据访问控制方法的流程图。图2为本发明实施例二提供的一种数据访问控制方法的流程图。图3为本发明实施例二提供的又一种数据访问控制方法的流程图。图4为本发明实施例三提供的一种数据访问控制方法的流程图。图5为本发明实施例四提供的一种数据访问控制方法的流程图。图6为本发明实施例五提供的一种计算机设备的结构示意图。具体实施方式下面结合附图和实施例对本发明实施例作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明实施例,而非对本发明实施例的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明实施例相关的部分而非全部结构。本文使用的术语“数据访问控制”可以包括对用户的身份验证和对用户进行数据访问的权限管理。本文使用的术语“元数据”可以是存储在数据库中,用于描述访问主体用户对访问客体数据的访问权限的数据。本文使用的术语“数据分片”可以是数据库系统中将数据通过关系代数的基本运算在各节点中的存储形式。本文使用的术语“从数据库实例”可以是数据库分组架构中的从库,可以提供数据库读服务。本文使用的术语“主数据库实例”可以是数据库分组架构中的主库,可以提供数据库写服务。本文使用的术语“轮询”可以是依次询问目标节点设备是否可以执行目标操作。为了便于理解,将本发明实施例的主要发明构思进行简述。现有技术中,需要对数据库进行数据访问控制。现有技术中分布式数据库的权限访问控制设计较为简易,无法结合分布式数据库的自身特点,造成权限数据冗余存储以及权限扩散、无法满足等级保护的要求。基于上述思考,发明人创造性的提出,通过数据库系统中的访问控制节点,接收数据库系统中路由节点发送的第一权限查询信息,所述第一权限查询信息包括:客户端的访问请求中的用户标识,和所述请求访问的静态访问对象的静态对象标识;在数据库系统的各存储节点中查询与第一权限查询信息中用户标识对应的元数据,并根据查询得到的元数据和所述静态对象标识判断所述客户端是否具有对所述静态访问对象的访问权限;将访问权限判断结果返回至所述路由节点,以供所述路由节点执行与所述权限判断结果匹配的操作响应,可以优化现有技术中的分布式数据库的数据访问控制方法,实现高度安全、高性能、高可用性的数据访问控制。实施例一图1为本发明实施例一提供的一种数据访问控制方法的流程图。本发明实施例可适用于对数据访问请求进行权限判定的情况,该方法可以由数据访问控制装置来执行,该装置可采用软件和/或硬件的方式实现,并一般可集成在计算机设备中。例如,数据库系统中的访问控制节点。访问控制节点可以是数据库系统中的访问控制模块通过分片部署的节点,可以用于权限鉴定。如图1所示,本发明实施例的方法具体包括:步骤110、接收数据库系统中路由节点发送的第一权限查询信息。其中,所述第一权限查询信息包括:客户端的访问请求中的用户标识,和所述请求访问的静态访问对象的静态对象标识。路由节点可以是数据库系统中的路由服务模块通过分片部署的节点,可以用于接收外部请求、分发请求、汇总结果。客户端可以是任意可以向数据库系统发送数据访问请求的用户终端。访问请求可以是对数据库中的任意数据进行读操作或写操作的请求语句。用户标识可以包括任意可以使用户身份被识别的信息,例如可以是用户名。静态访问对象可以是数据库系统中的路由节点在访问请求语句中直接读取的数据对象。静态对象标识可以包括任意可以使静态访问对象被识别的信息,可以包括数据对象在数据库中的完整表示信息,例如数据对象obj可以是列,则可以用一个三元组obj=(数据库标识,表名标识,列标识)来表示,数据库标识、表名标识和列标识分别可以是数据库、表和列的名称或id。相应的,多个客户端可以同时向数据库系统的多个路由节点发送数据访问请求,各路由节点接收客户端的访问请求后分发至不同的访问控制节点。访问请求通常携带有作为访问主体的客户端向路由节点提供的用户标识,以及客户端请求访问的访问客体数据对象的标识信息。路由节点接收访问请求后,可以在访问请求语句中直接读取用户标识和静态访问对象的静态对象标识,并通过随机询问的方式确定数据库系统中部署的任意访问控制节点,将用户标识和静态对象标识作为第一权限查询信息发送给该访问控制节点。步骤120、在数据库系统的各存储节点中查询与第一权限查询信息中用户标识对应的元数据,并根据查询得到的元数据和所述静态对象标识判断所述客户端是否具有对所述静态访问对象的访问权限。其中,存储节点可以是数据库系统中的存储模块通过分片部署的节点,可以用于存储数据分片。各所述存储节点中可以包括至少一个数据分片,各所述数据分片中可以包括一个主数据库实例和至少一个从数据库实例,以保证数据在主数据库实例和从数据库实例中部署多个副本。元数据可以是描述访问主体用户对访问客体数据的权限信息的数据,对应于任意用户的元数据中可以包括该用户对各访问对象的访问权限。元数据可以以分片的形式存储在各存储节点中,优选的,元数据的分片存储于至少一个存储节点的第一个数据分片中,以使元数据可以但不限于以结构化库表形式组织管理。相应的,访问控制节点在接收到第一权限查询信息后,可以根据第一权限查询信息中的用户标识确定出存储有该用户标识对应的元数据的存储节点,并执行读操作,读取元数据中该用户对于第一权限查询信息中的静态对象标识所对应的静态访问对象的访问权限,从而可以判断发送访问请求的客户端是否具有对访问请求中静态访问对象的访问权限。可选的,可以采用轮询的方式确定存储有用户标识对应的元数据的存储节点,并存储节点的第一个数据分片中采用轮询的方式确定任意从数据库实例,可以是第一个询问到的空闲从数据库实例,在该从数据库实例中执行读操作,获取用户标识对应的元数据。步骤130、将访问权限判断结果返回至所述路由节点,以供所述路由节点执行与所述权限判断结果匹配的操作响应。其中,访问权限判断结果可以包括客户端具有对该静态访问对象的访问权限和客户端不具有对该静态访问对象的访问权限。与权限判断结果匹配的操作响应可以是预设的任意可以由路由节点执行的操作响应,例如与客户端具有对该静态访问对象的访问权限匹配的操作响应可以包括执行访问请求语句或将访问请求语句发送至预设下级节点,与客户端不具有对该静态访问对象的访问权限匹配的操作响应可以包括停止执行访问请求语句或向客户端返回拒绝访问信息等。相应的,访问控制节点根据路由节点提供的第一权限查询信息和存储节点中的元数据可以完成对客户端访问权限的判定并返回权限判定结果,实现对静态访问对象的访问控制。本发明实施例提供了一种数据访问控制方法,通过引入描述访问主体用户对访问客体数据的权限信息的元数据,使主体和客体的安全属性都是固定的,普通用户无法随意修改,保证了权限的可控性,且通过将访问控制过程部署在多个节点上,可消除单点故障,提升分布式数据库并行事务的访问控制性能,实现了高度安全、高性能、高可用性的数据访问控制。可选的,在上述实施例的基础上,所述方法还包括:在接收到访问控制规则变更通知时,在各所述存储节点的第一数据分片中的主数据库实例中执行写操作,以对所述元数据进行更新。其中,访问控制规则变更通知可以是路由节点在检测到访问控制规则变更时向访问控制节点发送的。访问控制规则可以包括访问主体用户对访问客体数据的访问权限判断规则。访问控制规则变更可以包括访问主体用户信息的权限变更,其来源可以是本数据库内的系统表,或通过可插拔的认证模块从外部用户认证源中获取等;访问控制规则变更还可以包括访问客体数据的权限信息变更,可以通过路由节点在接收到的访问请求语句读取,并在存储节点中执行。对于来自外部信息源的变更,可采取监听机制,监听信息源的操作日志等;对于变更发生在数据库内部的情况,采取回调机制,例如可以是在路由模块的所有实例中增加回调方法,则所有对主客体的变动会向访问控制模块发送访问控制规则变更通知。实施例二图2为本发明实施例二提供的一种数据访问控制方法的流程图。本发明实施例可以与上述一个或者多个实施例中各个可选方案结合,在本发明实施例中,在,可以还包括:接收数据库系统中计算节点发送的第二权限查询信息,所述第二权限查询信息中包括:客户端的访问请求中的用户标识,和所述请求访问的动态访问对象的动态对象标识;在数据库系统的各存储节点中查询与第二权限查询信息中用户标识对应的元数据,并根据查询得到的元数据和所述动态对象标识判断所述客户端是否具有对所述动态访问对象的访问权限;将权限判断结果返回至所述计算节点,以供所述计算节点执行与所述权限判断结果匹配的操作响应。如图2所示,本发明实施例的方法具体包括:步骤210、接收数据库系统中路由节点发送的第一权限查询信息。其中,所述第一权限查询信息包括:客户端的访问请求中的用户标识,和所述请求访问的静态访问对象的静态对象标识。步骤220、在数据库系统的各存储节点中查询与第一权限查询信息中用户标识对应的元数据,并根据查询得到的元数据和所述静态对象标识判断所述客户端是否具有对所述静态访问对象的访问权限。步骤230、将访问权限判断结果返回至所述路由节点,以供所述路由节点执行与所述权限判断结果匹配的操作响应。上述步骤的具体实施方式可以参考实施例一中提供的对应步骤的实施方式,在此不做赘述。步骤240、接收数据库系统中计算节点发送的第二权限查询信息。其中,所述第二权限查询信息中包括:客户端的访问请求中的用户标识,和所述请求访问的动态访问对象的动态对象标识。计算节点可以是数据库系统中的计算服务模块通过分片部署的节点,可以用于处理复杂请求。动态访问对象可以是数据库系统中的计算节点对访问请求语句进行解析得到的数据对象,示例性的,可以是计算节点解析访问请求语句中的视图对象view1的定义,得到动态访问对象为列column2。动态对象标识可以包括任意可以使动态访问对象被识别的信息,可以包括数据对象在数据库中的完整表示信息。相应的,计算节点可以接收路由节点发送的访问请求,并对访问请求进行语句解析,可以得到访问请求语句中的客户端用户标识和动态对象标识,并通过随机询问的方式确定数据库系统中部署的任意访问控制节点,将用户标识和动态对象标识作为第二权限查询信息发送给该访问控制节点。步骤250、在数据库系统的各存储节点中查询与第二权限查询信息中用户标识对应的元数据,并根据查询得到的元数据和所述动态对象标识判断所述客户端是否具有对所述动态访问对象的访问权限。相应的,访问控制节点在接收到第二权限查询信息后,可以根据第二权限查询信息中的用户标识确定出存储有该用户标识对应的元数据的存储节点,并执行读操作,读取元数据中该用户对于第二权限查询信息中的动态对象标识所对应的动态访问对象的访问权限,从而可以判断发送访问请求的客户端是否具有对访问请求中动态访问对象的访问权限。步骤260、将权限判断结果返回至所述计算节点,以供所述计算节点执行与所述权限判断结果匹配的操作响应。其中,与权限判断结果匹配的操作响应可以是预设的任意可以由计算节点执行的操作响应,例如与客户端具有对该动态访问对象的访问权限匹配的操作响应可以包括执行访问请求语句或将访问请求语句发送至预设下级节点,与客户端不具有对该动态访问对象的访问权限匹配的操作响应可以包括停止执行访问请求语句或向上级节点返回拒绝访问信息等。相应的,访问控制节点根据计算节点提供的第二权限查询信息和存储节点中的元数据可以完成对客户端访问权限的判定并返回权限判定结果,实现对动态访问对象的访问控制。本发明实施例提供了一种数据访问控制方法,通过引入描述访问主体用户对访问客体数据的权限信息的元数据,使主体和客体的安全属性都是固定的,普通用户无法随意修改,保证了权限的可控性,且通过将访问控制过程部署在多个节点上,可消除单点故障,提升分布式数据库并行事务的访问控制性能,实现了高度安全、高性能、高可用性的数据访问控制。本发明实施例还提供了一种具体实施方式。图3是本发明实施例二提供的又一种数据访问控制方法的流程图。如图3所示,访问请求发送至数据库系统,首先判断访问请求中是否包括静态访问对象。若访问请求中包括静态访问对象,则获取用户标识和静态对象标识,判断是否允许访问静态访问对象。若不允许访问静态访问对象,则判断是否处于事务中,若处于事务中,则回滚事务,再逐级返回报错信息;若不处于事务中,则直接逐级返回报错信息。若访问请求中不包括静态访问对象,或允许访问静态访问对象,则判断访问请求中是否包括动态访问对象。若访问请求中包括动态访问对象,则获取用户标识和动态对象标识,判断是否允许访问动态访问对象。若不允许访问动态访问对象,则判断是否处于事务中,若处于事务中,则回滚事务,再逐级返回报错信息;若不处于事务中,则直接逐级返回报错信息。若访问请求中不包括动态访问对象,或允许访问动态访问对象,则执行访问请求。示例性的,发送访问请求sql语句的客户端的用户标识为用户名“user1”。接收访问请求的数据库db1,其包含table1与table2两张分片表,以及在table2基础上建立的视图view1。其中,表table1的定义为:createtabletable1(column1bigint,…)…partitionbyhash(column1)usinghash;视图view1的定义:createviewview1asselectcolumn2fromdb1.table2;客户端user1发送的访问请求为:selectt.column1,v.column2fromdb1.table1astjoinview1asvont.column1=v.column2;此外,数据库db1中的某一存储节点中存储有与客户端user1对应的元数据,元数据中包括的权限信息有且仅有一条,为user1只允许访问表table1中的所有列。当客户端将上述访问请求发送至数据库db1的某个路由节点时,路由节点根据接收到的访问请求读取到用户标识user1和静态对象标识(db1,table1,column1),生成第一权限查询信息,而后通过随机询问某个访问控制节点,将该第一权限查询信息发送至该访问控制节点。该访问控制节点轮询读取某个存储节点的第一个分片内的某个从数据库实例中的元数据,判断出user1有权限访问表table1的column1列,并将该结果返回给路由节点。路由节点得到具有权限的结果,将访问请求下发到某个计算节点。计算节点逐语句解析视图对象view1的定义,得到用户标识user1和动态对象标识(table2,column2),生成第二权限查询信息,而后通过随机询问某个访问控制节点,将该第二权限查询信息发送至该访问控制节点。该访问控制节点轮询读取某个存储节点的第一个分片内的某个从数据库实例中的元数据,判断出user1不允许访问客体表table2的column2列,于是将判断结果返回给计算节点。路由节点得到缺少权限的结果,回滚整个事务并逐级上报缺少必要权限。实施例三图4为本发明实施例三提供的一种数据访问控制方法的流程图。本发明实施例可适用于对数据访问请求进行权限判定的情况,该方法可以由数据访问控制装置来执行,该装置可采用软件和/或硬件的方式实现,并一般可集成在计算机设备中。例如,数据库系统中的路由节点。如图4所示,本发明实施例的方法具体包括:步骤310、接收并读取客户端的访问请求。相应的,客户端可以通过随机询问或轮询等任意可实现方式在数据库系统中的至少一个路由节点中确定一个可用且空闲的路由节点,将访问请求发送至该路由节点。该路由节点可以接收并读取客户端发送的访问请求,并判断出该访问请求中是否包括静态访问对象。步骤320、当所述访问请求中包括静态访问对象时,获取所述访问请求中的用户标识和所述静态访问对象的访问对象标识信息,生成第一权限查询信息。相应的,路由节点可以从访问请求语句中直接读取用户标识和静态对象标识。步骤330、将所述第一权限查询信息发送至数据库系统中的任一访问控制节点,并接收所述访问控制节点反馈的对所述客户端的权限判断结果。相应的,路由节点可以采用随机询问的方式确定任意访问控制节点,将第一权限查询信息发送至该访问控制节点。步骤340、执行与所述权限判断结果匹配的响应操作。可选的,所述执行与所述权限判断结果匹配的响应操作,包括:当所述权限判断结果为所述客户端具有对所述静态访问对象的访问权限时,将所述访问请求发送至数据库系统中的任一计算节点;当所述权限判断结果为所述客户端不具有对所述静态访问对象的访问权限时,返回权限缺失错误信息至所述客户端。相应的,如果客户端具有对静态访问对象的访问权限,可以说明访问请求中对该静态访问对象的读或写请求允许被执行,则需要将访问请求发送该计算节点,以使计算节点对访问请求进行解析,获取访问请求中的动态访问对象。如果客户端不具有对静态访问对象的访问权限,可以说明访问请求中对该静态访问对象的读或写请求不允许被执行,则无需继续获取动态访问对象以及客户端对动态访问对象的访问权限,可以直接向客户端返回权限缺失错误信息。可选的,在所述返回权限缺失错误信息至所述客户端之前,还包括:当所述访问请求处于事务中时,回滚所述事务。相应的,如果客户端不具有对静态访问对象的访问权限,通过回滚事务可以将数据库中已执行的数据访问操作对数据库中数据的修改全部取消,确保数据库中数据的正确性和数据库事务的正常运行。本发明实施例提供了一种数据访问控制方法,通过引入描述访问主体用户对访问客体数据的权限信息的元数据,使主体和客体的安全属性都是固定的,普通用户无法随意修改,保证了权限的可控性,且通过将访问控制过程部署在多个节点上,可消除单点故障,提升分布式数据库并行事务的访问控制性能,实现了高度安全、高性能、高可用性的数据访问控制。可选的,在上述实施方式的基础上,所述方法还包括:在检测到访问控制规则变更时,发送访问控制规则变更通知至数据库系统中的任一访问控制节点,以供所述访问控制节点根据所述访问控制规则变更通知对所述元数据进行更新。实施例四图5为本发明实施例四提供的一种数据访问控制方法的流程图。本发明实施例可适用于对数据访问请求进行权限判定的情况,该方法可以由数据访问控制装置来执行,该装置可采用软件和/或硬件的方式实现,并一般可集成在计算机设备中。例如,数据库系统中的计算节点。如图5所示,本发明实施例的方法具体包括:步骤410、接收并读取数据库系统中路由节点发送的客户端的访问请求。相应的,路由节点可以通过随机询问或轮询等任意可实现方式在数据库系统中的至少一个计算节点中确定一个可用且空闲的计算节点,将访问请求发送至该计算节点。该计算节点可以接收并读取路由节点发送的访问请求,并判断出该访问请求中是否包括动态访问对象。步骤420、当所述访问请求中包括动态访问对象时,获取所述访问请求中的用户标识和所述动态访问对象的访问对象标识信息,生成第二权限查询信息。相应的,路由节点可以通过解析访问请求语句得到用户标识和动态对象标识。步骤430、将所述第二权限查询信息发送至数据库系统中的任一访问控制节点,并接收所述访问控制节点反馈的对所述客户端的权限判断结果。相应的,计算节点可以采用随机询问的方式确定任意访问控制节点,将第二权限查询信息发送至该访问控制节点。步骤440、执行与所述权限判断结果匹配的响应操作。可选的,所述执行与所述权限判断结果匹配的响应操作,包括:当所述权限判断结果为所述客户端具有对所述静态访问对象的访问权限时,将所述访问请求发送至数据库系统中与所述访问请求对应的存储节点;当所述权限判断结果为所述客户端不具有对所述静态访问对象的访问权限时,返回权限缺失错误信息至所述路由节点,以供所述路由节点将所述权限缺失错误信息返回至所述客户端。相应的,如果客户端具有对动态访问对象的访问权限,可以说明访问请求中对该动态访问对象的读或写请求允许被执行,则当客户端对访问请求中的静态访问对象和动态访问对象均具有访问权限时,可以将访问请求发送至存储节点,以使存储节点执行该访问请求语句,完成对访问对象数据的读操作或写操作。存储节点对访问请求执行完毕后,可以将执行结果通过计算节点和路由节点逐级返回至客户端。如果客户端不具有对动态访问对象的访问权限,可以说明访问请求中对该动态访问对象的读或写请求不允许被执行,则不可将访问请求发送至存储节点,可以向客户端返回权限缺失错误信息。可选的,在所述返回权限缺失错误信息至所述客户端之前,还包括:当所述访问请求处于事务中时,回滚所述事务。本发明实施例提供了一种数据访问控制方法,通过引入描述访问主体用户对访问客体数据的权限信息的元数据,使主体和客体的安全属性都是固定的,普通用户无法随意修改,保证了权限的可控性,且通过将访问控制过程部署在多个节点上,可消除单点故障,提升分布式数据库并行事务的访问控制性能,实现了高度安全、高性能、高可用性的数据访问控制。实施例五图6为本发明实施例五提供的一种计算机设备的结构示意图,如图6所示,该计算机设备包括处理器50、存储器51、输入装置52和输出装置53;计算机设备中处理器50的数量可以是一个或多个,图6中以一个处理器50为例;计算机设备中的处理器50、存储器51、输入装置52和输出装置53可以通过总线或其他方式连接,图6中以通过总线连接为例。存储器51作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据访问控制方法对应的程序指令/模块。处理器50通过运行存储在存储器51中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的数据访问控制方法。存储器51可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器51可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器51可进一步包括相对于处理器50远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。输入装置52可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置53可包括显示屏等显示设备。实施例六本发明实施例六提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时,实现本发明实施例所提供的数据访问控制方法。可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、smalltalk、c ,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或计算机设备上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。当前第1页1 2 3 当前第1页1 2 3 
    技术特征:

    1.一种数据访问控制方法,其特征在于,应用于数据库系统中的访问控制节点,所述方法包括:

    接收数据库系统中路由节点发送的第一权限查询信息,所述第一权限查询信息包括:客户端的访问请求中的用户标识,和所述请求访问的静态访问对象的静态对象标识;

    在数据库系统的各存储节点中查询与第一权限查询信息中用户标识对应的元数据,并根据查询得到的元数据和所述静态对象标识判断所述客户端是否具有对所述静态访问对象的访问权限;

    将访问权限判断结果返回至所述路由节点,以供所述路由节点执行与所述权限判断结果匹配的操作响应。

    2.根据权利要求1所述的方法,其特征在于,还包括:

    接收数据库系统中计算节点发送的第二权限查询信息,所述第二权限查询信息中包括:客户端的访问请求中的用户标识,和所述请求访问的动态访问对象的动态对象标识;

    在数据库系统的各存储节点中查询与第二权限查询信息中用户标识对应的元数据,并根据查询得到的元数据和所述动态对象标识判断所述客户端是否具有对所述动态访问对象的访问权限;

    将权限判断结果返回至所述计算节点,以供所述计算节点执行与所述权限判断结果匹配的操作响应。

    3.根据权利要求1或2所述的方法,其特征在于,在数据库系统的各存储节点中查询与第一权限查询信息或第二权限查询信息中用户标识对应的元数据,包括:

    采用轮询方式确定存储有所述用户标识对应的元数据的存储节点和所述存储节点的第一数据分片中的任一从数据库实例;

    在所述从数据库实例中执行读操作,获取所述用户标识对应的元数据。

    4.根据权利要求1或2所述的方法,其特征在于,还包括:

    在接收到访问控制规则变更通知时,在各所述存储节点的第一数据分片中的主数据库实例中执行写操作,以对所述元数据进行更新。

    5.一种数据访问控制方法,其特征在于,应用于数据库系统中的路由节点,所述方法包括:

    接收并读取客户端的访问请求;

    当所述访问请求中包括静态访问对象时,获取所述访问请求中的用户标识和所述静态访问对象的访问对象标识信息,生成第一权限查询信息;

    将所述第一权限查询信息发送至数据库系统中的任一访问控制节点,并接收所述访问控制节点反馈的对所述客户端的权限判断结果;

    执行与所述权限判断结果匹配的响应操作。

    6.根据权利要求5所述的方法,其特征在于,所述执行与所述权限判断结果匹配的响应操作,包括:

    当所述权限判断结果为所述客户端具有对所述静态访问对象的访问权限时,将所述访问请求发送至数据库系统中的任一计算节点;

    当所述权限判断结果为所述客户端不具有对所述静态访问对象的访问权限时,返回权限缺失错误信息至所述客户端。

    7.一种数据访问控制方法,其特征在于,应用于数据库系统中的计算节点,所述方法包括:

    接收并读取数据库系统中路由节点发送的客户端的访问请求;

    当所述访问请求中包括动态访问对象时,获取所述访问请求中的用户标识和所述动态访问对象的访问对象标识信息,生成第二权限查询信息;

    将所述第二权限查询信息发送至数据库系统中的任一访问控制节点,并接收所述访问控制节点反馈的对所述客户端的权限判断结果;

    执行与所述权限判断结果匹配的响应操作。

    8.根据权利要求7所述的方法,其特征在于,所述执行与所述权限判断结果匹配的响应操作,包括:

    当所述权限判断结果为所述客户端具有对所述静态访问对象的访问权限时,将所述访问请求发送至数据库系统中与所述访问请求对应的存储节点;

    当所述权限判断结果为所述客户端不具有对所述静态访问对象的访问权限时,返回权限缺失错误信息至所述路由节点,以供所述路由节点将所述权限缺失错误信息返回至所述客户端。

    9.一种访问控制节点设备,包括处理器和存储器,所述存储器用于存储指令,其特征在于,当所述指令执行时使得所述处理器执行以下操作:

    接收数据库系统中路由节点发送的第一权限查询信息,所述第一权限查询信息包括:客户端的访问请求中的用户标识,和所述请求访问的静态访问对象的静态对象标识;

    在数据库系统的各存储节点中查询与第一权限查询信息中用户标识对应的元数据,并根据查询得到的元数据和所述静态对象标识判断所述客户端是否具有对所述静态访问对象的访问权限;

    将访问权限判断结果返回至所述路由节点,以供所述路由节点执行与所述权限判断结果匹配的操作响应。

    10.根据权利要求9所述的设备,其特征在于,当所述指令执行时还使得所述处理器执行以下操作:

    接收数据库系统中计算节点发送的第二权限查询信息,所述第二权限查询信息中包括:客户端的访问请求中的用户标识,和所述请求访问的动态访问对象的动态对象标识;

    在数据库系统的各存储节点中查询与第二权限查询信息中用户标识对应的元数据,并根据查询得到的元数据和所述动态对象标识判断所述客户端是否具有对所述动态访问对象的访问权限;

    将权限判断结果返回至所述计算节点,以供所述计算节点执行与所述权限判断结果匹配的操作响应。

    11.根据权利要求9或10所述的设备,其特征在于,所述处理器还设置为通过以下方式在数据库系统的各存储节点中查询与第一权限查询信息或第二权限查询信息中用户标识对应的元数据:

    采用轮询方式确定存储有所述用户标识对应的元数据的存储节点和所述存储节点的第一数据分片中的任一从数据库实例;

    在所述从数据库实例中执行读操作,获取所述用户标识对应的元数据。

    12.根据权利要求9或10所述的设备,其特征在于,当所述指令执行时还使得所述处理器执行以下操作:

    在接收到访问控制规则变更通知时,在各所述存储节点的第一数据分片中的主数据库实例中执行写操作,以对所述元数据进行更新。

    13.一种路由节点设备,包括处理器和存储器,所述存储器用于存储指令,其特征在于,当所述指令执行时使得所述处理器执行以下操作:

    接收并读取客户端的访问请求;

    当所述访问请求中包括静态访问对象时,获取所述访问请求中的用户标识和所述静态访问对象的访问对象标识信息,生成第一权限查询信息;

    将所述第一权限查询信息发送至数据库系统中的任一访问控制节点,并接收所述访问控制节点反馈的对所述客户端的权限判断结果;

    执行与所述权限判断结果匹配的响应操作。

    14.根据权利要求13所述的设备,其特征在于,所述处理器还设置为通过以下方式执行与所述权限判断结果匹配的响应操作:

    当所述权限判断结果为所述客户端具有对所述静态访问对象的访问权限时,将所述访问请求发送至数据库系统中的任一计算节点;

    当所述权限判断结果为所述客户端不具有对所述静态访问对象的访问权限时,返回权限缺失错误信息至所述客户端。

    15.一种计算节点设备,包括处理器和存储器,所述存储器用于存储指令,其特征在于,当所述指令执行时使得所述处理器执行以下操作:

    接收并读取数据库系统中路由节点发送的客户端的访问请求;

    当所述访问请求中包括动态访问对象时,获取所述访问请求中的用户标识和所述动态访问对象的访问对象标识信息,生成第二权限查询信息;

    将所述第二权限查询信息发送至数据库系统中的任一访问控制节点,并接收所述访问控制节点反馈的对所述客户端的权限判断结果;

    执行与所述权限判断结果匹配的响应操作。

    16.根据权利要求15所述的设备,其特征在于,所述处理器还设置为通过以下方式执行与所述权限判断结果匹配的响应操作:

    当所述权限判断结果为所述客户端具有对所述静态访问对象的访问权限时,将所述访问请求发送至数据库系统中与所述访问请求对应的存储节点;

    当所述权限判断结果为所述客户端不具有对所述静态访问对象的访问权限时,返回权限缺失错误信息至所述路由节点,以供所述路由节点将所述权限缺失错误信息返回至所述客户端。

    17.一种数据库系统,其特征在于,包括至少一个访问控制节点,至少一个路由节点、至少一个计算节点以及至少一个存储节点;

    所述访问控制节点,用于执行权利要求1-4中任一所述的方法;

    所述路由节点,用于执行权利要求5-6中任一所述的方法;

    所述计算节点,用于执行权利要求7-8中任一所述的方法;

    所述存储节点,用于存储有与客户端对应的元数据。

    18.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-4中、权利要求5-6中或权利要求7-8中任一所述的数据访问控制方法。

    技术总结
    本发明实施例公开了一种数据访问控制方法、设备、存储介质和数据库系统。其中,方法包括:接收数据库系统中路由节点发送的第一权限查询信息,所述第一权限查询信息包括:客户端的访问请求中的用户标识,和所述请求访问的静态访问对象的静态对象标识;在数据库系统的各存储节点中查询与第一权限查询信息中用户标识对应的元数据,并根据查询得到的元数据和所述静态对象标识判断所述客户端是否具有对所述静态访问对象的访问权限;将访问权限判断结果返回至所述路由节点,以供所述路由节点执行与所述权限判断结果匹配的操作响应。本发明实施例实现了高度安全、高性能、高可用性的数据访问控制。

    技术研发人员:蔡弋君;顾逸圣
    受保护的技术使用者:星环信息科技(上海)股份有限公司
    技术研发日:2020.12.02
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-20879.html

    最新回复(0)