一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种权限控制方法及相关装置与流程

2022-07-13 20:38:04 来源:中国专利 TAG:
1.本技术涉及分布式计算
技术领域
:,特别是涉及一种权限控制方法及相关装置。
背景技术
::2.近年来,大数据平台因能够管理海量数据资产的缘故而受到广泛的关注。其中,数据安全是不容忽视的话题,实现数据安全一般通过两个主要步骤,分别为身份认证和权限控制。对于hadoop大数据生态领域,ranger是实现权限控制功能的首选方案。3.现有技术中通常在flink任务的运行阶段进行权限的校验动作,或者额外启用如thriftserver服务以提供类似hiveserver2服务的权限控制权限。然而,本技术发明人经长期研究发现,上述技术方案中存在资源浪费和权限管理滞后等问题,可能导致向集群提交了无效的flink任务,产生脏数据,同时现有技术还存在权限控制粒度过大,无法应对丰富的场景等问题。技术实现要素:4.本技术主要解决的技术问题是提供一种权限控制方法及相关装置,能够实现对用户权限的前置控制和精细化控制。5.为解决上述技术问题,本技术采用的一个技术方案是:提供一种权限控制方法,包括:接收当前用户执行的sql语句后,解析并验证所述sql语句以得到所述sql语句对应的运算操作树;识别所述运算操作树的操作类型和操作信息;将所述操作类型和所述操作信息传输至ranger插件中,以使得所述ranger插件根据所述操作类型和所述操作信息判断所述当前用户是否具有数据库的操作权限;若是,则继续执行所述sql语句;否则,返回权限异常的信息。6.其中,所述识别所述运算操作树的操作类型和操作信息的步骤包括:将所述运算操作树中所有第一节点依序排列存储至第一队列中以形成若干第一存储节点;依次获取所述第一队列的每个所述第一存储节点,并针对当前所述第一存储节点进行识别以获得对应的所述操作类型和所述操作信息;判断当前所述第一存储节点是否存在第一子节点;若是,则将所述第一子节点依序排列存储至所述第一队列的末端,并返回至所述依次获取所述第一队列的每个所述第一存储节点的步骤;否则,判断所述第一队列中所有所述第一存储节点是否遍历,若是,则过滤出与所述数据库中的hive表相关的所述操作类型和所述操作信息,否则返回至所述依次获取所述第一队列的每个所述第一存储节点的步骤。7.其中,所述针对当前所述第一存储节点进行识别以获得对应的所述操作类型和所述操作信息的步骤包括:获取当前所述第一存储节点的所述操作类型,并判断所述操作类型是否为计划查询操作类型;若是,则获取当前所述第一存储节点对应的逻辑计划树,并识别所述逻辑计划树对应的所述操作类型和所述操作信息;否则,获取当前所述第一存储节点对应的所述操作类型和所述操作信息。8.其中,所述识别所述逻辑计划树对应的所述操作类型和所述操作信息的步骤包括:将所述逻辑计划树中所有第二节点依序排列存储至第二队列中以形成第二存储节点;依次获取所述第二队列中的每个所述第二存储节点,并针对当前所述第二存储节点进行识别以获得对应的所述操作类型和所述操作信息;判断当前所述第二存储节点是否存在第二子节点;若是,则将所述第二子节点依序排列存储至所述第二队列的末端,并返回至所述依次获取所述第二队列的每个所述第二存储节点的步骤;否则,判断所述第二队列中的所述第二存储节点是否遍历,若是,则返回至所述判断当前所述第一存储节点是否存在第一子节点的步骤,否则返回至所述依次获取所述第二队列中的每个所述第二存储节点的步骤。9.其中,所述针对当前所述第二存储节点进行识别以获得对应的所述操作类型和操作信息的步骤包括:获取当前所述第二存储节点的所述操作类型,并判断所述操作类型是否为project类型;若是,则继续判断当前所述第二存储节点是否为所述第二队列中的首个project类型的节点;若是,则解析获得当前所述第二存储节点中所有能映射到所述第二子节点的所述操作信息;否则,获取当前所述第二存储节点对应的所述操作类型和所述操作信息;否则,直接获取当前所述第二存储节点对应的所述操作类型和所述操作信息。10.其中,所述将所述操作类型和所述操作信息传输至ranger插件中,以使得ranger插件根据所述操作类型和所述操作信息判断所述当前用户是否具有数据库的操作权限的步骤包括:将过滤出与所述数据库中所述hive表相关的所述操作信息传输至所述ranger插件中;依据所述hive表的元数据信息获得数据持久化目录;所述ranger插件利用所述持久化目录、所述操作类型和所述操作信息判断所述当前用户是否具有所述数据库的操作权限。11.其中,所述继续执行所述sql语句的步骤还包括:获取所述sql语句对应的所述逻辑计划树;利用blink优化器中的优化规则集对所述逻辑计划树进行优化;依据优化后的所述逻辑计划树生成物理执行计划树;利用所述物理执行计划树生成flink任务。12.其中,所述操作信息包括库名称、表名称和字段名称在内的表字段信息。13.为解决上述技术问题,本技术采用的另一个技术方案是:提供一种权限控制装置,包括相互耦接的存储器和处理器,所述存储器存储有程序指令,所述程序指令用于被所述处理器执行以实现上述任一实施例中所提及的权限控制方法。14.为解决上述技术问题,本技术采用的又一个技术方案是:提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序用于实现上述任一实施例中所提及的权限控制方法。15.区别于现有技术的情况,本技术的有益效果是:本技术中提供一种权限控制方法及相关装置,其中,权限控制方法包括:接收当前用户执行的sql语句后,解析并验证所述sql语句以得到所述sql语句对应的运算操作树;识别所述运算操作树的操作类型和操作信息;将所述操作类型和所述操作信息传输至ranger插件中,以使得ranger插件根据所述操作类型和所述操作信息判断所述当前用户是否具有数据库的操作权限;若是,则继续执行所述sql语句;否则,返回权限异常的信息。通过上述方式,一方面,本技术所提供的方法在sql语句的解析层面上完成权限的控制动作,能够实现操作权限校验阶段的前置,提前反馈权限异常信息,为用户执行sql语句提供更好的交互体验;另一方面,依据运算操作树获得的操作信息能够实现较细粒度的权限控制,且可实现的权限控制场景更为丰富。附图说明16.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:17.图1是本技术权限控制方法一实施方式的流程示意图;18.图2是图1中步骤s102一实施方式的流程示意图;19.图3是图2中步骤s202一实施方式的流程示意图;20.图4是图3中步骤s303一实施方式的流程示意图;21.图5是图4中步骤s402一实施方式的流程示意图;22.图6是图1中步骤s103一实施方式的流程示意图;23.图7是图1中步骤s104一实施方式的流程示意图;24.图8是本技术权限控制装置一实施方式的框架示意图;25.图9是本技术权限控制装置一实施方式的结构示意图;26.图10是本技术计算机可读存储介质一实施方式的框架示意图。具体实施方式27.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性的劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。28.本技术实施例可适用于带有数据库的服务器端,以及hadoop集群中以进行大数据平台权限控制的情况中,该方法可以由中央处理模块来执行,其中,该中央处理模块可以有软件和/或硬件来实现,一般可集成于服务器端。29.请参阅图1,图1是本技术权限控制方法一实施方式的流程示意图。本实施例中所提供的权限控制方法主要包括如下步骤:30.s101:接收当前用户执行的sql语句后,解析并验证sql语句以得到sql语句对应的运算操作树。31.具体地,sql语句是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理数据库系统。sql语句可以实现对数据库中的数据访问和提取,即当用户输入将执行的sql语句后,可从数据库中访问对于的数据。32.本技术示例性的实施例中,为了在数据平台中对数据仓库中的数据访问进行权限控制,上述步骤s101具体包括:利用calcite解析器根据语法规则对其进行解析得到抽象语法树;再利用flinksql校验器对sql语句的语法进行校验,当验证通过后根据解析得到的抽象语法树生成运算操作树(operation树)。需要说明的是,上述calcite解析器是一个动态数据的管理框架,可以用来构建数据库系统的语法解析模块,flinksql模块中使用该框架完成sql文本解析和逻辑执行计划优化工作。通过上述步骤,能够为本技术后续权限控制的实现提供技术支持。33.s102:识别运算操作树的操作类型和操作信息。34.具体地,运算操作树(operation树)至少包括在具体应用场景或应用系统中使用的操作类型、操作表对象、操作表所在数据库及执行当前用户id中的一项或多项的组合。35.在一具体的实施场景中,sql语句所涉及的操作类型包括select、update、drop、alter、create、和use中的任意一种,当然,在其他实施场景中,操作类型还可以为其他类型,此处不作具体限定。36.在又一具体的实施场景中,上述操作信息包括库名称、表名称和字段名称在内的表字段信息。其中,表字段信息具体是指库、表、字段的操作信息的简称。本实施例中通过字段级别的操作信息进行权限控制,权限粒度更细,使权限控制的场景更加丰富。37.另外,获取操作类型和操作信息的具体识别过程涉及一种特殊的operation树分析算法,对于该算法的具体流程将在后续实施例中详细介绍。38.s103:将操作类型和操作信息传输至ranger插件中,以使得ranger插件根据操作类型和操作信息判断当前用户是否具有数据库的操作权限。39.具体地,ranger(apacheranger)插件是一个用于在整个hadoop平台上启用、监控和管理的全面数据安全性的框架。该框架中保存有每一用户的具体权限,该具体权限包括该用户在数据平台中操作时的权限,包括但不限于上述操作类型中的修改权限以及默认权限。40.s104:若是,则继续执行sql语句。41.s105:若否,则返回权限异常的信息。42.具体地,当sql语句中包括的操作类型包含于在ranger插件中保存的用户权限,则表明该sql语句中的操作类型被允许执行,否则会被阻止执行。43.通过上述实施方式,一方面,在sql语句的解析层面上完成权限的控制动作,能够实现操作权限校验阶段的前置,提前反馈权限异常信息,为用户执行sql语句提供更好的交互体验;另一方面,依据运算操作树获得的操作信息能够实现较细粒度的权限控制,且可实现的权限控制场景更为丰富。44.请参阅图2,图2是图1中步骤s102一实施方式的流程示意图。在本实施例中,上述步骤s102具体可以包括如下步骤:45.s201:将运算操作树中所有第一节点依序排列存储至第一队列中以形成若干第一存储节点。46.具体地,此处的第一节点是指运算操作树的根节点,第一队列是用于存放待分析的operation节点的队列,其具有先进先出的特点,即队列中的节点按照排列的先后顺序依次进行分析,分析完成后的节点会从队列中删除。47.s202:依次获取第一队列的每个第一存储节点,并针对当前第一存储节点进行识别以获得对应的操作类型和操作信息。48.具体地,对第一存储节点的操作类型和操作信息的识别过程涉及一种operation树分析算法,下述实施例对该分析算法进行详细介绍。49.请参阅图3,图3是图2中步骤s202一实施方式的流程示意图。上述步骤s202可以包括如下步骤:50.s301:获取当前第一存储节点的操作类型。51.具体地,第一存储节点的操作类型包括但不限于删除数据库、创建数据库、创建视图、添加列表、修改比among、清空表以及删除分区等修改权限,以及查看列表、功能、视图的默认权限。52.s302:判断操作类型是否为计划查询操作类型。53.具体地,此处计划查询操作类型的英文全称为plannerqueryoperation。54.s303:若是,则获取当前第一存储节点对应的逻辑计划树,并识别逻辑计划树对应的操作类型和操作信息。55.具体地,请参阅图4,图4是图3中步骤s303一实施方式的流程示意图。上述步骤s303具体包括:56.s401:将逻辑计划树中所有第二节点依序排列存储至第二队列中以形成第二存储节点。57.具体地,此处第二节点是指逻辑计划树的根节点,第二队列是用于存放待分析的calcite逻辑计划节点的队列,其同样具备先进先出的特点,即第二队列中的节点按照排列的先后顺序依次进行分析,且分析完成后的calcite逻辑计划节点会从第二队列中被删除。58.s402:依次获取第二队列中的每个第二存储节点,并针对当前第二存储节点进行识别以获得对应的操作类型和操作信息。59.请参阅图5,图5是图4中步骤s402一实施方式的流程示意图。上述步骤s402具体包括:60.s501:获取当前第二存储节点的操作类型。61.具体地,第二存储节点的操作类型包括但不限于删除数据库、创建数据库、创建视图、添加列表、修改比among、清空表以及删除分区等修改权限,以及查看列表、功能、视图的默认权限。62.s502:判断操作类型是否为project类型。63.s503:若是,则继续判断当前第二存储节点是否为第二队列中的首个project类型的节点。64.具体地,上述步骤判断第二队列中是否第一次识别到project类型的节点。换言之,在本实施例所提供的分析算法中,仅针对逻辑计划树在首次遇见的project类型节点进行识别。65.s504:若是,则解析获得当前第二存储节点中所有能映射到第二子节点的操作信息。66.具体地,本实施例中所涉及的操作信息包括第二子节点的表字段信息,并将该表字段信息存储至tablecolumnmap中。需要说明的是,上述tablecolumnmap是指专门用于存储识别过程收集得到的最新的库表字段及其操作信息。67.s505:若否,则获取当前第二存储节点对应的操作类型和操作信息。68.具体地,响应于逻辑计划树中的节点不是第二队列中首个project类型的节点,直接获取当前节点的操作类型和操作信息,并将上述得到的信息存储至tablecolumnmap中。69.s506:若否,则直接获取当前第二存储节点对应的操作类型和操作信息。70.响应于当前第二存储节点不是project类型的节点,则直接将其对应的操作类型和操作信息存储至tablecolumnmap中。71.通过上述实施方式,能够实现第二队列中每个第二存储节点的操作类型和操作信息的识别过程,且获取得到的操作信息包括字段级别的操作信息,能够提高权限控制的精细化程度。72.s403:判断当前第二存储节点是否存在第二子节点。73.具体地,第二子节点是指逻辑计划树的根节点的下一层节点,可以理解为第二节点的分支。74.s404:若是,则将第二子节点依序排列存储至第二队列的末端,并返回至步骤s402。75.具体地,响应于当前第二存储节点存在第二子节点,则将所有第二子节点排列至所有第二节点的后方,并在所有第二节点依次获取完成后,依次获取第二队列中的每个第二子节点。76.s405:若否,继续判断第二队列中的第二存储节点是否遍历。77.具体地,响应于当前第二存储节点不存在第二子节点,则继续判断第二队列中的所有节点是否遍历。78.s406:若是,则返回至步骤s203。79.具体地,响应于第二队列中的所有节点遍历,则返回至判断当前第一存储节点是否存在第一子节点的步骤。80.s407:若否,则返回至步骤s402。81.通过上述实施方式,保证逻辑计划树中的所有节点遍历,并得到逻辑计划树中所有节点对应的操作类型和操作信息,保证信息获取的完整性,避免信息遗漏现象的发生。82.s304:若否,则获取当前第一存储节点对应的操作类型和操作信息。83.具体地,响应于当前第一存储节点的操作类型不是计划查询操作类型,则直接将第一存储节点对应的操作类型和操作信息存储至tablecolumnmap中。84.通过上述实施方式,利用能够实现第一队列中每个第一存储节点的操作类型和操作信息的识别过程。85.s203:判断当前第一存储节点是否存在第一子节点。86.具体地,第一子节点是指operation树的根节点的下一层节点,可以理解为第一节点的分支。87.s204:若是,则将第一子节点依序排列存储至第一队列的末端,并返回步骤s202。88.具体地,响应于当前第一存储节点存在第一子节点,则将所述第一子节点排列至第一队列中所有第一节点的后方,并在所有第一节点依次获取完成后,依次获取第一队列中的每个第一子节点。89.s205:若否,则判断第一队列中所有第一存储节点是否遍历。90.具体地,响应于当前第一存储节点不存在第一子节点,则继续判断第一队列中所有第一存储节点是否遍历。91.s206:若是,则过滤出与数据库中的hive表相关的操作类型和操作信息。92.具体地,响应于第一队列中的所有节点遍历,则将存储至tablecolumnmap中的所有操作类型和操作信息进行筛选,保留与hive表相关的操作类型和操作信息。需要说明的是,hive是基于hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在hadoop中的大规模数据的机制。93.s207:若否,返回至步骤s202。94.具体地,响应于第一队列中的所有节点未遍历,则返回至依次获取第一队列的每个第一存储节点的步骤。95.通过上述实施方式,保证operation树中的所有节点遍历,并得到operation树中所有节点对应的操作类型和操作信息,保证信息获取的完整性,避免信息遗漏现象的发生。96.请参阅图6,图6是图1中步骤s103一实施方式的流程示意图。上述步骤s103具体包括如下步骤:97.s601:将过滤出与数据库中hive表相关的操作信息传输至ranger插件中。98.具体地,ranger是一个用于在整个hadoop平台上启用、监控和管理全面的数据安全性的框架。99.s602:依据hive表的元数据信息获得数据持久化目录。100.s603:ranger插件利用持久化目录、操作类型和操作信息判断当前用户是否具有数据库的操作权限。101.具体地,当需要访问hive表时,根据hive表的元数据信息得到数据持久化目录,在对数据持久化目录进行读写操作,在读写操作是根据服务器端安装的ranger插件实现权限的控制。102.通过上述实施方式,基于ranger插件完成用户是否具有权限操作的判断过程,其权限控制的逻辑集成在sql语句解析的内部,无需额外气动常驻的thriftserver服务,节省计算资源。103.请参阅图7,图7是图1中步骤s104一实施方式的流程示意图。上述步骤s104可包括如下步骤:104.s701:获取sql语句对应的逻辑计划树。105.具体地,此处的逻辑计划树与步骤s303中获取的逻辑计划树相同,因此,可直接获取步骤s303中每个节点对应的逻辑计划树。106.s702:利用blink优化器中的优化规则集对逻辑计划树进行优化。107.s703:依据优化后的逻辑计划树生成物理执行计划树。108.s704:利用物理执行计划树生成flink任务。109.通过上述实施方式,由于权限校验阶段的前置,保证向集群提交的flink任务的有效性,同时能够保证用户下发的sql语句顺利执行。110.请参阅图8,图8是本技术权限控制装置一实施方式的框架示意图。该控制装置100包括获取模块10、识别模块12、判断模块14和处理模块16。具体而言,获取模块10用于接收当前用户执行的sql语句后,解析并验证sql语句以得到sql语句对应的运算操作树。识别模块12用于识别运算操作树的操作类型和操作信息。判断模块14用于将操作类型和操作信息传输至ranger插件中,以使得ranger插件根据操作类型和操作信息判断当前用户是否具有数据库的操作权限。处理模块16用于响应于当前用户具有操作权限,则继续执行sql语句。处理模块16还用于响应于当前用户没有操作权限,则返回权限异常的信息。通过上述实施方式,一方面在sql语句的解析层面上完成权限的控制动作,能够实现操作权限校验阶段的前置,提前反馈权限异常信息,为用户执行sql语句提供更好的交互体验;另一方面,依据运算操作树获得的操作信息能够实现较细粒度的权限控制,且可实现的权限控制场景更为丰富。111.请参阅图9,图9是本技术权限控制装置一实施方式的结构示意图。该装置20包括相互耦接的存储器200和处理器202,存储器200内存储有程序指令,处理器202用于执行程序指令以实现上述任一实施例中所提及的权限控制方法。112.具体而言,处理器202还可以称为cpu(centralprocessingunit,中央处理单元)。处理器202可能是一种集成电路芯片,具有信号的处理能力。处理器202还可以是通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器202可以由多个集成电路芯片共同实现。113.请参阅图10,图10是本技术计算机可读存储介质一实施方式的框架示意图。该计算机可读存储介质30存储有计算机程序300,能够被计算机所读取,计算机程序300能够被处理器执行,以实现上述任一实施例中所提及的权限控制方法。其中,该计算机程序300可以以软件产品的形式存储在上述计算机可读存储介质30中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本技术各个实施方式所述方法的全部或部分步骤。具有存储功能的计算机可读存储介质30可以是u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。114.以上所述仅为本技术的实施方式,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的
技术领域
:,均同理包括在本技术的专利保护范围内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献