权限模型有哪些(RBAC权限模型解读)
今天我们来聊下权限设计。
相信做过项目的同学都是接触过基于角色的权限设计的。但是,大部分人对于该设计背后的RBAC模型(Role-based Access Control)并不是十分了解。
在信息安全领域,RBAC是一种应用极为广泛的安全访问控制机制。它不同于强制访问控制或自主访问控制(即直接给予访问者权限),而是通过对角色赋于权限这样的间接机制来实现控制。因其灵活且适用面广泛而著称。因为该机制是在1996年由Sandhu、Coyne、Feinstein和 Youman在前人的相关理论基础上,提出以角色为基础的访问控制模型,故又被成为RBAC96。
RBAC模型中,将操作鉴权过程归纳为判断【Who对What进行How的访问操作】这样一个逻辑表达式的值是否为True的求解过程。从而将权限判定问题转化为(Who,What,How)这样一个三元组。
RBAC模型又按照复杂层级分为0-3级。 RBAC0被定义为基础模型,在之中定义了用户(Users),Roles(角色),许可(Permissons),会话(Sessions)。 RBAC1包含RBAC0,并允许角色之间可以继承从而提供了角色层级关系。 RBAC2包含RBAC0,并添加了约束。约束规定了在权限被赋予角色时、或角色被赋予用户时以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。
约束又分为静态(SSD)和动态(DSD)。
SSD用于用户与角色之间,包括以下内容:
不同角色之间互斥关系
基数关系,即用户拥有角色数有限,角色拥有权限数有限
前提约束,即用户拥有某角色必须有前提限制,例如必须拥有A角色则才能授权B角色
DSD用于会话与角色之间,动态决定角色启用与否,例如用户拥有的某角色是否在当前会话中有效。
RBAC3则包含了RBAC1和RBAC2。
详见下图
RBAC模型满足以下原则:
最小权限:角色仅拥有需要执行的操作所需的最低权限。用户可根据担当不同的角色从而获取必要的权限。
职责分离:通过约束可以提供对敏感过程中分配互斥角色来保证,例如表单填写者和审核者不应是同一用户。
数据抽象:通过对许可的高层抽象来实现。利用角色聚合相关权限,从业务概念层面抽象许可权,而不是直接提供系统层面的读写许可。
以上就是RBAC模型的一个简要介绍,后续将讲解如何在实际项目中应用。
相关文章:
相关推荐: