RBAC(Role-Based Access Control )基于角色的访问控制

目录

 

RBAC(Role-Based Access Control )

RBAC的级别:

核心RBAC0:这是权限管理的核心部分,其他的版本都是建立在0的基础上的。

RBAC1,基于RBAC0模型,进行了角色的分层,也就是说角色上有了上下级的区别,存在了继承包含关系,

RBAC2,也是基于RBAC0模型的基础上,进行了角色的访问控制。主要引入了SSD(静态职责分离)和DSD(动态职责分离)

RBAC3,也就是最全面级的权限管理,它是基于RBAC0的基础上,将RBAC1和RBAC2进行整合了,最前面,也最复杂的:

常用权限框架:


RBAC(Role-Based Access Control )

基于角色的访问控制。

RBAC认为授权实际就是who,what,how三者之间的关系,即who对what进行how的操作。Who,权限的拥用者或主体(如Principal、User、Group、Role、Actor等等);what,权限针对的对象或资源(Resource、Class) ;How,具体的权限(Privilege,正向授权与负向授权)。

RBAC的级别:

  • 核心RBAC0:这是权限管理的核心部分,其他的版本都是建立在0的基础上的。

    • 主要有四部分组成:
      • 用户(User)
      • 角色(Role)
      • 许可(Permission)
      • 会话(Session)
    • 用户和角色是多对多的关系,表示一个用户在不同的场景下可以拥有不同的角色,将用户和许可进行分离,是彼此相互独立,使权限的授权认证更加灵活。
    • 角色和许可(权限)是多对多的关系,表示角色可以拥有多分权利,同一个权利可以授给多个角色
    • 在项目中开发中我们正是使用这种最简单,但是却最通用的权限模型。这里想提一下我们建数据库表,我们用了五张表来实现这个权限模型,将其中的两个多对多分解成了两对多对一来完成,这样更有利于我们维护表,感觉也更加简单,更容易控制。用五张表来进行权限方面的管理了,在用户表中保存用户,角色表中保存角色级别,许可表中保存各种权限信息,然后通过中间表,来维护彼此之间的关系。这样就完成了权限的管理了。

  • RBAC1,基于RBAC0模型,进行了角色的分层,也就是说角色上有了上下级的区别,存在了继承包含关系,

    • 也就是前边说过的适合于用树展现的哪种自关联的结构,这种模型合适于角色之间的层次明确,包含明确。但是认为用第一种模型也是可以的,只不过第一种可能会有数据冗余,没有这种更加面向对象化而已。
  • RBAC2,也是基于RBAC0模型的基础上,进行了角色的访问控制。主要引入了SSD(静态职责分离)和DSD(动态职责分离)

    • SSD主要应用在用户和角色之间(授权阶段),主要约束:
      • 互斥角色,同一个用户不能授予互斥关系的角色
      • 基数约束,一个用户拥有的角色是有限的,一个角色拥有的许可是有限的
      • 先决条件约束,用户想要得到高级权利,必须先拥有低级权利
    • DSD会话和角色之间的约束,主要动态决定怎么样计划角色
    • RBAC2中的一个基本限制时互斥角色的限制,互斥角色是指各自权限互相制约的两个角色。对于这类角色一个用户在某一次活动中只能被分配其中的一个角色,不能同时获得两个角色的使用权。常举的例子:在审计活动中,一个角色不能同时被指派给会计角色和审计员角色;
    • 是指角色的权利权利是有限的,用户有用的角色也是有限的,当然分配用户时也是有限的,不能进行无限制的分配用户,例如公司的领导人有限的;c,是指要想获得较高的权限,要首先拥有低一级的权限。就像我们生活中,国家主席是从副主席中选举的一样。
  • RBAC3,也就是最全面级的权限管理,它是基于RBAC0的基础上,将RBAC1和RBAC2进行整合了,最前面,也最复杂的:

    • RBAC3=RBAC1+RBAC2
    • 用户组,当平台用户的基数增大,角色类型越来越多时,而且一部分人具有相同的属性

综上为权限管理模型的相关介绍,其实在任何系统中都会涉及到权限管理的模块,无论复杂简单,我们都可以通过以RBAC模型为基础,进行相关灵活运用来解决我们的问题。

常用权限框架:

  1. Spring Security
  2. Apache Shiro
  3. Sa-Token
  4. 自研

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nia134

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值