3)角色限制模型:RBAC2
RBAC2模型中添加了责任分离关系。RBAC2的约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。
责任分离包括静态责任分离和动态责任分离。约束与用户——角色——权限关系一起决定了RBAC2模型中用户的访问许可,此约束有多种,主要包括:
静态限制(静态责任分离)同一用户只能分配到一组互斥角色集合中至多一个角色,支持责任分离的原则。例如:同一个人不能既是“运动员”又是“裁判员”,即当用户分配给受众运动员的角色后,权限页面无法给于其分配裁判员的权限。
文章插图
动态限制:运行时互斥:例如,允许一个用户具有两个角色的成员资格,但在运行中不可同时激活这两个角色。当一个人被授予了运动员和裁判员角色,在一次比赛中,他只能选择以一个身份进行,不能以两种身份同时进行。
基数约束:一个角色被分配的用户数量受限;一个用户可拥有的角色数目受限;同样一个角色对应的访问权限数目也应受限,以控制高级权限。
先决条件角色:可以分配角色给用户仅当该用户已经是另一角色的成员;对应的可以分配访问权限给角色,仅当该角色已经拥有另一种访问权限。要想获得较高的权限,要首先拥有低一级的权限。就像我们生活中,国家主席是从副主席中选举的一样。
4)整合统一模型:RBAC3
RBAC3包含了RBAC1和RBAC2,既提供了角色间的继承关系,又提供了责任分离关系。
文章插图
5. 基于属性的权限验证(ABAC:Attribute-Based Access Control)
ABAC被认为是权限控制的未来,由于其逻辑比较复杂,笔者并未吃透,所以只简单地介绍一下。
文章插图
ABAC可分为访问控制策略、环境条件、主体、客体、主体属性、客体属性。它通过将主体属性、客体属性和环境条件结合起来,按照它们与访问控制策略的匹配情况来确定访问(即对系统客体的操作)。
简单而言就是将主体和客体的属性用策略相关联,通过读取策略来确定主体可对客体进行哪些操作。
四、基于RBAC模型设计权限时应注意什么?1. 熟悉业务流程,盘点角色设计初期,应该重新梳理系统中不同模块的业务流程,通过业务流程图,来盘点各个节点的角色,在这一环节中,需要对角色进行穷举,保证系统在运行过程中达到闭环。一般情况下:
- 角色通过岗位去划分,例如在禅道中,通过不同的岗位来划分不同的角色。
- 角色通过任务流划分,根据业务流程中的不同节点功能,可将定义角色,例如,在某审批系统,可将角色划分为录入人员、审核人员。
同时,在PRD中传达一个系统的权限设计规则时,不应该采用“当…时,就….“的语句去表达规则,而是要将角色和单元绘制成网格,每一个交叉节点为描述该角色与权限的数据关系和限制。
特别要注意的是,在设计数据权限时,其查看权限往往应设计在“增、删、改、查”之前。
3. 做好无页面权限的提示在正常情况下,当用户无对应权限时,该页面会直接隐藏,但也不排除用户可以获取到权限外的URL地址,因为当用户访问到没有权限的页面时,需提示该用户无对应权限。
4. 创建默认角色默认角色一般为系统中自带的角色,其往往包括超级管理员,管理员、业务员等等。
一般情况下,超级管理员为隐形角色,为领导高层掌握,拥有整个系统的所有权限,管理员继承超级管理员所分配的权限,若管理员唯一的情况下,自身不可编辑,不可删除,防止用户删除管理员角色,导致系统无法正常运行。其余角色为管理员创建,可编辑,可删除。
5. 对系统的长期规划需明确在搭建权限系统时,应该详细地了解系统的业务范围和长期规划,梳理角色,并尽可能多地获取用户信息。
例如,在数据权限配置过程种,我们通过数据打标来划分数据权限,但是随着数据的标识增加,权限判断条件增多,就会出现大量用户信息需要判断的问题。
6. 用户的长期维护需及时处理当系统长时间运转时,在权限上,可能会因为用户离职,权限系统未及时更新,而导致内部数据泄露的问题发生。针对这种情况,产品可采用权限系统与OA系统互通或者系统设置数据自动清洗的规则来解决。
- CPU|2022新年换手机,牢记“三不碰”原则,大概率能买到满意的手机
- 小米科技|高端旗舰开启加速退场,12GB+256GB,还有IP68防水加持
- 激光电视|全球彩电“老二”要推一款4K短焦激光投影机,是否叫激光电视“未知”
- 王来春|从“打工妹”到千亿富豪,初中辍学的她凭什么?
- 红米手机|红米RedmiK50冲击中高端,目前已经曝光以下内容
- 商家|错失冰墩墩,义乌商家转头去抢冬奥“野生周边”
- 年轻人|QQ上线结伴功能,“每一届”年轻人都不愿错过
- 红米手机|高端配置再下放!Redmi Note12 Pro惊喜满满,天玑7000加持
- 数据库|又一尖端技术传遍国际,全球仅有中国掌握!这回轮到西方眼红了
- 李伟|1300万外卖骑手,从“零工”走向“职业”