一种权限控制方法及相关装置制造方法及图纸

技术编号:34124991 阅读:12 留言:0更新日期:2022-07-14 13:59
本申请公开了一种权限控制方法及相关装置,其中,权限控制方法包括:接收当前用户执行的SQL语句后,解析并验证所述SQL语句以得到所述SQL语句对应的运算操作树;识别所述运算操作树的操作类型和操作信息;将所述操作类型和所述操作信息传输至Ranger插件中,以使得所述Ranger插件根据所述操作类型和所述操作信息判断所述当前用户是否具有数据库的操作权限;若是,则继续执行所述SQL语句;否则,返回权限异常的信息。通过上述方式,能够实现对用户权限的前置控制和精细化控制。限的前置控制和精细化控制。限的前置控制和精细化控制。

A permission control method and related devices

【技术实现步骤摘要】
一种权限控制方法及相关装置


[0001]本申请涉及分布式计算
,特别是涉及一种权限控制方法及相关装置。

技术介绍

[0002]近年来,大数据平台因能够管理海量数据资产的缘故而受到广泛的关注。其中,数据安全是不容忽视的话题,实现数据安全一般通过两个主要步骤,分别为身份认证和权限控制。对于Hadoop大数据生态领域,Ranger是实现权限控制功能的首选方案。
[0003]现有技术中通常在Flink任务的运行阶段进行权限的校验动作,或者额外启用如thriftserver服务以提供类似Hiveserver2服务的权限控制权限。然而,本申请专利技术人经长期研究发现,上述技术方案中存在资源浪费和权限管理滞后等问题,可能导致向集群提交了无效的Flink任务,产生脏数据,同时现有技术还存在权限控制粒度过大,无法应对丰富的场景等问题。

技术实现思路

[0004]本申请主要解决的技术问题是提供一种权限控制方法及相关装置,能够实现对用户权限的前置控制和精细化控制。
[0005]为解决上述技术问题,本申请采用的一个技术方案是:提供一种权限控制方法,包括:接收当前用户执行的SQL语句后,解析并验证所述SQL语句以得到所述SQL语句对应的运算操作树;识别所述运算操作树的操作类型和操作信息;将所述操作类型和所述操作信息传输至Ranger插件中,以使得所述Ranger插件根据所述操作类型和所述操作信息判断所述当前用户是否具有数据库的操作权限;若是,则继续执行所述SQL语句;否则,返回权限异常的信息。
[0006]其中,所述识别所述运算操作树的操作类型和操作信息的步骤包括:将所述运算操作树中所有第一节点依序排列存储至第一队列中以形成若干第一存储节点;依次获取所述第一队列的每个所述第一存储节点,并针对当前所述第一存储节点进行识别以获得对应的所述操作类型和所述操作信息;判断当前所述第一存储节点是否存在第一子节点;若是,则将所述第一子节点依序排列存储至所述第一队列的末端,并返回至所述依次获取所述第一队列的每个所述第一存储节点的步骤;否则,判断所述第一队列中所有所述第一存储节点是否遍历,若是,则过滤出与所述数据库中的HIVE表相关的所述操作类型和所述操作信息,否则返回至所述依次获取所述第一队列的每个所述第一存储节点的步骤。
[0007]其中,所述针对当前所述第一存储节点进行识别以获得对应的所述操作类型和所述操作信息的步骤包括:获取当前所述第一存储节点的所述操作类型,并判断所述操作类型是否为计划查询操作类型;若是,则获取当前所述第一存储节点对应的逻辑计划树,并识别所述逻辑计划树对应的所述操作类型和所述操作信息;否则,获取当前所述第一存储节点对应的所述操作类型和所述操作信息。
[0008]其中,所述识别所述逻辑计划树对应的所述操作类型和所述操作信息的步骤包
括:将所述逻辑计划树中所有第二节点依序排列存储至第二队列中以形成第二存储节点;依次获取所述第二队列中的每个所述第二存储节点,并针对当前所述第二存储节点进行识别以获得对应的所述操作类型和所述操作信息;判断当前所述第二存储节点是否存在第二子节点;若是,则将所述第二子节点依序排列存储至所述第二队列的末端,并返回至所述依次获取所述第二队列的每个所述第二存储节点的步骤;否则,判断所述第二队列中的所述第二存储节点是否遍历,若是,则返回至所述判断当前所述第一存储节点是否存在第一子节点的步骤,否则返回至所述依次获取所述第二队列中的每个所述第二存储节点的步骤。
[0009]其中,所述针对当前所述第二存储节点进行识别以获得对应的所述操作类型和操作信息的步骤包括:获取当前所述第二存储节点的所述操作类型,并判断所述操作类型是否为Project类型;若是,则继续判断当前所述第二存储节点是否为所述第二队列中的首个Project类型的节点;若是,则解析获得当前所述第二存储节点中所有能映射到所述第二子节点的所述操作信息;否则,获取当前所述第二存储节点对应的所述操作类型和所述操作信息;否则,直接获取当前所述第二存储节点对应的所述操作类型和所述操作信息。
[0010]其中,所述将所述操作类型和所述操作信息传输至Ranger插件中,以使得Ranger插件根据所述操作类型和所述操作信息判断所述当前用户是否具有数据库的操作权限的步骤包括:将过滤出与所述数据库中所述HIVE表相关的所述操作信息传输至所述Ranger插件中;依据所述HIVE表的元数据信息获得数据持久化目录;所述Ranger插件利用所述持久化目录、所述操作类型和所述操作信息判断所述当前用户是否具有所述数据库的操作权限。
[0011]其中,所述继续执行所述SQL语句的步骤还包括:获取所述SQL语句对应的所述逻辑计划树;利用Blink优化器中的优化规则集对所述逻辑计划树进行优化;依据优化后的所述逻辑计划树生成物理执行计划树;利用所述物理执行计划树生成Flink任务。
[0012]其中,所述操作信息包括库名称、表名称和字段名称在内的表字段信息。
[0013]为解决上述技术问题,本申请采用的另一个技术方案是:提供一种权限控制装置,包括相互耦接的存储器和处理器,所述存储器存储有程序指令,所述程序指令用于被所述处理器执行以实现上述任一实施例中所提及的权限控制方法。
[0014]为解决上述技术问题,本申请采用的又一个技术方案是:提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序用于实现上述任一实施例中所提及的权限控制方法。
[0015]区别于现有技术的情况,本申请的有益效果是:本申请中提供一种权限控制方法及相关装置,其中,权限控制方法包括:接收当前用户执行的SQL语句后,解析并验证所述SQL语句以得到所述SQL语句对应的运算操作树;识别所述运算操作树的操作类型和操作信息;将所述操作类型和所述操作信息传输至Ranger插件中,以使得Ranger插件根据所述操作类型和所述操作信息判断所述当前用户是否具有数据库的操作权限;若是,则继续执行所述SQL语句;否则,返回权限异常的信息。通过上述方式,一方面,本申请所提供的方法在SQL语句的解析层面上完成权限的控制动作,能够实现操作权限校验阶段的前置,提前反馈权限异常信息,为用户执行SQL语句提供更好的交互体验;另一方面,依据运算操作树获得的操作信息能够实现较细粒度的权限控制,且可实现的权限控制场景更为丰富。
附图说明
[0016]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
[0017]图1是本申请权限控制方法一实施方式的流程示意图;
[0018]图2是图1中步骤S102一实施方式的流程示意图;
[0019]图3是图2中步骤S202一实施方式的流程示意图;
[0020]图4是图3中步骤S303一实施方式的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种权限控制方法,其特征在于,包括:接收当前用户执行的SQL语句后,解析并验证所述SQL语句以得到所述SQL语句对应的运算操作树;识别所述运算操作树的操作类型和操作信息;将所述操作类型和所述操作信息传输至Ranger插件中,以使得所述Ranger插件根据所述操作类型和所述操作信息判断所述当前用户是否具有数据库的操作权限;若是,则继续执行所述SQL语句;否则,返回权限异常的信息。2.根据权利要求1所述的权限控制方法,其特征在于,所述识别所述运算操作树的操作类型和操作信息的步骤包括:将所述运算操作树中所有第一节点依序排列存储至第一队列中以形成若干第一存储节点;依次获取所述第一队列的每个所述第一存储节点,并针对当前所述第一存储节点进行识别以获得对应的所述操作类型和所述操作信息;判断当前所述第一存储节点是否存在第一子节点;若是,则将所述第一子节点依序排列存储至所述第一队列的末端,并返回至所述依次获取所述第一队列的每个所述第一存储节点的步骤;否则,判断所述第一队列中所有所述第一存储节点是否遍历,若是,则过滤出与所述数据库中的HIVE表相关的所述操作类型和所述操作信息,否则返回至所述依次获取所述第一队列的每个所述第一存储节点的步骤。3.根据权利要求2所述的权限控制方法,其特征在于,所述针对当前所述第一存储节点进行识别以获得对应的所述操作类型和所述操作信息的步骤包括:获取当前所述第一存储节点的所述操作类型,并判断所述操作类型是否为计划查询操作类型;若是,则获取当前所述第一存储节点对应的逻辑计划树,并识别所述逻辑计划树对应的所述操作类型和所述操作信息;否则,获取当前所述第一存储节点对应的所述操作类型和所述操作信息。4.根据权利要求3所述的权限控制方法,其特征在于,所述识别所述逻辑计划树对应的所述操作类型和所述操作信息的步骤包括:将所述逻辑计划树中所有第二节点依序排列存储至第二队列中以形成第二存储节点;依次获取所述第二队列中的每个所述第二存储节点,并针对当前所述第二存储节点进行识别以获得对应的所述操作类型和所述操作信息;判断当前所述第二存储节点是否存在第二子节点;若是,则将所述第二子节点依序排列存储至所述第二队列的末端,并返回至所述依次获取所述第二队列的每个所述第二存储节点的步骤;否则,判断所述第二队列...

【专利技术属性】
技术研发人员:王际超周明伟
申请(专利权)人:浙江大华技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1