权限管理的制作方法

文档序号:17697363发布日期:2019-05-17 21:43阅读:192来源:国知局
本公开涉及数据库
技术领域
:,尤其涉及一种权限管理方法及装置。
背景技术
::spark是一种基于内存计算的大数据计算框架,提供了分布式计算功能,将分布式存储的数据读入,同时将任务分发到各个节点进行计算。spark提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将spark部署在大量廉价硬件之上,形成集群。sparksql是一种基于spark的分布式sql(structuredquerylanguage,结构化查询语言)引擎,支持sql语句,极大的方便了熟悉关系型数据库的用户。权限管理指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授予权限的资源。相关技术中,sparksql不具有权限管理功能,降低了信息的安全性。技术实现要素:有鉴于此,本公开提出了一种权限管理方法及装置,能够在sparksql中实现权限管理功能。根据本公开的一方面,提供了一种权限管理方法,包括:接收到授权sql语句时,从所述授权sql语句中获取权限信息;通过调用第三方元数据管理组件的接口,将所述权限信息作为元数据保存在数据库中;接收到访问sql语句时,根据所述权限信息对所述访问sql语句的权限进行验证。根据本公开的另一方面,提供了一种权限管理装置,包括:获取模块,用于接收到授权sql语句时,从所述授权sql语句中获取权限信息;调用模块,用于通过调用第三方元数据管理组件的接口,将所述权限信息作为元数据保存在数据库中;验证模块,用于接收到访问sql语句时,根据所述权限信息对所述访问sql语句的权限进行验证。根据本公开的另一方面,提供了一种权限管理装置,包括:处理器;用于存储处理器可执行指令的机器可读存储介质;其中,所述处理器被配置为执行上述方法。根据本公开的另一方面,提供了一种机器可读存储介质,其上储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现上述方法。根据本公开各方面实施例的权限管理方法及装置能够通过授权sql语句将权限信息作为元数据,通过第三方元数据管理组件存储在数据库中,从而对用户授予访问某些资源的权限,并在接收到访问sql语句时,根据权限信息对访问sql语句的权限进行验证,实现了sparksql中的权限管理功能,提高了信息的安全性。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。附图说明包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。图1示出根据本公开一实施例的权限管理方法的流程图。图2示出了一种spark架构的示意图。图3示出根据本公开一实施例的权限管理方法的流程图。图4示出根据本公开一实施例的权限管理装置的框图。图5是根据一示例性实施例示出的一种用于权限管理的装置的框图。具体实施方式以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。图1示出根据本公开一实施例的权限管理方法的流程图。图2示出了一种spark架构的示意图。如图2所示,spark架构中包括driver(驱动器)、clustermanager(集群管理器)和workernode(工作节点)。其中,驱动器负责对应用程序进行调度、对task(任务)分配等进行管理,sparkcontext是整个分布式程序运行的起点。集群管理器负责工作节点资源的分配和管理。工作节点负责创建executor(执行器),将资源和任务进一步分配给执行器,并同步资源信息给集群管理器。其中,执行器是工作节点上的进程,负责对分配给该进程的任务进行处理。图1所示的权限管理方法可以应用于图2所示的spark架构中的驱动器。如图1所示,该权限管理方法包括:s11,接收到授权sql语句时,从所述授权sql语句中获取权限信息。sql指结构化查询语言,是一种数据库查询和程序设计语言,用于访问数据库系统。对数据库的访问操作可以包括:插入、查询、更新和删除等,sql语句可以用来实现上述访问操作。sql语句是一种描述性的语言,指明了访问任务,驱动器需要根据sql语句指定一个执行计划,该执行计划表明了如何完成所述访问任务,执行器执行该执行计划,从而实现访问任务。相关技术中,一条sql语句的处理流程包括词法解析、语法解析、优化、策略制定和执行。在词法解析阶段,sql语句经过parse(解析器)解析成unresolvedlogicalplan;在语法解析阶段,analyzer(分析器)结合catalog(数据字典)对unresolvedlogicalplan进行绑定,生成resolvedlogicalplan;在优化阶段,optimizer(优化器)对resolvedlogicalplan进行优化,生成optimizedlogicalplan;在策略制定阶段,sparkplan(执行计划模块)将optimizedlogicalplan转换成physicalplan。进入执行阶段,执行器将physicalplan转换成可执行物理计划,并执行该可执行物理计划,生成rdd(resilientdistributeddatasets,弹性分布式数据集)。其中,一条sql语句在进入执行阶段之前(词法解析、语法解析、优化和策略制定)都是在图2所示的驱动器执行,在执行时会被分发到图2所示的工作节点中的执行器执行。需要说明的是,在sql语句处理流程中,unresolvedlogicalplan、resolvedlogicalplan、optimizedlogicalplan均为逻辑计划。授权sql语句可以用于请求向某些用户授予以某些方式访问某些资源的权限,例如,请求向用户a授予对数据表a进行插入、删除等操作的权限;再例如,请求向用户b授予对数据表b的列a进行删除、更新等操作的权限。驱动器接收到授权sql语句时,可以从授权sql语句中获取权限信息。sparksql的语法文件中存储有sparksql所支持的语法,每条语法设置有对应的关键字。在词法解析阶段,驱动器可以根据sql语句的关键字,查找到sql语句对应的语法,进而按照语法对sql语句进行解析,确定出sql语句每一部分的含义。相关技术中,sparksql不支持对授权sql语句的解析。在本公开实施例中,在词法解析阶段,增加了对授权sql语句的解析功能,使得驱动器能够解析授权sql语句,从授权sql语句中获取权限信息。在一种可能的实现方式中,可以在sparksql的语法文件中添加授权语法,并为授权语法设置关键字,所述授权语法定义了授权用户标识、授权资源标识和授权类型。如此,步骤s11可以实现为:对接收到的sql语句进行词法解析,获取关键字;若所述关键字映射到授权语法,则按照所述授权语法,从所接收到的sql语句中获取授权用户标识、授权资源标识和授权类型,作为权限信息。其中,授权用户标识可以为用户名或者用户id等,授权资源标识可以为数据表名、数据表编号、列名、列编号等,对此本公开不做限制。在一种可能的实现方式中,在一个授权sql语句中,授权类型可以包括插入和/或查询和/或更新和/或删除。在一种可能的实现方式中,每种授权类型对应于一个值,驱动器可以根据授权sql语句中授权类型的取值确定授权类型。例如,当授权sql语句中授权类型的取值为insert(或者select或者update或者delete)时,驱动器可以确定授权类型为插入(或者查询或者更新或者删除)。当授权语句中授权类型的取值为insert和select时,驱动器可以确定授权类型为插入和查询。在一个示例中,可以设置一个代表所有权限的值all,当授权语句中授权类型的取值为all时,驱动器可以确定授权类型为插入、查询、更新和删除。在一种可能的实现方式中,驱动器可以从授权sql语句中获取一个或多个授权用户标识、一个或多个授权资源标识和一种或多种授权类型,作为权限信息。这样,驱动器可以同时对不同的用户授予相同的权限,对同一个用户授予多个数据表或者多个列的权限,以及对同一资源授予多种类型的权限。s12,通过调用第三方元数据管理组件的接口,将所述权限信息作为元数据保存在数据库中。第三方元数据管理组件提供了将元数据保存到数据库的功能和从数据库查询元数据的功能。在一个示例中,第三方元数据管理组件可以为hivemetastore。hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表。hive提供了一系列的工具,可以用来进行数据提取、转化、加载,是一种可以存储、查询和分析存储在hadoop中的大规模数据的机制。hivemetastore是hive中管理元数据的组件。其元数据存储在数据库中,例如derby、mysql等。在hive中,hive客户端连接metastore,metastore再去连接数据库来存取元数据,其中数据库可以为内嵌数据库、本地外部数据库或者远程外部数据库。在本公开实施例中,驱动器通过调用第三方元数据管理组件接口,可以建立与第三方元数据管理组件的连接。由于第三方元数据管理组件提供了将元数据保存到数据库的功能,因此驱动器将权限信息传送给第三方元数据管理组件后,第三方元数据管理组件会将权限信息作为元数据保存到数据库中,实现权限信息的存储,权限信息的存储由第三方元数据管理组件实现,节省了驱动器资源。由于第三方元数据管理组件还提供了从数据库查询元数据的功能,因此,驱动器还可以通过第三方元数据管理组件查询权限信息,进而实现权限验证。在一种可能的实现方式中,驱动器可以增加一个实现授权功能的逻辑计划,记为grantpriviledgecommand,该逻辑计划可以继承自runnablecommand,由于runnablecommand是一种直接可执行的逻辑计划,因此,grantpriviledgecommand也是直接可执行的,因此工作节点中的执行器可以执行grantpriviledgecommand,得到rdd。步骤s13,接收到访问sql语句时,根据所述权限信息对所述访问sql语句的权限进行验证。访问sql语句表示用户对资源进行访问操作,例如向数据库中插入数据、查询数据、更新数据,删除数据等。访问sql语句可以为insert语句、select语句、update语句、delete语句等。在一种可能的实现方式中,对接收到的sql语句进行词法解析,获取关键字,若关键字映射到访问语法(例如:插入语法、查询语法、更新语法和删除语法等),则按照关键字映射到的语法进行词法解析,并在语法解析阶段将访问sql语句转换成对应的逻辑计划并进入权限验证流程。若验证通过,则驱动器确认逻辑计划构造完成,进入优化阶段;若验证未通过,则驱动器提示无权限,并结束流程。语法解析阶段有一系列的rule(规则),驱动器可以遍历每一个规则,利用这些规则对词法解析阶段得到的逻辑计划进行处理,如果逻辑计划符合当前规则,则遍历下一个规则。在本公开实施例中,在语法解析阶段增加了权限验证的规则,驱动器将经过其他规则处理后的逻辑计划传入权限验证规则中,根据权限验证规则,驱动器不对逻辑计划做任何改动,只是从逻辑计划中获取需要的验证信息,进行权限验证。权限验证流程将通过图3的实施例进行说明。图3示出根据本公开一实施例的权限管理方法的流程图。如图3所示,权限验证的流程包括:s131,接收到访问sql语句时,获取所述访问sql语句对应的访问用户标识以及逻辑计划。访问用户标识为需要验证权限的用户的标识。由于当前使用sparksql系统的用户是需要验证权限的用户,因此当前提供访问sql语句的用户的标识为访问用户标识。访问用户标识可以为用户名或者用户id等,对此本公开不做限制。s132,确定所述逻辑计划的类型对应的访问类型、并从所述逻辑计划中获取访问资源标识。不同类型的sql语句对应的逻辑计划的类型不同。例如,select语句对应的逻辑计划的类型是project(映射)类型的逻辑计划。访问类型用于识别用户进行的访问操作。访问类型可以为插入、查询、更新和删除等。在词法解析阶段,驱动器可以确定sql语句的访问类型,例如,根据关键字映射到插入语法时,可确定访问类型为插入,根据关键字映射到删除语法时,可确定访问类型为删除等。根据访问类型可将sql语句映射到相应类型的逻辑计划,例如,访问类型为查询时,可将sql语句映射到project类型的逻辑计划。在语法解析阶段,利用权限验证规则对该逻辑计划执行处理时,可以获取到该逻辑计划的类型以及访问资源标识。基于在词法解析阶段得到的逻辑计划的类型和访问类型的映射,即可确定逻辑计划的类型对应的访问类型。本公开的一个实施例中,访问资源标识可以在词法解析阶段获取,例如可以获取到数据表的标识。在本公开的另一个实施例中,访问资源标识可以在语法解析阶段从逻辑计划获取。相比在词法解析阶段获取访问资源标识,该方式可以获取更加详细的访问资源标识,例如可以获取到被访问的数据表的标识,以及该数据表中被访问的列的标识等信息。访问资源标识可以为数据表名、数据表编号、列名、列编号等,对此本公开不做限制。s133,将所述访问类型、访问资源标识和访问用户标识,确定为验证信息。s134,通过调用所述第三方元数据管理组件的接口,以使所述第三方元数据管理组件根据所述权限信息对所述验证信息进行验证。驱动器将验证信息传送给第三方元数据管理组件后,第三方元数据管理组件可以从数据库中获取已有的权限信息,将验证信息和权限信息进行比较,得到验证结果,第三方元数据管理组件会返回验证结果。验证过程由第三方元数据管理组件实现,节省了驱动器的资源。在一个示例中,用户tom启动sparksql,并输入sql语句select*fromsalary。驱动器对接收的sql语句进行词法解析,确定该语句对应访问类型为select,在语法解析阶段生成类型为project的逻辑计划,形成访问类型select和逻辑的类型project的映射。驱动器根据形成的映射,确定出project对应的访问类型为select。驱动器从sql语句对应的逻辑计划中获取访问资源标识salary,并确定访问用户标识tom。驱动器将select、salary和tom确定为验证信息,通过调用第三方元数据管理组件接口,使第三方元数据管理组件根据已有的权限信息对该验证信息进行验证。根据本公开实施例的权限管理方法能够通过授权sql语句将权限信息作为元数据,通过第三方元数据管理组件存储在数据库中,从而对用户授予访问某些资源的权限,并在接收到访问sql语句时,根据权限信息对访问sql语句的权限进行验证,实现了sparksql中的权限管理功能,提高了信息的安全性。在一种可能的实现方式中,对所述验证信息进行验证包括:若存在授权用户标识与所述访问用户标识匹配、且授权资源标识与所述访问资源标识匹配、且授权类型与所述访问类型匹配的权限信息,则确定验证通过;否则,验证不通过。第三方元数据管理组件在已有的权限信息中查找验证信息时,当访问用户标识和授权用户标识、访问资源标识和授权资源标识,以及访问类型和授权类型均匹配时,确认验证通过。三者中任意一个不匹配,则确认验证未通过。示例1,权限信息如表1所示,验证信息1包括访问用户标识用户1、访问类型查询和访问资源标识table1。如表1所示,权限信息3的授权资源标识为table1与验证信息1的访问资源标识table1匹配、权限信息3的授权类型为查询与验证信息1的访问类型查询匹配,且授权用户标识为用户1与验证信息1的访问用户标识用户1匹配,第三方元数据管理组件确定验证信息1对应的访问sql语句验证通过。表1授权用户标识授权资源标识授权类型权限信息1用户1table1删除权限信息2用户1table2查询权限信息3用户1table1查询权限信息4用户2table1更新权限信息5用户3table2全部权限示例2,权限信息如表1所示,验证信息2包括访问用户标识用户1、访问类型更新和访问资源标识table1。如表1所示,不存在授权用户标识与验证信息2的访问用户标识匹配、授权资源标识与验证信息2的访问资源标识匹配,且授权类型与验证信息3的访问类型匹配的权限信息,第三方元数据管理组件确定验证信息2对应的访问sql语句验证未通过。图4示出根据本公开一实施例的权限管理装置的框图。如图4所示,该装置40包括:获取模块41,用于接收到授权sql语句时,从所述授权sql语句中获取权限信息;调用模块42,用于通过调用第三方元数据管理组件的接口,将所述权限信息作为元数据保存在数据库中;验证模块43,用于接收到访问sql语句时,根据所述权限信息对所述访问sql语句的权限进行验证。在一种可能的实现方式中,所述获取模块41还用于:对接收到的sql语句进行词法解析,获取关键字;若所述关键字映射到授权语法,则按照所述授权语法,从所接收到的sql语句中获取授权用户标识、授权资源标识和授权类型,作为权限信息。在一种可能的实现方式中,所述授权类型包括插入、查询、更新和删除中的一者或多者。在一种可能的实现方式中,所述验证模块43还用于;接收到访问sql语句时,获取所述访问sql语句对应的访问用户标识以及逻辑计划;确定所述逻辑计划的类型对应的访问类型、并从所述逻辑计划中获取访问资源标识;将所述访问类型、访问资源标识和访问用户标识,确定为验证信息;通过调用所述第三方元数据管理组件的接口,以使所述第三方元数据管理组件根据所述权限信息对所述验证信息进行验证。在一种可能的实现方式中,所述装置还包括第三方元数据管理组件44,所述第三方元数据管理组件用于:若存在授权用户标识与所述访问用户标识匹配、且授权资源标识与所述访问资源标识匹配、且授权类型与所述访问类型匹配的权限信息,则确定验证通过;否则,验证不通过。根据本公开实施例的权限管理装置能够通过授权sql语句将权限信息作为元数据,通过第三方元数据管理组件存储在数据库中,从而对用户授予访问某些资源的权限,并在接收到访问sql语句时,根据权限信息对访问sql语句的权限进行验证,实现了sparksql中的权限管理功能,提高了信息的安全性。图5是根据一示例性实施例示出的一种用于权限管理的装置900的框图。参照图5,该装置900可包括处理器901、存储有机器可执行指令的机器可读存储介质902。处理器901与机器可读存储介质902可经由系统总线903通信。并且,处理器901通过读取机器可读存储介质902中与权限管理逻辑对应的机器可执行指令以执行上文所述的权限管理方法。本文中提到的机器可读存储介质902可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本
技术领域
:的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本
技术领域
:的其它普通技术人员能理解本文披露的各实施例。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1