用户与权限通过角色关联
核心RBAC区分用户—角色分配和权限—角色分配。例如把审核操作分配给审核员角色,再把合适用户加入角色;人员变动时可以调整角色成员,而不必在每个资源上重新复制同一批个人权限。
角色表示一组权限,不完全等同于传统用户组。NIST说明,严格RBAC通过角色取得权限;若系统同时保留大量直接给个人的例外,虽然也用了角色标签,权限审阅仍须处理那些绕过角色关系的路径。
参考:[1]
会话激活与角色层级
用户可以拥有多个被授权角色,而在一个会话中只激活其中一部分。角色已分配、当前已激活以及某操作获准,是不同关系;登录后不必自动把该用户所有可能权限同时投入使用。
层级RBAC还允许角色按继承关系获得权限,关系可以是偏序,不必是一条直线上下级链。继承会改变某角色实际拥有的权限集合,不能只看它直接列出的权限;核心角色分配、层级和附加约束也可作为不同模型组件。
参考:[1]
静态与动态职责分离
静态职责分离约束角色分配,例如不让同一用户同时被分配两个互斥职责;动态职责分离则约束会话中哪些角色能够同时激活。两者针对的关系不同,不应只以“设了两个角色”推断冲突已被防止。
角色匹配也未必是访问的充分条件。NIST用医生读取病历说明,还可以加入医生与特定患者之间的业务关系等约束。因此,RBAC并不要求同角色的人无条件访问完全相同的对象,实际政策仍须表达相关限制。
参考:[1]