基于角色的访问控制:RBAC模型笔记

时间:2021-09-01 15:28:44


         基于角色的访问控制(Role-Based Access Control,RBAC),RBAC认为授权实际就是who,what,how三者之间的关系,即whowhat进行how的操作。Who,权限的拥用者或主体(如PrincipalUserGroupRoleActor等等);what,权限针对的对象或资源(ResourceClassHow,具体的权限(Privilege,正向授权与负向授权)。RBAC模型支持最小特权原则、责任分离原则。

        最小特权原则是系统安全中最基本的原则之一。所谓最小特权(Least Privilege),指的是"在完成某种操作时所赋予网络中每个主体(用户或进程)必不可少的特权"。最小特权原则,则是指"应限定网络中每个主体所必须的最小特权,确保可能的事故、错误、网络部件的篡改等原因造成的损失最小"。最小特权原则一方面给予主体"必不可少"的特权,这就保证了所有的主体都能在所赋予的特权之下完成所需要完成的任务或操作;另一方面,它只给予主体"必不可少"的特权,这就限制了每个主体所能进行的操作。


基本模型RBAC0模型

    定义:RBAC0模型由以下描述确定:

URPS分别表示用户集合、角色集合、许可权集合和会话集合。

PA P×R表示许可权与角色之间多对多的指派关系。

UA U×R表示用户与角色之间多对多的指派关系。

用户:SU每个会话si到单个用户user(si)的映射函数(常量代表会话的声明周期)。

角色:SR每个会话si到角色子集roles(si) {r|user(si, r')UA}(能随时间改变)的映射函数,会话si有许可权Urroles(si){p|(p,r')PA}

在使用RBAC0模型时,应该要求每个许可权和每个用户至少应该被分配给一个角色。两个角色被分配的许可权完全一样是可能的,但仍是两个完全独立的角色,用户也有类似情况。角色可以适当的被看做是一种语义结构,是访问控制策略形式化的基础。

 

角色分级模型RBAC1 

    定义:RBAC1由以下内容确定

URPS分别表示用户集合、角色集合、许可权集合和会话集合。

PA P×R表示许可权与角色之间多对多的指派关系。

UA U×R表示用户与角色之间多对多的指派关系。

RH R×R是对R的偏序关系,称为角色等级或角色支配关系,也可用≥符号表示。

用户:SU每个会话si到单个用户user(si)的映射函数(常量代表会话的声明周期)。

角色:SR每个会话si到角色子集roles(si) {r|(r'r)[user(si,r')UA]}(能随时间改变)的映射函数,会话si有许可权Urroles(si){p|(r''r)[(p,r'')PA]} 

 

限制模型RBAC2 

        RBAC2模型是在RBAC0模型增加限制后形成的,它与RBAC1并不兼容。RBAC2定义如下: 

定义:除了在RBAC0中增加了一些限制因素外,RBAC2未加改变的来自于RBAC0,这些限制是用于确定RBAC0中各个组件的值是否是可接受的,只有那些可接受的值才是允许的。

        RBAC2中引入的限制可以施加到RBAC0模型中的所有关系和组件上。RBAC2中的一个基本限制时互斥角色的限制,互斥角色是指各自权限互相制约的两个角色。对于这类角色一个用户在某一次活动中只能被分配其中的一个角色,不能同时获得两个角色的使用权。

例如,在审计活动中,一个角色不能同时被指派给会计角色和审计员角色。又如,在公司中,经理和副经理的角色也是互斥的,合同或支票只能由经理签字,不能由副经理签字。在为公司建立的RBAC2模型中,一个用户不能同时兼得经理和副经理两个角色。模型汇总的互斥限制可以支持权责分离原则的实现。

    更一般化而言,互斥限制可以控制在不同的角色组合中用户的成员关系是否是可接受的。例如,一个用户可以既是项目A的程序员,也可以是项目B的测试员和项目C的验收员,但他不能同时成为同一个项目中的这3个角色。RBAC2模型可以对这种情况进行限制。

另一个用户指派限制的例子是一个角色限制其最大成员数,这被称为角色的基数限制。例如,一个单位的最高领导只能为1人,中层*的数量也是有限的,一旦分配给这些角色的用户数超过了角色基数的限制,就不再接受新配给的用户了。

 

统一模型RBAC3

        RBAC3RBAC1RBAC2组合在一起,提供角色的分级和继承的能力。但把这两种概念组合在一起也引起一些新问题。

限制也可以应用于角色等级本身,由于角色间的等级关系满足偏序关系,这种限制对模型而言是本质性的,可能会影响这种偏序关系。例如,附加的限制可能会限制一个给定角色的应有的下级角色的数量。

    两个或多个角色由可能被限制成没有公共的上级角色或下级角色。这些类型的限制在概念角色等级的权力已经被分散化的情况下是有用的,但是安全主管却希望对所有允许这些改变的方法加以限制。 

在限制和角色的等级之间也会产生敏感的相互影响。一个项目成员不允许同时担任程序员与测试员的角色,但项目管理员所处的位置显然是违反了该限制。在某种情况下由高等级的角色违反这种限制是可接受的,但在其他情况下又不允许这种违反现象发生。 

    从严格性的角度来讲,模型的规则不应该是一些情况下不允许而在另一情况下是允许的。类似的情况也会发生在对基数的限制上。假定限制一个用户至多能分配给一个角色,那么对图中的测试员的一个指派能够未被这种限制吗?换句话说,基数限制是不是只能用于直接成员,是否也能应用于继承成员上?

 

    在RBAC中,用户就是一个可以独立访问计算机系统中的数据或者用数据表示的其他资源的主体。角色是指一个组织或任务中的工作或者位置,它代表了一种权利、资格和责任。许可(特权)就是允许对一个或多个客体执行的操作。一个用户可经授权而拥有多个角色,一个角色可由多个用户构成;每个角色可拥有多种许可,每个许可也可授权给多个不同的角色。每个操作可施加于多个客体(受控对象),每个客体也可以接受多个操作。

用户表(USERS)包括用户标识、用户姓名、用户登录密码。用户表是系统中的个体用户集,随用户的添加与删除动态变化。

角色表(ROLES)包括角色标识、角色名称、角色基数、角色可用标识。角色表是系统角色集,由系统管理员定义角色。

客体表(OBJECTS)包括对象标识、对象名称。客体表是系统中所有受控对象的集合。

操作算子表(OPERATIONS)包括操作标识、操作算子名称。系统中所有受控对象的操作算子构成操作算子表。

许可表(PERMISSIONS)包括许可标识、许可名称、受控对象、操作标识。许可表给出了受控对象与操作算子的对应关系。

角色/许可授权表包括角色标识、许可标识。系统管理员通过为角色分配或取消许可管理角色/许可授权表。



    此外,还有ARBAC97模型,DRBAC模型。