一种资源权限的配置、获取方法及装置与流程

文档序号:13675608阅读:159来源:国知局

本发明涉及信息安全领域,尤其涉及一种基于位运算实现资源权限的配置获取方案。



背景技术:

在信息化蓬勃发展的今天,企业越来越多的业务依赖于信息系统的支撑。信息系统不可避免地涉及到企业业务的核心机密数据,权限控制已成为信息系统实施的一个研究重点。相比技术缺陷给信息安全带来的威胁,系统管理缺陷更容易带来更大的信息安全风险,一套先进的用户授权体系,实现企业信息系统的统一授权,能够提高信息系统的安全性和可控性,降低后者带来的安全风险。

当前流行的权限模型为rbac(role-basedaccesscontrol,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般都是多对多的关系。



技术实现要素:

本文提供一种资源权限的配置、获取方法及装置,可以解决相关技术中信息安全存在的隐患问题。

本文公开了一种资源权限的获取方法,包括:

根据将要进行的操作类型,将变量tmp的有效值所在的初始位置进行左移;

将左移后的变量tmp和获取的权限操作状态码进行与运算;

如果运算结果不等于0,确定对资源具有操作权限;

如果运算结果等于0,确定对资源没有相应的操作权限;

其中,所述权限操作状态码用于指示各种操作类型对应的操作权限,所述权限操作状态码为integer类型数据;

所述变量tmp为integer类型数据,所述变量tmp的有效值所在的初始位置为最后一位。

可选地,上述方法,还包括:

预先配置操作类型参数,所述操作类型参数为integer整数,其不同取值分别指示不同的操作类型,

所述操作类型至少包括如下一种或几种:

增加、查询、更新、删除。

可选地,上述方法中,所述根据将要进行的操作类型,将变量tmp的有效值所在的初始位置进行左移,包括:

根据将要进行的操作类型确定操作类型参数的取值x,将变量tmp的有效值所在的初始位置左移x个位置。

其中,x为整数,取值范围可选为0~3。

可选地,上述方法中,所述权限操作状态码用于指示各种操作类型对应的操作权限包括:

通过所述权限操作状态码的最后四位分别指示四种操作类型对应的操作权限,其中,各位的取值为有效值时指示各位对应的操作类型的操作权限为允许操作,各位的取值为非有效值时指示各位对应的操作类型的操作权限为不允许操作。

可选地,上述方法,还包括:

配置任一种操作类型的权限时,根据配置的操作类型,将变量tmp的有效值所在的初始位置进行左移;

在配置该种操作类型的权限为允许操作时,将获取的权限操作状态码的值与所述左移后的变量tmp进行或运算,将运算结果作为新的权限操作状态码进行存储;

在配置该种操作类型的权限为不允许操作时,先将所述左移后的变量tmp进行取反操作,再将获取的权限操作状态码的值与取反后的变量tmp进行与运算,将运算结果作为新的权限操作状态码进行存储。

本文还公开了一种资源权限的配置方法,包括:

配置任一种操作类型的权限时,根据配置的操作类型,将变量tmp的有效值所在的初始位置进行左移;

在配置该种操作类型的权限为允许操作时,将获取的权限操作状态码的值与所述左移后的变量tmp进行或运算,将运算结果作为新的权限操作状态码进行存储;

其中,所述权限操作状态码用于指示各种操作类型对应的操作权限,所述权限操作状态码为integer类型;

所述变量tmp为integer类型,所述变量tmp的有效值所在的初始位置为最后一位。

可选地,上述方法,还包括:

在配置该种操作类型的权限为不允许操作时,先将所述左移后的变量tmp进行取反操作,再将获取的权限操作状态码的值与取反后的变量tmp进行与运算,将运算结果作为新的权限操作状态码进行存储。

可选地,上述方法中,所述权限操作状态码用于指示各种操作类型对应的操作权限包括:

通过所述权限操作状态码的最后四位分别指示四种操作类型对应的操作权限,其中,各位的取值为有效值时指示各位对应的操作类型的操作权限为允许操作,各位的取值为非有效值时指示各位对应的操作类型的操作权限为不允许操作。

可选地,上述方法,还包括:

预先配置操作类型参数,所述操作类型参数为integer整数,其不同取值分别指示不同的操作类型,

所述操作类型至少包括如下一种或几种:

增加、查询、更新、删除。

可选地,上述方法中,所述根据配置的操作类型,将变量tmp的有效值所在的初始位置进行左移,包括:

根据配置的操作类型确定操作类型参数的取值x,将变量tmp的有效值所在的初始位置左移x个位置。

本文还公开了一种资源权限的获取装置,包括:

第一单元,根据将要进行的操作类型,将变量tmp的有效值所在的初始位置进行左移;

第二单元,将左移后的变量tmp和获取的权限操作状态码进行与运算;

第三单元,当运算结果不等于0时,确定对资源具有操作权限,当运算结果等于0时,确定对资源没有相应的操作权限;

其中,所述权限操作状态码用于指示各种操作类型对应的操作权限,所述权限操作状态码为integer类型数据;

所述变量tmp为integer类型数据,所述变量tmp的有效值所在的初始位置为最后一位。

可选地,上述装置,还包括:

第四单元,预先配置操作类型参数,所述操作类型参数为integer整数,其不同取值分别指示不同的操作类型,所述操作类型至少包括如下一种或几种:

增加、查询、更新、删除。

可选地,上述装置中,述第四单元,预先配置权限操作状态码,配置权限操作状态码的最后四位分别指示四种操作类型对应的操作权限,其中,配置各位的取值为有效值时指示各位对应的操作类型的操作权限为允许操作,配置各位的取值为非有效值时指示各位对应的操作类型的操作权限为不允许操作。

本文还公开了一种资源权限的配置装置,包括:

第一单元,配置任一种操作类型的权限时,根据配置的操作类型,将变量tmp的有效值所在的初始位置进行左移;

第二单元,在配置该种操作类型的权限为允许操作时,将获取的权限操作状态码的值与所述左移后的变量tmp进行或运算,将运算结果作为新的权限操作状态码进行存储;

其中,所述权限操作状态码用于指示各种操作类型对应的操作权限,所述权限操作状态码为integer类型;

所述变量tmp为integer类型,所述变量tmp的有效值所在的初始位置为最后一位。

可选地,上述装置中,所述第二单元,在配置该种操作类型的权限为不允许操作时,先将所述左移后的变量tmp进行取反操作,再将获取的权限操作状态码的值与取反后的变量tmp进行与运算,将运算结果作为新的权限操作状态码进行存储。

可选地,上述装置,还包括:

第三单元,配置权限操作状态码的最后四位分别指示四种操作类型对应的操作权限,其中,配置各位的取值为有效值时指示各位对应的操作类型的操作权限为允许操作,配置各位的取值为非有效值时指示各位对应的操作类型的操作权限为不允许操作。

可选地,上述装置中,所述第三单元,预先配置操作类型参数,所述操作类型参数为integer整数,其不同取值分别指示不同的操作类型,

所述操作类型至少包括如下一种或几种:

增加、查询、更新、删除。

本申请技术方案运用计算中资源以二进制形式存放的特性,使用位运算设置和获取资源权限,在数据量较大情况下显著提高了运算速度;且算法简单明了,仅使用32位整数中的4位,不但能满足现有需求,而且后期也极易于新需求的扩展。

附图说明

图1为本发明实施例提供的基于acl控制的rbac权限模型示意图;

图2为本发明实施例中资源权限的获取方法流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文将结合具体实施方式对本发明技术方案作进一步详细说明。需要说明的是,在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

本发明申请人提出,可以运用计算中资源以二进制形式存放的特性,使用位运算计算来设置和获取资源权限,可以在数据量较大情况下显著提高运算速度。例如,可以从软件开发者角色考虑,系统软件资源的管理主要就是crud操作(c:增加资源,r:查找资源,u:更新资源,d:删除资源);用户级别不同,能够访问的资源级别也不同,设计一套合理的资源权限保存和读取算法,能够起到事半功倍的效果。本申请发明人采用访问控制对象acl控制角色对资源的操作权限,其模型如图1所示。图中user为用户表、role为角色表、userrole为用户角色表、module为资源表、acl为访问控制表,其中acl表记录了角色对某个资源的操作权限,表中主体标志属性代表当前权限为角色还是用户,主体id属性代表用户或者角色的id,模块id属性代表权限控制的对应资源,操作权限状态码属性代表用户对资源具有的增加、删除、修改以及查询权限。

基于上述思想,本实施例提供一种资源权限的获取方法,如图2所示,主要包括如下操作:

步骤200,根据将要进行的操作类型,将变量tmp的有效值所在的初始位置进行左移;

其中,变量tmp为integer类型数据,所述变量tmp的有效值所在的初始位置为最后一位。

步骤201,将左移后的变量tmp和获取的权限操作状态码进行与运算;

其中,权限操作状态码用于指示各种操作类型对应的操作权限,权限操作状态码为integer类型数据;

步骤202,如果运算结果不等于0,确定对资源具有操作权限;

如果运算结果等于0,确定对资源没有相应的操作权限。

要说明的是,上述方法中涉及操作类型,其需要一个参数来表示。即可以预先配置操作类型参数,该操作类型参数为integer整数,其不同取值分别指示不同的操作类型。本文涉及的操作类型至少包括如下一种或几种:

增加、查询、更新、删除。

基于上述操作类型参数,就可以根据将要进行的操作类型,将变量tmp的有效值所在的初始位置进行左移,即根据将要进行的操作类型确定操作类型参数的取值x,将变量tmp的有效值所在的初始位置左移x个位置即可。

具体地,权限操作状态码指示各种操作类型对应的操作权限的方式有多种多样。可选地,可以通过权限操作状态码的最后四位分别指示四种操作类型对应的操作权限,其中,各位的取值为有效值(例如取值为1时可认为是有效值)时指示各位对应的操作类型的操作权限为允许操作,各位的取值为非有效值(例如取值为0)时指示各位对应的操作类型的操作权限为不允许操作。

除了述操作外,在获取资源权限之前,还可以包括配置操作。当配置任一种操作类型的权限时,根据配置的操作类型,将变量tmp的有效值所在的初始位置进行左移;

在配置该种操作类型的权限为允许操作时,将获取的权限操作状态码的值与所述左移后的变量tmp进行或运算,将运算结果作为新的权限操作状态码进行存储;

在配置该种操作类型的权限为不允许操作时,先将所述左移后的变量tmp进行取反操作,再将获取的权限操作状态码的值与取反后的变量tmp进行与运算,将运算结果作为新的权限操作状态码进行存储。

本实施例还提供一种资源权限的配置方法,主要包括如下操作:

配置任一种操作类型的权限时,根据配置的操作类型,将变量tmp的有效值所在的初始位置进行左移;

在配置该种操作类型的权限为允许操作时,将获取的权限操作状态码的值与左移后的变量tmp进行或运算,将运算结果作为新的权限操作状态码进行存储;

其中,权限操作状态码用于指示各种操作类型对应的操作权限,所述权限操作状态码为integer类型;

变量tmp为integer类型,所述变量tmp的有效值所在的初始位置为最后一位。

另外,在配置该种操作类型的权限为不允许操作时,可以先将左移后的变量tmp进行取反操作,再将获取的权限操作状态码的值与取反后的变量tmp进行与运算,将运算结果作为新的权限操作状态码进行存储。

由于上述配置方法与获取方法可以配合使用,因此,对于各参数的定义也是相同的。例如,权限操作状态码可以通过权限操作状态码的最后四位分别指示四种操作类型对应的操作权限,其中,各位的取值为有效值时指示各位对应的操作类型的操作权限为允许操作,各位的取值为非有效值时指示各位对应的操作类型的操作权限为不允许操作。

同样的,操作类型参数的配置以及根据配置的操作类型,将变量tmp的有效值所在的初始位置进行左移的过程均参见上文中的对应内容,故在此不再赘述。

下面结合具体应用说明本申请技术方案的具体实施。

以java语言为编码描述语言为例,基于acl控制rbac权限模型为基础具体说明本申请技术方案的部署实施方式,对于用户类、角色类、资源类以及用户角色类的定义说明因不是本文重点故文中不在描述。此种场景下,配置以及获取资源权限的完整过程包括如下操作:

s1、定义访问控制表中acl的操作权限状态码,用于指示各种操作类型对应的操作权限,操作权限状态码可配置为integer类型,由于一个integer类型有32位,本文中取用integer类型的后四位分别表示增加、查询、更新和删除操作,后四位的具体取值为1或者0,根据取值可以表示是否允许操作资源,例如1可以表示允许操作资源,0表示不允许操作资源。举例说明,integer类型的操作权限状态码后四位依次表示增加、查询、更新和删除操作,若操作权限状态码的倒数第一位表示删除操作,倒数第一位的取值为1时表示允许删除操作。

例如,定义访问控制对象acl类,可采用如下所示的acl类定义,其中moduleid代表对应的资源,aclstate代表资源的操作权限状态码,类型为integer类型的整数。

访问控制对象acl类定义:

s2、定义操作类型,为了便于下文描述清楚,将操作类型设置为参数permission,为integer整数,操作类型主要包括增加、删除、更新、查询4种。本文中,定义0代表增加操作,1代表查询操作(本文中查询操作包含读取资源),2代表更新操作,3代表删除操作。

具体的资源操作类型可采用如下所示的定义。

资源操作类型定义:

s3、其次根据上述定义设置资源的操作权限(即设置操作权限状态码)。可以在访问控制对象acl中添加“设置方法”,传递参数包含资源操作类型和是否允许操作的信息。根据上述的定义可知操作类型(即参数permission)的值为0(增加)、1(查询)、2(更新)以及3(删除);具体设置操作权限状态码的过程如下:

3.1、定义integer类型的临时变量tmp其值为1,即临时变量tmp的最后一位取值为1,其他位取值为0;

3.2、将临时变量tmp的有效值所在位左移permission位,即根据操作类型(permission参数),将临时变量tmp的最后一位的取值1进行左移。例如,操作类型为查询,即permission参数的取值为1,将临时变量tmp的最后一位的取值1左移一位即可,此时,临时变量tmp的倒数第二位的取值为1,其他各位的取值为0;

3.3、如果设置为允许操作资源时,将旧的权限操作状态码(即当前存储的权限操作状态码,acl表中的状态码)的值与tmp进行“或运算”,运算结果即为新的权限操作值;

如果设置为不允许操作资源,先现将tmp进行取反操作,再将旧的权限操作状态码的值与取反后的tmp进行“与运算”,运算结果即为新的权限操作值。

具体地,设置资源操作权限。从面向对象的角度设计,在acl类中添加“设置资源操作权限方法”,可以采用java语言实现。采用java语言实现设置资源操作权限的过程如下:

s4、获取资源的操作权限。即可以在访问控制对象acl中添加“读取方法”,传递参数可以包括资源操作类型的信息。根据2的定义可知,传递的操作类型参数permission的值可以为0(表示增加操作)、1(表示查询操作)、2(表示更新操作)以及3(表示删除操作);具体执行如下:

4.1、定义integer类型的临时变量tmp其值为1,即临时变量tmp的最后一位取值为1,其他位取值为0;

4.2、将临时变量tmp的有效值所在位左移permission位,即根据操作类型(permission参数),将临时变量tmp的最后一位的取值1进行左移。例如,操作类型为更新,即permission参数的取值为2,将临时变量tmp的最后一位的取值1左移两位即可,此时,临时变量tmp的倒数第三位的取值为1,其他各位的取值为0;

4.3、将左移的tmp和当前的权限操作状态码进行“与运算”;

4.4、如果运算结果不等于0,表示对资源有操作权限(即对于permission参数指示的操作类型具有操作权限),返回允许资源操作标识符即可;

如果运算结果等于0,表示对资源没有相应的操作权限(即对于permission参数指示的操作类型不具有操作权限),返回不允许资源操作标识符即可。

具体地,读取资源操作权限。同上述s3一样在acl类中添加“读取资源操作权限方法”,可以采用java语言实现。采用java语言实现读取资源操作权限的过程如下:

本实施例还提供一种资源权限的获取装置,包括:

第一单元,根据将要进行的操作类型,将变量tmp的有效值所在的初始位置进行左移;

第二单元,将左移后的变量tmp和获取的权限操作状态码进行与运算;

第三单元,当运算结果不等于0时,确定对资源具有操作权限,当运算结果等于0时,确定对资源没有相应的操作权限;

其中,所述权限操作状态码用于指示各种操作类型对应的操作权限,所述权限操作状态码为integer类型数据;

所述变量tmp为integer类型数据,所述变量tmp的有效值所在的初始位置为最后一位。

在上述装置的架构基础上,还可以包括:第四单元,主要进行各种配置操作。例如,预先配置操作类型参数,操作类型参数为integer整数,其不同取值分别指示不同的操作类型,操作类型至少包括如下一种或几种:

增加、查询、更新、删除。

第四单元,还可以预先配置权限操作状态码,配置权限操作状态码的最后四位分别指示四种操作类型对应的操作权限,其中,配置各位的取值为有效值时指示各位对应的操作类型的操作权限为允许操作,配置各位的取值为非有效值时指示各位对应的操作类型的操作权限为不允许操作。

由于本实施例提供的资源权限的获取装置可以实现上述实施例中公开的资源权限的获取方法,因此本装置的其他详细操作可以参见上述方法的对应内容,在此不再赘述、

本实施例还一种资源权限的配置装置,主要包括如下各单元。

第一单元,配置任一种操作类型的权限时,根据配置的操作类型,将变量tmp的有效值所在的初始位置进行左移;

第二单元,在配置该种操作类型的权限为允许操作时,将获取的权限操作状态码的值与所述左移后的变量tmp进行或运算,将运算结果作为新的权限操作状态码进行存储;

其中,所述权限操作状态码用于指示各种操作类型对应的操作权限,所述权限操作状态码为integer类型;

所述变量tmp为integer类型,所述变量tmp的有效值所在的初始位置为最后一位。

第二单元,在配置该种操作类型的权限为不允许操作时,先将所述左移后的变量tmp进行取反操作,再将获取的权限操作状态码的值与取反后的变量tmp进行与运算,将运算结果作为新的权限操作状态码进行存储。

可选地,上述装置还可以包括:第三单元,主要进行配置操作。例如。配置权限操作状态码的最后四位分别指示四种操作类型对应的操作权限,其中,配置各位的取值为有效值时指示各位对应的操作类型的操作权限为允许操作,配置各位的取值为非有效值时指示各位对应的操作类型的操作权限为不允许操作。

第三单元,还可以预先配置操作类型参数,所述操作类型参数为integer整数,其不同取值分别指示不同的操作类型,

所述操作类型至少包括如下一种或几种:

增加、查询、更新、删除。

由于本实施例提供的资源权限的配置装置可以实现上述实施例中公开的资源权限的配置方法,因此本装置的其他详细操作可以参见上述方法的对应内容,在此不再赘述、

从上述实施例可以看出,本申请技术方案在rbac权限控制模型基础上,采用acl控制方式,提出一种使用移位操作快速设置和读取角色对资源操作权限的算法。算法巧妙利用了计算机中任何数据都是以二进制形式0和1存储的特性,采用integer类型整数保存权限,因integer类型的整数在计算机中占32位,而操作权限只占其中4位,还有28位没有被利用,因此本申请技术方案不但能满足现有需求,极大提高计算机的运算速度,而且后期也极易于新需求扩展。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。

以上所述,仅为本发明的较佳实例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1