1、RBAC0
RBAC0(Core RBAC)定义了能构成一个RBAC控制系统的最小的元素集合。在RBAC0之中,包含最基本的5个元素:用户集(users,USERS)、角色集 (roles,ROLES)、目标/对象集(objects,OBS)、操作集(operations,OPS)、许可权/特权集 (permissions,PRMS)。权限被赋予角色,而不是用户,当一个角色被指定给一个用户时,此用户就拥有了该角色所包含的权限。会话集 (sessions,SESSIONS)是用户与激活的角色集合之间的映射。RBAC0与传统访问控制的差别在于增加一层间接性(角色)带来了灵活 性,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的扩展。
RBAC0模型如图2所示:
图2:RBAC0模型
用户(User):代表人,也可以是一台机器、agent、或者其他任何智能型物品。
角色(Role):表示一个工作职责,在一个组织机构环境中的工作职责。该职责可以关联一些关于权力和责任的语义。
权 限(Permission):是一个许可,对在一个或多个对象上执行操作的许可。如:“一个文档”不是权限,“删除”也不是权限,只有“对文档的删除”才 是权限。由于RBAC标准定义的权限是正向授权(正权限),并没有禁止负向授权(负权限),因此可以自定义负权限。正向授权在开始时假定主体没有任何权 限,然后根据需要授予权限,适合于权限要求严格的系统。负向授权在开始时假定主体有所有权限,然后将某些特殊权限收回。
操作(Operation):是程序的可执行的反映(image),被用户调用和执行。操作的类型取决于实现系统的类型。
对象(Object):表示资源(Resource)或目标,任何访问控制机制都是为了保护系统的资源。对象包括:文件、目录,数据库表、行、字段,磁盘空间,打印机,甚至CPU周期等。
会 话(Session)在RBAC0中是比较隐晦的一个元素。RBAC标准定义:每个会话是一个映射,一个用户到多个角色的映射。当一个用户激活他所有角色 的一个子集时,建立一个会话。每个会话和单个用户关联,每个用户可以关联到一个或多个会话。当用户执行一段过程(Process)或一个动作 (Action)时,将使用到相关的Role(所有Role的子集);这个过程就可以称为一个会话。
2、RBAC1
RBAC1(Hierarchical RBAC)引入角色间的继承关系。
角 色间的继承关系可分为一般(General)继承关系和受限(Limited)继承关系。一般继承关系仅要求角色继承关系是一个绝对偏序关系,允许角色间 的多继承。而受限继承关系则增加了职责关系的分离,进一步要求角色继承关系是一个树结构。一般继承的RBAC和受限继承的RBAC两者的区别在于:前者是 图;而后者可以有多个父节点但只能有一个子节点,是一个反向树结构。
RBAC1模型如图3:
图3:RBAC1模型
角 色继承用于解决复杂组织机构之间的权限关系。它是一种“很自然地”对组织机构层次中权限和责任的映射。如:总经理→部门经理→业务员。角色继承的方向和用 户的关系方向相反,即权限最小的在顶端:业务员→部门经理→总经理。如:若所有role_salesman(业务员)的权限都是role_Mgr(经理) 的权限,那么role_Mgr继承自role_salesman。
3、RBAC2
RBAC2(Constraining RBAC)模型中添加了责任分离(Separation of Duty ,SoD)关系;这是RBAC最复杂的部分。RBAC2的约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循 的强制性规则。责任分离包括静态责任分离(Static Separation of Duty,SSD)和动态责任分离(Dynamic Separation of Duty,DSD)。约束(Constraining)与用户-角色-权限关系一起决定了RBAC2模型中用户的访问许可。
图4:RBAC2模型
RBAC标准定义:职责关系分离(SoD)用于增强利益冲突策略,这种策略某些组织机构可能会需要,即避免用户超出其当前职位合理的权限等级。简单地说, 就是避免两个角色间的冲突。如:会计和出纳,在一般公司都不允许同一个人兼任。因此在分配角色的时候,应该禁止这两种角色赋给同一人。
静态责任分离(SSD),即在系统初始化时,当角色授给用户时来判断是否将冲突的角色给了同一用户。在RBAC标准中,冲突的角色被定义为一个二元关系,就是说,任何一个用户只能拥有其中的一个。
动态责任分离(DSD),指相冲突的角色可以同时给一个,但是在一次会话中不能同时扮演两个冲突的角色。如:在超市POS系统中,ywf可以是收银员或收 银员主管(ROLE)。收银员必须经过主管才能打开收银机的抽屉修改某次结账错误。如果收银员角色的一个单独的行为中需要从收银员切换到主管,那么DSD 要求,这个用户(USER)必须先放弃收银员角色;即,当该收银员正在收银时发现错误,必须要先关闭抽屉,然后再次以主管身份打开抽屉才行。
4、RBAC3
RBAC3包含了RBAC1和RBAC2,既提供了角色间的继承关系,又提供了责任分离关系。