权限校验方法、权限校验装置、存储介质与电子设备与流程

文档序号:20951101发布日期:2020-06-02 20:08阅读:215来源:国知局
权限校验方法、权限校验装置、存储介质与电子设备与流程
本公开涉及数据处理
技术领域
,尤其涉及一种权限校验方法、权限校验装置、计算机可读存储介质与电子设备。
背景技术
:随着大数据时代的来临,数据作为企业或个人所拥有的一种资源,往往包含了隐私信息、技术或商业机密等重要内容,因此需要对数据访问权限进行管理,以防止数据丢失、泄露、被篡改等风险,保障信息安全。相关技术中,为了满足复杂的权限设置,通常采用树型的权限模型进行管理,例如hadoop(一款分布式的大数据存储和处理的开源软件)的权限管理工具ranger。其将权限信息保存到树的节点上,包含用户、资源、权限之间的关系,在校验时通过遍历树的节点,以查询相应的权限信息。然而,随着用户数量、权限类型或等级的增加,所需保存的权限信息数量成倍级增长,树的节点增多,同时单个节点上保存的用户权限信息增多,导致每次查询时遍历树以及在树的节点上查找具体用户的权限信息耗费较多时间,效率较低。需要说明的是,在上述
背景技术
部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。技术实现要素:本公开提供了一种权限校验方法、权限校验装置、计算机可读存储介质与电子设备,进而至少在一定程度上改善相关技术中权限校验耗时较多的问题。本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。根据本公开的第一方面,提供一种权限校验方法,包括:获取数据请求,所述数据请求包括提出所述数据请求的目标用户名、待请求数据所在的目标路径以及针对所述待请求数据的请求类型;确定所述目标路径对应的位置编码;在所述目标用户名对应的位图中,根据所述位置编码读取权限编码;解析所述权限编码,根据所述请求类型确定关于所述数据请求的权限校验结果。可选的,所述确定所述目标路径对应的位置编码,包括:在预先建立的位置编码映射表中查找所述目标路径对应的位置编码。可选的,所述在预先建立的位置编码映射表中查找所述目标路径对应的位置编码,包括:提取所述目标路径的短路径名,将所述目标路径的短路径名分别转换为对应的数值,以得到所述目标路径对应的数值序列,记为目标数值序列;在所述位置编码映射表中查找所述目标数值序列对应的位置编码。可选的,所述位置编码映射表通过以下方式建立:统计历史请求中各路径的查询次数,按照查询次数由高到低排列所述各路径;将所述各路径分别转换为对应的数值序列,并按照各数值序列的排列顺序分别生成各数值序列对应的位置编码,以建立所述位置编码映射表;其中,所述位置编码映射表包括数值序列和位置编码的对应关系,任意相邻两数值序列所对应的位置编码之间相差预设数值,所述预设数值为权限编码的长度。可选的,所述将所述目标路径的短路径名分别转换为对应的数值,包括:在预先建立的数值映射表中查找所述目标路径的短路径名对应的数值。可选的,所述数值映射表通过以下方式建立:将历史请求中的路径分割为短路径名;统计每个短路径名的出现次数以及到根路径的距离,以计算每个短路径名的权重;按照权重由高到低排列各短路径名,将每个短路径名的序号作为其对应的数值,以建立所述数值映射表。可选的,所述目标用户名对应的位图通过以下方式获取:在预先建立的位图映射表中查找所述目标用户名对应的位图。可选的,所述确定所述目标路径对应的位置编码,还包括:当在所述位置编码映射表中查找所述目标路径的结果为空时,检测所述目标路径是否包含和所述目标用户名相同的短路径名;当所述目标路径包含和所述目标用户名相同的短路径名时,将该短路径名替换为第一预设字符,并重新在所述位置编码映射表中查找所述目标路径对应的位置编码。可选的,如果在查找所述目标路径对应的位置编码时,将所述目标路径中的短路径名替换为第一预设字符,则所述在预先建立的位图映射表中查找所述目标用户名对应的位图,包括:在所述位图映射表中查找第二预设字符对应的位图,作为所述目标用户名对应的位图。可选的,所述方法还包括:当在所述位图映射表中查找所述目标用户名的结果为空时,从所述位图映射表中查找第三预设字符对应的位图,作为所述目标用户名对应的位图。可选的,当所述请求类型为读请求时,所述解析所述权限编码,得到关于所述数据请求的权限校验结果,包括:解析所述权限编码中是否具有读权限;当所述权限编码中具有读权限时,读取子目录参数的值;当所述子目录参数为真值时,解析所述权限编码中是否具有递归权限;当所述权限编码中具有递归权限时,确定所述数据请求具有读权限;当所述权限编码中不具有递归权限时,从所述目标路径的末尾删除短路径名,并再次执行确定所述目标路径对应的位置编码的步骤;当所述子目录参数为假值时,确定所述数据请求具有读权限;当所述权限编码中不具有读权限时,从所述目标路径的末尾删除短路径名,并再次执行确定所述目标路径对应的位置编码的步骤。可选的,在从所述目标路径的末尾删除短路径名前,所述方法还包括:判断所述目标路径是否为根路径;当所述目标路径是根路径时,确定所述数据请求不具有读权限;当所述目标路径不是根路径时,执行从所述目标路径的末尾删除短路径名的步骤。可选的,所述方法还包括:当从所述目标路径的末尾删除短路径名时,将所述子目录参数设为真值。根据本公开的第二方面,提供一种权限校验装置,包括:数据请求获取模块,用于获取数据请求,所述数据请求包括提出所述数据请求的目标用户名、待请求数据所在的目标路径以及针对所述待请求数据的请求类型;位置编码确定模块,用于确定所述目标路径对应的位置编码;权限编码读取模块,用于在所述目标用户名对应的位图中,根据所述位置编码读取权限编码;权限编码解析模块,用于解析所述权限编码,根据所述请求类型确定关于所述数据请求的权限校验结果。可选的,所述位置编码确定模块,用于在预先建立的位置编码映射表中查找所述目标路径对应的位置编码。可选的,所述位置编码确定模块包括:数值序列转换单元,用于提取所述目标路径的短路径名,将所述目标路径的短路径名分别转换为对应的数值,以得到所述目标路径对应的数值序列,记为目标数值序列;位置编码查找单元,用于在所述位置编码映射表中查找所述目标数值序列对应的位置编码。可选的,所述装置还包括位置编码映射表建立模块,用于执行以下方法以建立所述位置编码映射表:统计历史请求中各路径的查询次数,按照查询次数由高到低排列所述各路径;将所述各路径分别转换为对应的数值序列,并按照各数值序列的排列顺序分别生成各数值序列对应的位置编码,以建立所述位置编码映射表;其中,所述位置编码映射表包括数值序列和位置编码的对应关系,任意相邻两数值序列所对应的位置编码之间相差预设数值,所述预设数值为权限编码的长度。可选的,所述数值序列转换单元,用于在预先建立的数值映射表中查找所述目标路径的短路径名对应的数值。可选的,所述装置还包括数值映射表建立模块,用于执行以下方法以建立所述数值映射表:将历史请求中的路径分割为短路径名;统计每个短路径名的出现次数以及到根路径的距离,以计算每个短路径名的权重;按照权重由高到低排列各短路径名,将每个短路径名的序号作为其对应的数值,以建立所述数值映射表。可选的,所述权限编码读取模块,用于在预先建立的位图映射表中查找所述目标用户名对应的位图。可选的,所述位置编码确定模块,还用于当在所述位置编码映射表中查找所述目标路径的结果为空时,将所述目标路径中和所述目标用户名相同的短路径名替换为第一预设字符,并重新在所述位置编码映射表中查找所述目标路径对应的位置编码。可选的,所述权限编码读取模块,还用于在所述位置编码确定模块将所述目标路径中的短路径名替换为所述第一预设字符以查找所述位置编码的情况下,在所述位图映射表中查找第二预设字符对应的位图,作为所述目标用户名对应的位图。可选的,所述权限编码读取模块,还用于当在所述位图映射表中查找所述目标用户名的结果为空时,从所述位图映射表中查找第三预设字符对应的位图,作为所述目标用户名对应的位图。可选的,当所述请求类型为读请求时,所述权限编码解析模块,用于执行以下方法以得到关于所述数据请求的权限校验结果:解析所述权限编码中是否具有读权限;当所述权限编码中具有读权限时,读取子目录参数的值;当所述子目录参数为真值时,解析所述权限编码中是否具有递归权限;当所述权限编码中具有递归权限时,确定所述数据请求具有读权限;当所述权限编码中不具有递归权限时,从所述目标路径的末尾删除短路径名,并调度所述位置编码确定模块重新确定所述目标路径对应的位置编码;当所述子目录参数为假值时,确定所述数据请求具有读权限;当所述权限编码中不具有读权限时,从所述目标路径的末尾删除短路径名,并调度所述位置编码确定模块重新确定所述目标路径对应的位置编码。可选的,所述权限编码解析模块,还用于在从所述目标路径的末尾删除短路径名前,判断所述目标路径是否为根路径,当所述目标路径是根路径时,确定所述数据请求不具有读权限,当所述目标路径不是根路径时,从所述目标路径的末尾删除短路径名,并调度所述位置编码确定模块重新确定所述目标路径对应的位置编码。可选的,所述权限编码解析模块,还用于当从所述目标路径的末尾删除短路径名时,将所述子目录参数设为真值。根据本公开的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一种权限校验方法。根据本公开的第四方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一种权限校验方法。本公开的技术方案具有以下有益效果:根据上述权限校验方法、权限校验装置、计算机可读存储介质与电子设备,获取数据请求中的目标用户名、目标路径和请求类型,确定目标路径对应的位置编码,并在目标用户名对应的位图中根据位置编码读取权限编码,通过解析权限编码,以确定是否具有请求类型对应的权限,从而得到关于数据请求的权限校验结果。一方面,采用位图的方式记录权限信息,可以将复杂的权限信息表示为简单的二进制编码形式,并且通过位置编码查找权限编码时,直接查找到位图中相应的位置即可,无需对整个位图进行遍历,算法时间复杂度达到o(1)级别,有利于实现快速的权限校验和请求响应,具有较高的效率。另一方面,随着权限信息数量的增多,位图长度增加,但查找权限编码的时间不会明显增加,因此特别适合于大数据管理的场景。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1示出本示例性实施例中一种权限校验方法的流程图;图2示出本示例性实施例中一种权限校验方法的子流程图;图3示出本示例性实施例中另一种权限校验方法的子流程图;图4示出本示例性实施例中另一种权限校验方法的流程图;图5示出本示例性实施例中一种权限校验装置的结构框图;图6示出本示例性实施例中一种用于实现上述方法的计算机可读存储介质;图7示出本示例性实施例中一种用于实现上述方法的电子设备。具体实施方式现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。本公开的示例性实施方式首先提供一种权限校验方法。图1示出了该方法的一种流程,可以包括以下步骤s110至s140:步骤s110,获取数据请求,数据请求包括提出数据请求的目标用户名、待请求数据所在的目标路径以及针对待请求数据的请求类型。例如,用户dwetl请求读取/apps/hive/warehouse/dwd.db/dwd_test_tb/dt=2018-01-01中的数据,可以生成相应的一条数据请求,提交到系统。该数据请求中可以包括目标用户名dwetl,目标路径/apps/hive/warehouse/dwd.db/dwd_test_tb/dt=2018-01-01,请求类型为读请求。本示例性实施方式中,读请求指只读请求(不包括写),此外请求类型还可以是写请求、执行请求、以及读、写、执行三种请求的任意组合等。步骤s120,确定目标路径对应的位置编码。本示例性实施方式通过位图管理权限信息,位置编码可以表示目标路径的权限信息(权限编码)在位图中的位置。关于如何将目标路径转换为位置编码,以下提供两个具体实施方式:方式一可以在预先建立的位置编码映射表中查找目标路径对应的位置编码。其中,位置编码映射表包含每个路径与位置编码的映射关系。可以事先统计所有的路径,为每个路径配置唯一的位置编码,以对应到位图中的位置。在查找位置编码时,在位置编码映射表中查找是否存在目标路径,查找到目标路径后,直接读取其对应的位置编码即可。进一步的,步骤s120可以具体通过以下方式实现:提取目标路径的短路径名,将目标路径的短路径名分别转换为对应的数值,以得到目标路径对应的数值序列,记为目标数值序列;在位置编码映射表中查找目标数值序列对应的位置编码。其中,短路径名是指路径中每一层级的路径名,通常以路径中的“/”作为分割点,例如在路径/apps/hive/warehouse/dwd.db/dwd_test_tb/dt=2018-01-01中,apps、hive、warehouse等都是短路径名。将目标路径的短路径名分别转换为对应的数值,实际形成了数值序列。由于目标路径中包含了大量的字符,将其转换为数值序列的形式,可以提高在位置编码映射表中的查找效率。短路径名转换为数值可以通过unicode(统一码)或者在词库中进行one-hot编码(独热编码)等方式实现。在一种可选的实施方式中,参考图2所示,可以通过以下步骤s210至s230预先建立数值映射表:步骤s210,将历史请求中的路径分割为短路径名;步骤s220,统计每个短路径名的出现次数以及到根路径的距离,以计算每个短路径名的权重;步骤s230,按照权重由高到低排列各短路径名,将每个短路径名的序号作为其对应的数值,以建立数值映射表。其中,历史请求是指已经结束的数据请求,每条历史请求包含相应的用户名和路径;根路径是指根目录名,是路径中的最上级目录名。收集大量的历史请求,将其中的路径分割为短路径名,形成短路径名的数据集。根据每个短路径名的出现次数以及到根路径的距离计算权重,通常出现次数越多,权重越高,到根路径的距离越近,权重越高。举例说明:假设从历史请求中获取到以下4条完整路径:/apps/hive/warehouse/dwd.db/apps/hive/warehouse/tmp.db/user/dwetl/tmp统计其中每个短路径名的出现次数以及到根路径的距离,计算权重,并进行排序,如表1所示。将每个短路径名的序号作为其对应的数值,则形成了映射关系,得到如表1形式的数值映射表。表1短路径名权重序号apps2+10=121hive2+10=122warehouse2+10=123user1+10=114tmp1+10=115dwetl1+9=106dwd.db1+7=87tmp.db1+7=88需要说明的是,在上述数值映射表中,权重越高的短路径名,对应的数值越小。这样在校验数据请求的权限时,权重高的短路径名出现的概率较高,将其转换为较小的数值,更易于查找和处理。基于上述数值映射表,当校验数据请求的权限时,可以在数值映射表中查找目标路径的短路径名对应的数值。需要补充的是,对于权重很低的短路径名,可以不在数值映射表中记录其对应的数值信息,例如可以设置预设阈值,将权重高于预设阈值的短路径名筛选出来,为其设置对应的数值(序号),记录在数值映射表中。这样可以减少大量的冷门短路径名的信息,降低数值映射表的数据量,提高查找效率。此外,目标路径中还可能出现新的短路径名,例如新增的文件夹名、数据表名等。以上两种情况可能导致在数据映射表中查找不到一部分短路径名,本示例性实施方式可以以预设填充数值(例如0)作为其对应的数值。举例说明:根据表1将目标路径/apps/hive/warehouse/dwd.db/dwd_test_tb/dt=2018-01-01转换为对应的数值序列时,在表1中查找到apps、hive、warehouse和dwd.db对应的数值分别是1、2、3、7,查找不到短路径名dwd_test_tb和dt=2018-01-01,则以预设填充数值0代替。这样得到该目标路径对应的数值序列为/1/2/3/7/0/0。将目标路径转换为目标数值序列,可以在位置编码映射表中按照数值查找目标路径,相比于查找目标路径本身的字符串,具有更高的查找效率。为了适应这一需求,在一种可选的实施方式中,参考图3所示,可以通过以下步骤s310和s320建立位置编码映射表:步骤s310,统计历史请求中各路径的查询次数,按照查询次数由高到低排列各路径;步骤s320,将各路径分别转换为对应的数值序列,并按照各数值序列的排列顺序分别生成各数值序列对应的位置编码,以建立位置编码映射表。其中,位置编码映射表包括数值序列和位置编码的对应关系。对上述建立位置编码映射表的过程举例说明:假设从历史请求中获取到以下4条完整路径:/apps/hive/warehouse/dwd.db/apps/hive/warehouse/tmp.db/user/dwetl/tmp统计每条路径的查询次数,按照由高到低的顺序排列为表2中的顺序;然后根据表1中短路径名的数值,将各路径转换为对应的数值序列;再按照排列顺序为各数值序列设置对应的位置编码。其中,/1/2/3/7的位置编码为1,表示其对应路径的权限编码在位图中是从第1位开始的;数值序列1/2/3/8的权限编码是从位图中的第4位开始的。最终可以得到如表2形式的位置编码映射表,实际应用中可以不保留“路径”一列,仅记录数值序列和位置编码的对应关系。在位置编码映射表中,查询次数高的路径的数值序列排列在靠前的位置,其位置编码较小。这样在位图中按顺序查找权限编码时,易于查找到靠前的位置,从而提高查找效率。表2路径数值序列位置编码/apps/hive/warehouse/dwd.db/1/2/3/71/apps/hive/warehouse/tmp.db/1/2/3/84/user/dwetl/4/67/tmp/510………本示例性实施方式中,可以将每条路径(每个数值序列)的权限编码设置为固定长度,例如采用3个bit,第1位表示读权限,第2位表示写权限,第3位表示递归权限,递归权限指是否对路径下的子目录具有相应的权限;101表示具有只读权限和递归权限,即可以读取该路径及其子目录下的数据。由此,在位置编码映射表中,任意相邻两数值序列所对应的位置编码之间相差预设数值,例如表2中相差数值为3,该预设数值为权限编码的长度。方式二可以对全部数据所在的路径预先建立路径查找树:以根路径为根节点,逐级延伸,直到到达叶子节点,叶子节点可以表示数据表所在的位置;然后对每一级的节点编号。由此,每个路径在路径查找树中对应为一条编号路径,可以作为每个路径对应的位置编码。在步骤s120中,可以在路径查找树中查找目标路径,将对应节点的编号形成其位置编码。步骤s130,在目标用户名对应的位图中,根据位置编码读取权限编码。本示例性实施方式可以保存每个用户的权限信息,对应为每个用户生成权限信息的位图。可以参考表3所示,预先建立位图映射表,记录每个用户名和位图的对应关系。表3中,用户dwetl的位图为101000101,其中,位置编码为1的路径(即表2中的/apps/hive/warehouse/dwd.db)所对应的权限编码为101,表示用户dwetl对该路径的数据具有只读权限和递归权限;位置编码为4的路径(即表2中的/apps/hive/warehouse/tmp.db)所对应的权限编码为000,表示用户dwetl对该路径的数据不具有任何权限;位置编码为7的路径(即表2中的/user/dwetl)所对应的权限编码为101,表示用户dwetl对该路径的数据具有只读权限和递归权限。表3用户名位图dwetl101000101hdfs111000111111mongo111……由上可知,可以在位图映射表中查找目标用户名,读取其对应的位图,然后根据位置编码找到位图中对应的位置,读取权限编码。步骤s140,解析权限编码,根据上述请求类型确定关于数据请求的权限校验结果。其中,权限编码的数值表示特定的权限信息,例如在表3中,3个bit位的权限编码分别表示读权限、写权限和递归权限,解析出每个数值的含义后,可以得到相应的权限信息,从而确定数据请求是否具有权限,以得到权限校验结果。例如,数据请求中的请求类型为读请求,步骤s130得到的权限编码中,读权限的编码位为1,说明有读权限,则可以确定数据请求的权限校验结果为通过;或者,请求类型为写请求,步骤s130得到的权限编码中,写权限的编码位为0,说明没有写权限,则可以确定数据请求的权限校验结果为不通过。基于图1所示的权限校验方法,获取数据请求中的目标用户名、目标路径和请求类型,确定目标路径对应的位置编码,并在目标用户名对应的位图中根据位置编码读取权限编码,通过解析权限编码,以确定是否具有请求类型对应的权限,从而得到关于数据请求的权限校验结果。一方面,采用位图的方式记录权限信息,可以将复杂的权限信息表示为简单的二进制编码形式,并且通过位置编码查找权限编码时,直接查找到位图中相应的位置即可,无需对整个位图进行遍历,算法时间复杂度达到o(1)级别,有利于实现快速的权限校验和请求响应,具有较高的效率。另一方面,随着权限信息数量的增多,位图长度增加,但查找权限编码的时间不会明显增加,因此特别适合于大数据管理的场景。在文件数据管理与共享的场景中,经常允许用户建立个人路径(文件夹),以用户名进行命名,仅用户本人具有权限。基于此,可以对这类路径集中存储管理,以节约资源,提高效率。在一种可选的实施方式中,可以将个人路径中的用户名替换为第一预设字符,例如可以是{user},则位置编码映射表中可以记录如表4所示的一行信息。表4路径数值序列位置编码/user/{user}/4/67相应的,可以通过以下查找目标路径对应的位置编码:当在位置编码映射表中查找目标路径的结果为空时,检测目标路径是否包含和目标用户名相同的短路径名;当目标路径包含和目标用户名相同的短路径名时,将该短路径名替换为第一预设字符,并重新在位置编码映射表中查找目标路径对应的位置编码。例如,用户dwetl请求读取目标路径/user/dwetl中的数据时,在位置编码映射表中查找不到/user/dwetl,此时检测目标路径中包含的短路径名dwetl和目标用户名相同,将其替换为第一预设字符,如可以得到目标路径为/user/{user};然后再在位置编码映射表中查找目标路径,可以找到相应的记录,如表4所示的信息,读取其对应的位置编码。同理,用户hdfs请求读取目标路径/user/hdfs中的数据,用户mongo请求读取目标路径/user/mongo中的数据时,都可以在位置编码映射表中找到表4所示的信息。进一步的,也可以在位图映射表中对包含用户名的个人路径进行统一存储管理。例如,用户dwetl对/user/dwetl中数据的权限,用户hdfs对/user/hdfs中数据的权限,用户mongo对/user/mongo中数据的权限,通常都是相同的,那么在位图映射表中可以将权限信息记录为同一条,以减少数据量。在一种可选的实施方式中,可以采用第二预设字符作为上述个人路径位图的用户名,例如可以是{owner},则位图映射表中可以记录如表5所示的一行信息。表5用户名位图{owner}000000111相应的,在查找目标路径对应的位置编码时,将目标路径中与目标用户名相同的短路径名替换为第一预设字符的情况下,说明目标路径包含个人路径,则可以通过以下步骤查找目标用户名对应的位图:在位图映射表中查找第二预设字符对应的位图,作为目标用户名对应的位图。例如,用户dwetl请求读取目标路径/user/dwetl中的数据时,将目标路径中的dwetl替换为第一预设字符{user}后,在位置编码映射表中查找到了对应信息,得到位置编码为7;然后在位图映射表中查找目标用户名时,可以无需查找dwetl,而直接查找第二预设字符{owner},查找如表5所示的信息,读取其位图,按照位置编码7找到权限编码为111,表示用户dwetl对于/user/dwetl中的数据具有读权限、写权限和递归权限。考虑到可能有访客、新用户或者未开通特别权限的普通用户等提出数据请求,这些用户通常只具有基本权限或公开权限,因此无需单独记录其权限信息。在一种可选的实施方式中,位图映射表中可以记录一类特殊用户,用第三预设字符表示,例如可以是{guest}、{public}等,则位图映射表中可以记录如表6所示的一行信息。其代表的权限通常是基本权限或公开权限,例如访客仅能读取少数路径中的数据。表6用户名位图{guest}000000000100相应的,当在位图映射表中查找目标用户名的结果为空时,说明位图映射表中未单独记录目标用户名的权限信息,可以从位图映射表中查找第三预设字符对应的位图,作为目标用户名对应的位图。需要说明的是,上述第一、第二、第三预设字符用于在不同的映射表中表示不同的含义,本公开对其具体字符内容不做限定,且第一、第二、第三预设字符也可以是相同的字符,例如第一预设字符和第三预设字符均可以采用{user}。图4示出当请求类型为读请求时,本示例性实施方式的一种示意性流程,包括:步骤s410,获取数据请求,提取其中的目标用户名和目标路径。步骤s420,根据目标路径确定对应的位置编码。步骤s430,在目标用户名的位图中按照位置编码查找到权限编码。步骤s441,解析权限编码中是否具有读权限,例如可以读取权限编码的第1位数值,若为1,则具有读权限,若为0,则不具有读权限。步骤s442,当权限编码中具有读权限时,读取子目录参数的值。其中,子目录参数是系统内设置的一个变量,用于记录目标路径在权限编码对应的路径下是否具有子目录。举例而言,数据请求中初始的目标路径为/apps/hive/warehouse/dwd.db/dwd_test_tb/dt=2018-01-01,但位图中未记录该路径的权限信息,所记录的最接近的父目录为/apps/hive/warehouse/dwd.db。此时可以查找/apps/hive/warehouse/dwd.db的权限编码,并将子目录参数设为真值(具体可以是true或1等);如果位图中直接记录了/apps/hive/warehouse/dwd.db/dwd_test_tb/dt=2018-01-01的权限信息,则直接查找该路径的权限编码,并将子目录参数设为假值(具体可以是false或0等)。步骤s443,当子目录参数为真值时,说明实际查找的数据位于当前目标路径的子目录内,目标用户名对于当前目标路径具有读权限,并不意味着其对于下级的子目录也具有读权限,因此需要解析权限编码中是否具有递归权限。例如可以读取权限编码的第3位数值,若为1,则具有递归权限,若为0,则不具有递归权限。步骤s444,当权限编码中具有递归权限时,说明目标用户名对于当前目标路径下级的子目录也具有读权限,因而确定数据请求具有读权限,即权限校验通过。当权限编码中不具有递归权限时,说明目标用户名对于当前目标路径下级的子目录不具有读权限,但可能存在父目录具有递归权限的情况。例如,用户dwetl对于/apps/hive/warehouse/dwd.db具有读权限,不具有递归权限,可能存在用户dwetl对于/apps/hive/warehouse具有读权限且具有递归权限的情况,因而此时无法判断其对于/apps/hive/warehouse/dwd.db/dwd_test_tb/dt=2018-01-01是否具有读权限。基于此,可以执行步骤s445,从目标路径的末尾删除短路径名,即删除位于目标路径末尾的一个短路径名,例如从/apps/hive/warehouse/dwd.db的末尾删除/dwd.db,这样得到新的目标路径,并从步骤s420开始,重复执行上述流程。步骤s446,当子目录参数为假值时,说明当前目标路径即为数据请求中的目标路径,目标用户名对于该路径具有读权限,因而确定数据请求具有读权限,即权限校验通过。当权限编码中不具有读权限时,还可能存在父目录具有递归权限的情况。因此可以执行步骤s445,从目标路径的末尾删除短路径名,并从步骤s420开始,重复执行上述流程。进一步的,上述流程还可以包括以下步骤:步骤s451,当权限编码中不具有读权限时,判断当前的目标路径是否为根路径。步骤s452,当权限编码中具有读权限、不具有递归权限,且子目录参数为真值时,判断当前的目标路径是否为根路径。步骤s453,当目标路径是根路径时,已无法再删除末尾的短路径名,说明通过每一层级的校验,目标用户名均不具有对目标路径的读权限,因而确定数据请求不具有读权限,即权限校验不通过。当目标路径不是根路径时,执行上述步骤s445,并从步骤s420开始,重复执行上述流程。可见,通过图4的流程,可以对数据请求进行循环式校验,减少权限信息遗漏的情况,得到更加准确的校验结果。应当理解,对于请求类型为写请求等其他情况,处理过程基本相同,只需要将其中解析是否有读权限的步骤变更为解析是否有写权限或其他类型的具体权限即可。在图4的流程中,当从目标路径的末尾删除短路径名时,可以将子目录参数设为真值,以用于下一循环的校验。此外,还可以在执行步骤s120(或s420)时,确定子目录参数的值,以下提供两种具体方案:(1)采用数值映射表将目标路径中的短路径名转换为对应的数值,以将目标路径转换为数值序列时,若目标路径中包含未知短路径名,即数值映射表中查找不到的短路径名,可以将其删除。例如根据表1将目标路径/apps/hive/warehouse/dwd.db/dwd_test_tb/dt=2018-01-01转换为对应的数值序列时,在表1中查找到apps、hive、warehouse和dwd.db,但查找不到短路径名dwd_test_tb和dt=2018-01-01,删除后得到新的目标路径为/apps/hive/warehouse/dwd.db。需要说明的是,在删除短路径名时,需要从末尾连续删除(包括位于两个未知短路径名中间的已知短路径名,已知短路径名指数值映射表存在的短路径名),直到剩余的短路径名都是已知短路径名。举例说明,若目标路径为/apps/hive/warehouse/dwd_test_tb/dwd.db/dt=2018-01-01,则应当从末尾删除dt=2018-01-01、dwd.db和dwd_test_tb,得到新的目标路径/apps/hive/warehouse。如果从目标路径中删除了短路径名,则可以将子目录参数设置为真值;如果未删除短路径名就查找到了位置编码,则可以将子目录参数设置为假值。实际应用中,子目录参数的默认值可以是假值。(2)采用位置编码映射表查找目标路径对应的位置编码时,可以执行以下循环过程:在位置编码映射表中查找目标路径;当查找到目标路径时,读取目标路径对应的位置编码,循环结束;当未查找到目标路径时,判断目标路径是否为根路径;当目标路径是根路径时,输出查找失败的结果,循环结束;当目标路径不是根路径时,删除目标路径末尾的短路径名,得到新的目标路径,并回到上述在位置编码映射表中查找目标路径的步骤。在上述循环过程中,如果从目标路径中删除了短路径名,则可以将子目录参数设置为真值,如果未删除短路径名,则可以将子目录参数设置为假值。实际应用中,子目录参数的默认值可以是假值。通过设置子目录参数,可以对数据进行递归权限的管理,以满足多层级数据文件或数据表的场景需求,提高效率。本公开的示例性实施方式还提供一种权限校验装置。参考图5所示,该权限校验装置500可以包括:数据请求获取模块510,用于获取数据请求,数据请求包括提出数据请求的目标用户名、待请求数据所在的目标路径以及针对待请求数据的请求类型;位置编码确定模块520,用于确定目标路径对应的位置编码;权限编码读取模块530,用于在目标用户名对应的位图中,根据位置编码读取权限编码;权限编码解析模块540,用于解析权限编码,根据上述请求类型确定关于数据请求的权限校验结果。在一种可选的实施方式中,位置编码确定模块520,可以用于在预先建立的位置编码映射表中查找目标路径对应的位置编码。在一种可选的实施方式中,位置编码确定模块520可以包括:数值序列转换单元,用于提取目标路径的短路径名,将目标路径的短路径名分别转换为对应的数值,以得到目标路径对应的数值序列,记为目标数值序列;位置编码查找单元,用于在位置编码映射表中查找目标数值序列对应的位置编码。在一种可选的实施方式中,权限校验装置500还可以包括位置编码映射表建立模块,用于执行以下方法以建立位置编码映射表:统计历史请求中各路径的查询次数,按照查询次数由高到低排列各路径;将各路径分别转换为对应的数值序列,并按照各数值序列的排列顺序分别生成各数值序列对应的位置编码,以建立位置编码映射表;其中,位置编码映射表包括数值序列和位置编码的对应关系,任意相邻两数值序列所对应的位置编码之间相差预设数值,预设数值为权限编码的长度。在一种可选的实施方式中,数值序列转换单元,可以用于在预先建立的数值映射表中查找目标路径的短路径名对应的数值。在一种可选的实施方式中,权限校验装置500还可以包括数值映射表建立模块,用于执行以下方法以建立数值映射表:将历史请求中的路径分割为短路径名;统计每个短路径名的出现次数以及到根路径的距离,以计算每个短路径名的权重;按照权重由高到低排列各短路径名,将每个短路径名的序号作为其对应的数值,以建立数值映射表。在一种可选的实施方式中,权限编码读取模块530,可以用于在预先建立的位图映射表中查找目标用户名对应的位图。在一种可选的实施方式中,位置编码确定模块520,还可以用于当在位置编码映射表中查找目标路径的结果为空时,将目标路径中和目标用户名相同的短路径名替换为第一预设字符,并重新在位置编码映射表中查找目标路径对应的位置编码。在一种可选的实施方式中,权限编码读取模块530,还可以用于在位置编码确定模块将目标路径中的短路径名替换为第一预设字符以查找位置编码的情况下,在位图映射表中查找第二预设字符对应的位图,作为目标用户名对应的位图。在一种可选的实施方式中,权限编码读取模块530,还可以用于当在位图映射表中查找目标用户名的结果为空时,从位图映射表中查找第三预设字符对应的位图,作为目标用户名对应的位图。在一种可选的实施方式中,当请求类型为读请求时,权限编码解析模块540,可以用于执行以下方法以得到关于数据请求的权限校验结果:解析权限编码中是否具有读权限;当权限编码中具有读权限时,读取子目录参数的值;当子目录参数为真值时,解析权限编码中是否具有递归权限;当权限编码中具有递归权限时,确定数据请求具有读权限;当权限编码中不具有递归权限时,从目标路径的末尾删除短路径名,并调度位置编码确定模块520重新确定目标路径对应的位置编码;当子目录参数为假值时,确定数据请求具有读权限;当权限编码中不具有读权限时,从目标路径的末尾删除短路径名,并调度位置编码确定模块520重新确定目标路径对应的位置编码。在一种可选的实施方式中,权限编码解析模块540,还可以用于在从目标路径的末尾删除短路径名前,判断目标路径是否为根路径,当目标路径是根路径时,确定数据请求不具有读权限,当目标路径不是根路径时,从目标路径的末尾删除短路径名,并调度位置编码确定模块520重新确定目标路径对应的位置编码。在一种可选的实施方式中,权限编码解析模块540,还可以用于当从目标路径的末尾删除短路径名时,将子目录参数设为真值。上述装置中各模块/单元的具体细节在方法部分实施方式中已经详细说明,未披露的细节内容可以参见方法部分的实施方式内容,因而不再赘述。所属
技术领域
的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。本公开的示例性实施方式还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在电子设备上运行时,程序代码用于使电子设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。参考图5所示,描述了根据本公开的示例性实施方式的用于实现上述方法的程序产品500,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在电子设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。本公开的示例性实施方式还提供了一种能够实现上述方法的电子设备。下面参照图6来描述根据本公开的这种示例性实施方式的电子设备600。图6显示的电子设备600仅仅是一个示例,不应对本公开实施方式的功能和使用范围带来任何限制。如图6所示,电子设备600可以以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同系统组件(包括存储单元620和处理单元610)的总线630和显示单元640。存储单元620存储有程序代码,程序代码可以被处理单元610执行,使得处理单元610执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。例如,处理单元610可以执行图1或图2所示的方法步骤。存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)621和/或高速缓存存储单元622,还可以进一步包括只读存储单元(rom)623。存储单元620还可以包括具有一组(至少一个)程序模块625的程序/实用工具624,这样的程序模块625包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器660通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开示例性实施方式的方法。此外,上述附图仅是根据本公开示例性实施方式的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的示例性实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施方式。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本
技术领域
中的公知常识或惯用技术手段。说明书和实施方式仅被视为示例性的,本公开的真正范围和精神由权利要求指出。应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1