一:什么是RBAC?
RBAC 就是用户通过角色与权限进行关联。在网站中,用户通过URL地址,进入网站的后端逻辑,从而对网站的数据库进行操作管理。可以让拥有权限的用户来完成操作,而没有权限的用户无法操作。
例如,人力资源部员工可以查看员工记录,但不能查看客户数据。人力资源经理可以删除或更改人力资源记录,而较低级别的人力资源专家只能查看这些记录。
RBAC
认为授权实际上是Who
、What
、How
三元组之间的关系,也就是Who
对What
进行How
的操作,也就是“主体”对“客体”的操作。
Who:是权限的拥有者或主体(如:User,Role)。
What:是操作或对象(operation,object)。
How:具体的权限(Privilege,正向授权与负向授权)。
二:RBAC的生命周期?
1、用户登陆验证
2、根据用户身份验证信息,获取用户的角色---所有
3、通过用户所绑定的角色,获取这个角色绑定的所有权限,并去重----存储session/ redis
4、查询用户所==访问的URL==是否在角色的权限内,如果在,则继续访问,如果不在,拒绝访问
三:什么是RBAC的角色?
角色是用于构建权限的语义结构。角色可以由任意数量的标准定义,包括权限、职责、成本中心和业务部门。
角色本质上是指用户权限的集合。这与传统的用户群不同,后者是用户的集合。在RBAC的上下文中,权限与角色绑定,而不是与身份直接连接。
角色比组更稳定,因为角色是围绕访问管理组织的,在一个典型的组织中,功能和活动的变化不像身份那样频繁。
四:什么是RBAC中的权限?
权限即授予对受保护对象执行操作的批准的权限集。这里的受保护对象指的可以是应用中所有的内容,包括数据、模块、菜单、页面、字段、操作功能(增删改查)等等。同时,对于不同的权限可以使用不同的RBAC模型,分别管理或同一管理(即在一个系统中不一定仅使用一种RBAC模型)。例如在可以将页面访问权限与页面内的增删改查的操作权限一起基于RBAC0管理,数据权限(数据隔离)基于RBAC1实现,再为用户分配几种权限的组合。
五:NIST标准包含的4级RBAC模型
RBAC0(Core RBAC):基本模型有三个元素:用户、角色和权限。模型设计基于“多对多”原则,即多个用户可以具有相同的角色,一个用户可以具有多个角色。同样,您可以将同一权限分配给多个角色,也可以将同一角色分配给多个权限。
RBAC1(Hierarchical RBAC):添加了第四个组件-层次结构,它定义了不同角色之间的资历关系。通过允许高级角色自动获取下级角色的权限,可以消除冗余,例如在角色重叠时必须指定某些权限。
RBAC2(Static separation of duty (SSD) relations):为了在存在利益冲突策略的情况下提供帮助,将根据用户分配添加角色之间的关系。例如,作为一个角色的成员的用户将无法被指派为具有利益冲突的角色的成员。
RBAC3(Dynamic separation of duty (DSD) relations):与SSD一样,DSD限制了可用的用户权限,但基于不同的上下文。例如,根据会话期间执行的任务,用户可能需要不同级别的访问,DSD限制会话期间激活的权限。
六:使用RBAC的好处有哪些?
它提供了一种系统化的方法,用于定义和维护角色,使您能够仅根据用户需要一致地授予访问权限,从而降低数据泄露或数据丢失的风险。通过在角色更改时自动更新访问权限来维护“最低权限”的最佳实践,降低高级访问控制的成本,尤其是在大型复杂环境中。
七:RBAC有哪些缺陷?
需要了解组织结构知识
需要深思熟虑的实施
缺乏灵活性
导致角色爆炸