分享人:孙浩
目录
1.什么是账户、角色、权限?
2.为什么要设立角色?权限为什么不直接分配给账户?
3.账户是否可以拥有多个角色?
4.RBAC权限模型
5.更多讨论
6.参考文献
基本上所有的应用,登录都需要一个账号,在后台系统里账户指的就是登录后台的用户。
角色,就是用来控制各个账号的操作范围的,可以理解为权限组。
权限,是资源的集合。分为:页面权限、操作权限和数据权限。
页面权限:能否看到这个页面的菜单、能否进入这个页面。
操作权限:用户在操作系统中的任何动作、交互。例如增删改查等。
数据权限:那些人可以看到那些数据,不可看到那些数据。
例如:我们要做一款企业管理的产品,如果按照传统模型,给每一个用户赋予权限则会非常麻烦,并且不能批量修改用户权限。这时候可以设置几个角色,譬如销售经理、市场经理,然后把权限分给这些角色,再把角色赋予用户,这样一来,无论是分配权限还是修改权限,都只需修改用户和角色的关系,或角色和权限的关系即可,更加灵活方便。
例如某公司的A,A即是销售经理又是人事经理,那么在赋予权限上怎么办呢?让他注册两个账户或者专门为他定制一个角色有点不太实际,所以可以赋予他两个角色,这样他就拥有这两个角色的所有权限。
RBAC是基于角色的访问控制。是从传统的权限模型基础上,改进而来的,是目前比较成熟的权限模型。
主要强调的是三个要素:用户、角色、权限。用户与角色是多对多的关系,角色与权限也是多对多的关系。
权限是用来访问资源的,为用户赋予权限,则可访问资源,在权限的基础上打包一个权限合集---角色,例如销售经理,为用户赋予销售经理的角色,则用户即可访问销售经理角色下的资源合集。
根据RBAC的复杂程度,分为RBAC0,RBAC1,RBAC2,RBAC3。其中最常用的是RBAC0。
1.基本模型RBAC0。这个模型是把权限赋予角色,再把角色赋予用户。用户和角色,角色和权限都是多对多的关系。用户拥有的权限等于他所有的角色持有权限之和。很多产品只需基于RBAC0就可以搭建权限模型。
2.角色分层模型RBAC1。RBAC1建立在RBAC0基础之上,在角色中引入了继承的概念,简单说就是,给角色可以分成几个等级,每个权限等级不同,从而实现更精准的权限管理。
3.角色限制模型RBAC2。RBAC2同样建立在RBAC0基础之上,对用户、角色和权限三者之间增加了一些限制。例如:互斥角色限制(同一个用户在两个互斥角色中只能选择一个)、基数限制( 一个用户拥有的角色是有限的,一个角色拥有的权限也是有限的)、先决条件限制(用户想要获得更高级的角色,首先要拥有低级角色)
4.同一模型RBAC3。RBAC3是1和2的合集,既有角色分层,也可增加各种限制。一般用于系统对权限要求非常复杂的时候,才考虑使用此权限模型。
人人都是产品经理-RBAC模型:基于用户-角色-权限控制的一些思考
感谢观看,如有出错,恳请指正
BY : 孙浩