2021-11-06 10:38:09
RBAC(基于角色的权限访问控制)是一种通过角色关联权限、用户通过角色获得权限的访问控制理念,支持最小权限、责任分离和数据抽象原则,包含RBAC0、RBAC1、RBAC2、RBAC3四种模型。以下是详细介绍:
RBAC核心理念Who:权限的拥用者或主体,如Principal、User、Group、Role、Actor等。
What:权限针对的对象或资源,如Resource、Class。
How:具体的权限,包括正向授权与负向授权,通过操作(Operator)表明对What的How操作,也就是Privilege + Resource。
定义:由用户集合(U)、角色集合(R)、许可权集合(P)、会话集合(S)以及许可权与角色之间多对多的指派关系(PA P×R)、用户与角色之间多对多的指派关系(UA U×R)确定。用户通过会话映射到单个用户,角色通过会话映射到角色子集,会话拥有相应角色的许可权。
要求:每个许可权和每个用户至少应该被分配给一个角色。两个角色被分配的许可权完全一样是可能的,但仍是两个完全独立的角色,用户也有类似情况。角色可以看作是一种语义结构,是访问控制策略形式化的基础。
权限处理:把许可权处理为非解释符号,其精确含义只能由实现确定且与系统有关。许可权只能应用于数据和资源类客体,但不能应用于模型本身的组件。修改集合U、R、P和关系PA和UA的权限称为管理权限,假定只有安全管理员才能修改这些组件。
会话管理:会话由单个用户控制,用户可以创建会话,并有选择地激活用户角色的某些子集。在一个会话中的角色的激活由用户决断,会话的终止也由用户初始化。RBAC0不允许由一个会话去创建另一个会话,会话只能由用户创建。
定义:在RBAC0的基础上,引入了角色等级或角色支配关系(RH R×R,可用≥符号表示)。用户通过会话映射到单个用户,角色通过会话映射到角色子集,该子集受角色等级关系的影响,会话拥有相应角色的许可权也受角色等级关系制约。
特点:实现了角色的分层管理,高级角色可以继承低级角色的权限,使得权限分配更加符合组织的层次结构。例如,在一个企业中,“部门经理”角色可以继承“普通员工”角色的部分权限,同时拥有自己特有的管理权限。
定义:在RBAC0模型基础上增加限制因素形成,与RBAC1并不兼容。限制可以施加到RBAC0模型中的所有关系和组件上,用于确定各个组件的值是否可接受。
常见限制类型
互斥角色限制:各自权限可以互相制约的两个角色,一个用户在某一次活动中只能被分配其中的一个角色。例如,在审计活动中,一个用户不能同时被指派给会计角色和审计员角色。
角色基数限制:限制一个角色的最大成员数。例如,一个单位的最高领导只能为1人,中层干部的数量也是有限的。
先决角色限制:在为用户指派某个角色A时,要求该用户必须是角色B的一个成员,B角色成为角色A的先决角色。例如,一个数学副教授应该从数学讲师中提拔,讲师是任副教授的先决角色。
会话限制:可以允许一个用户被指派给两个角色,但不允许在同一时间内把该用户在两个角色中都激活;还可以限制一个用户在同一时间内可以激活的会话的数量,以及对该用户所激活的会话中所分配许可权的数量。
定义:把RBAC1和RBAC2组合在一起,提供角色的分级和继承的能力。
新问题:限制也可以应用于角色等级本身,可能会影响偏序关系。例如,附加的限制可能会限制一个给定角色的应有的下级角色的数量;两个或多个角色可能被限制成没有公共的上级角色或下级角色;在限制和角色的等级之间会产生敏感的相互影响。

