[b]第4节 Hierarchical RBAC[/b]
Hierarchical RBAC 如图2所示。它与图1的区别之处只在于引入了角色层次关系RH。在讨论角色时,角色的层次经常也会涉及到。支持角色的系统通常也会支持角色的层次。
角色层次是很自然的一种角色组织方式,去体现组织内的权责架构。图3列举了角色层次的例子。从数学的角度,这些层次是偏序(partial order)。偏序即反射,传递,非对称的关系。通常来说,角色权限越大会放在越靠层次图中越高的位置,而权限低的角色会在底部。关于偏序的反射,传递,非对称等特性的要求,已在相关文献中有详细讨论。这方面其实已经达成很多的共识。对于支持任意偏序(arbitrary partial order)所带来好处也是有目共睹。尽管现在很多产品只提供对有限的层次结构的支持,但相对flat RBAC模型还是很重要的一个进步。具体来说,Hierarchical RBAC分为两个子级别,如下。
General Hierarchical RBAC
该级别在角色层次中支持任意偏序。
Limited Hierarchical RBAC
该级别对角色层次的结构有一定限制,即树或反向树等较简单的结构。
[b]4.1 Limited vs. General Hierarchies[/b]
图3(a)是一个反向树结构,假设描述一个工程部门的情景。高级角色在树的顶端,通过关联边连接低级角色。通过传递形成的关联边,如PE1至ED并没有在图中显示,以使避免混乱。部门所有人员都应该有最低级的角色ED。这个角色以上的角色分别属于部门内两个不同项目,左边的项目1和右边的项目2。每个项目有工程师角色,之上更有产品和质量工程师。反向树有助于资源的共享。角色ED可用的资源对于高级角色也是同样可用的。但反向树不支持对多个角色的资源进行聚集。
图3(b)是一个树结构,高级角色汇聚了低级角色的许可。因此PL1拥有PE1和QE1的许可,并可能额外拥有自己特有的许可。树结构可以很方便的进行聚集,但不利于共享。在这个结构中,项目1的角色和项目2 的角色无法进行资源共享。
图3(c)是一个常用层级结构,同时包括了对共享和聚集的支持。这个工程部门中,有一个最低级的角色ED和一个最高级的角色DIR。其他角色处于他们两个角色之间,分别属于两个不同项目。而每个项目中,有最高级的角色(PL1和PL2)和最低级的角色(E1和E2)。还有两个不可相比的角色,产品工程师(PE1和PE2)和质量工程师(QE1和QE2)。这个结构可以扩展到工程部门里的多个甚至上百个项目。而且每个项目可以拥有各自不同的角色层次结构。这个例子也可以扩展到多个部门,各自采用不同结构和策略的。实际应用中,通常都会采用非规则的结构,而非如本例子里如此对称规整。
这里需要强调,本例子中不一定需要有最高级的角色如DIR。同样,最低级的角色ED也不是必需的。如图4中的结构都是可以的。具体层级的设计只需与采用的策略相适应即可。RBAC模型中,级别2a要求支持通用的层级关系(General Hierarchy),而级别2b允许对层级关系进行一定约束(Limited Hierarchy)。
[b]4.2 Limited Inheritance[/b]
高级角色如图3(c)中的DIR由于汇聚了过多的权力,所以通常被认为有较大风险。尽管拥有这些角色的用户非常可信,他们也有可能会犯错或者被恶意程序感染。所以可能需要对角色的继承进行约束,如图5。图5(a)中角色Project Supervisor 继承项目中的所有许可。而图5(b)中,测试工程师用户可以拥有角色Test Engineer'中的某些不被角色Project Supervisor继承的许可。这样角色Test Engineer'将会真正用于分配给测试工程师用户,而角色Test Engineer只是一个设置,以通过它角色Test Engineer'可以继承低级角色的权限。角色Test Engineer'称为私有角色。图5中角色Programmer'也是相似情况。
[b]4.3 Inheritance vs. Activation Hierarchies[/b]
以往文献中对角色层级有两种不同解释。一种解释认为高级角色从低级角色继承许可。这被称为permission-inheritance interpretation,其层级被称为inheritance hierarchy。图3(c)中就是一个继承性层级,角色PL1激活时,所有PL1,PE1,QE1,E1,ED和E的许可都被视为可用。另一种解释认为高级角色的激活,不自动激活低级角色的许可。这被称为activation hierarchy,其层级被称为activation hierarchy。这种情况下,激活角色PL1并不代表低级角色的许可的激活。每个低级角色都必须明确的激活以保证其许可在会话中有效。实际情况下,有可能同时应用这两种解释。这样,activation hierarchy 可能扩展 inheritance hierarchy,或者相对独立的存在。由于现实情况的多样性,NIST模型没有对角色层级的具体含义进行规定。