1 动机
基于角色的访问控制(RBAC)模型被普遍认为是一种有效的访问控制模型,它比传统的自主访问控制(DAC)和强制访问控制(MAC)具有更高的灵活性和更好的扩展性。
在实际应用中,随着企业规模以及信息系统规模逐渐扩大,系统中角色的数目也随之急剧增加,从而使得角色管理、用户角色指派、权限角色指派的工作非常繁重且易于出错。
很多角色具有类似的权限,也赋给了类似的用户。
例如企业中不同分公司的经理角色,它们都具有查看其所属分公司的产品销售报表的权限,这些角色也分别赋给了各个分公司的经理。
对于这些角色,可以将影响角色的因素抽象成参数,从而简化角色管理、用户角色指派、权限角色指派的工作。
RBAC模型图
2 参数化的RBAC模型
以为企业管理设计的访问控制系统为例。
企业内部存在诸多机构层次,每个机构层次都有一些部门,每个部门里一般都有一些固定的职务。
机构:总公司、分公司。
部门:家电部、彩电部。
职务:经理、开发人员、销售人员、普通职员。
2.1 参数化的RBAC模型的直观意义
机构、部门和职务的偏序关系如下:
如果用RBAC基本模型,需要定义16个角色。
把机构和部门定义为参数。
这样用参数化的RBAC模型,则只需要定义4个角色,使得角色的管理很简单。
用户角色指派和权限角色指派是通过定义角色实例(Role Instance)来实现的。
一个角色实例是一个角色和一组实例化后的参数组成的有序组。例如:(经理,{总公司},{彩电部})是一个角色实例。
2.3 P-RBAC管理模型P-ARBAC
参数化的RBAC模型中的参数管理
参数化的RBAC模型中的角色管理 P-RRA
参数化的RBAC模型中的用户角色指派 P-URA
参数化的RBAC模型中的权限角色指派 P-PRA
2.3.1 参数的选择
根据实际应用中的经验,我们给出了2条参数的选择条件作为参考。
1.参数与用户和权限有某种联系。
用户角色指派和权限角色指派可以实现一定程度的自动化。
简化用户角色指派和权限角色指派工作,避免出错。
2.参数的取值在含义上有明显的层次关系,但不能有多重继承。
使得参数集的偏序关系特殊化,简化角色实例中的偏序关系的判断。
参数值成树形结构,便于存储和查找。
2.3.2 参数取值集合中偏序的管理
由于参数的选择满足上面的条件(2),所以可以通过参数取值的层次来表示偏序。
例如对于机构这个参数的管理,我们可以用“/”表示总部,“/HBDQ/”表示华北大区,“/HBDQ/BJFGS/”表示北京分公司,用“/”作为分隔符即可方便的表示偏序。
这种结构也很适合在目录服务器中存储。
2.3.3 参数的增加和删除
增加参数,就在原有参数模板的最后新加一个参数集,原有角色实例在这个参数上赋空集。
删除参数,在每个角色实例中删除该参数对应的参数值集合。
**由于在P-RBAC模型中角色和参数是松耦合的,所以在实现中,增加和删除参数无需对原有角色实例作任何修改
参数的基数限制
2.3.4 参数的静态基数限制。
我们可以定义实例化角色时在该角色某个参数集上的基数限制。
可以实现“一个用户不能在多个机构中担任会计”这类限制。
eg:我们可以定义角色“会计”在“机构”这个参数上的静态基数是1。这样(会计,{北京,上海})将是一个非法的角色实例,不会被创建。
2.3.5 参数的动态基数限制。
我们可以定义激活角色实例时在该角色某个参数集上的基数限制。
可以实现“允许一个用户在多个机构中担任会计,但是在一次会话中只能激活其中的一个”这类限制。
P-RBAC模型中的角色管理 P-RRA
P-RBAC模型中的角色和RBAC基本模型中的角色没有,可以采用RBAC基本管理模型进行管理,也可以采用各种对RBAC基本管理模型的扩展来进行扩展的角色管理。
P-RBAC中的用户角色指派 P-URA
在对用户指派角色实例时,从用户的信息中提取对应于P-RBAC模型中参数的信息,并作为角色实例该参数的默认值。
同时允许管理员进行手工修改,以实现细粒度的管理
P-RBAC中的权限角色指派 P-PRA
由于权限和用户的地位是对称的,所以P-PRA实际上是P-URA的对偶模型,同样可以利用参数和权限的联系实现一定程度的自动化。
3 有关参数化的RBAC模型的讨论
3.1 简化了角色管理工作。
通过引入参数模板,使得角色数目大大减小,从而使得角色管理的工作大大简化。
在对TCL的角色统计中,角色数目由为引入参数模板前的近9000个角色减少为几十个角色。
3.2 减少用户和权限拥有的角色实例数
假设有个用户u同时是北京分公司和天津分公司的经理,则没有引入参数模板之前,需要指派给u两个角色:北京经理,天津经理。在引入参数模板之后,则u只有一个角色实例:(经理,{北京,天津})。这也简化了判断一个会话中用户是否拥有权限的工作。
在TCL的权限记录中一个页面的访问权限原来有1000多条记录,但是引入参数模板后就简化成了1条记录。
3.3. 角色实例是基于内容的,方便管理员管理
参数具有一定的含义,且有明显的层次关系,所以角色实例是基于内容(Content-Based)的。
管理员在进行用户角色实例指派和权限角色实例指派时可以充分利用参数的含义,方便管理,减少出错。
3.4. P-URA和P-PRA可以实现一定程度自动化
由于参数和用户及权限有一定的联系,所以在进行用户角色实例指派和权限角色实例指派时可以实现自动化,提供管理员默认的参数值,简化管理员的管理工作。
5.具有良好的可扩展性
由于我们在P-RBAC模型中定义了增加参数和删除参数的操作,当企业业务发生变化或者管理员发现需要增加参数或者减少参数来简化管理时,可以方便的实现,而且不用修改原来的数据。从而提高了系统的适应性和可扩展性。
局限和解决方案
1.参数的选择需要仔细考虑,而且需要存储和管理参数上的偏序
对于一个实际系统,应该根据前面提到的参数选择的标准,根据实际需要来确定参数。一般来说,机构,部门等是合适的参数选择。
局限和解决方案
2.角色实例的继承关系没有存储,从而在每次访问控制决策时都要进行偏序判断。
由于角色数目大大减小,我们可以在角色中存储它所有的祖先角色和子孙角色,无需对角色偏序进行递归搜索。
由于我们的选择的参数有明显的层次关系,所以参数的取值一般会显式的表现出偏序关系。
我们引入了缓存机制来提高系统效率。
4 结论
本文提出了RBAC的一种扩展模型—参数化的RBAC模型,并给出了参数化的RBAC模型的形式化定义。
本文还讨论了参数化的RBAC管理模型,并且根据在实际应用中的经验,给出了参数选择和管理的一些建议。
最后对参数化的RBAC模型的优缺点进行了讨论。