RBAC权限模型 | 豆包MarsCode AI刷题

161 阅读5分钟

什么是 RBAC ?

Role-Based Access Control

  • 基于角色(Role)的访问控制。这是一种广泛应用于计算机系统和网络安全领域的访问控制模型
  • 简单来说,就是通过将权限分配给-->角色,再将角色分配给-->用户,来实现对系统资源的访问控制。一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型
  • 在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系
  1. 角色(Role):角色是指在系统中具有一组相关权限的抽象概念,代表了用户在特定上下文中的身份或职能,例如管理员、普通用户等
  2. 权限(Permission):权限是指对系统资源进行操作的许可,如读取、写入、修改等。权限可以被分配给角色
  3. 用户(User):用户是指系统的实际使用者,每个用户可以被分配一个或多个角色
  4. 分配(Assignment):分配是指将角色与用户关联起来,以赋予用户相应的权限

为什么要使用 RBAC 模型!

因为当用户的数量非常大时,要给系统每个用户逐一授权,是件非常烦琐的事情。这时,就需要给用户分组,每个用户组内有多个用户。除了可给用户授权外,还可以给用户组授权。这样一来,用户拥有的所有权限,就是用户个人拥有的权限与该用户所在用户组拥有的权限之和

RBAC 模型四级分级

RBAC0(Core RBAC) :最简单的RBAC形式,员工使用角色来获取权限(使用最多)

基本模型有三个元素:用户、角色和权限。模型设计基于“多对多”原则,即多个用户可以具有相同的角色,一个用户可以具有多个角色。同样,您可以将同一权限分配给多个角色,也可以将同一角色分配给多个权限

RBAC1(Hierarchical RBAC) :分层,建立在FlatRBAC规则之上,增加角色分层

添加了第四个组件-层次结构,它定义了不同角色之间的资历关系。通过允许高级角色自动获取下级角色的权限,可以消除冗余,例如在角色重叠时必须指定某些权限

RBAC2(Static separation of duty (SSD) relations) :受约束的,建立在分层RBAC0之上,并增加职责分离

为了在存在利益冲突策略的情况下提供帮助,将根据用户分配添加角色之间的关系。例如,作为一个角色的成员的用户将无法被指派为具有利益冲突的角色的成员

RBAC3(Dynamic separation of duty (DSD) relations) :RBAC3=RBAC1+RBAC2

与SSD一样,DSD限制了可用的用户权限,但基于不同的上下文。例如,根据会话期间执行的任务,用户可能需要不同级别的访问,DSD限制会话期间激活的权限

总结

优点

  1. 简化权限管理:RBAC模型通过将权限分配给角色,再将角色分配给用户,使得权限管理更加灵活和易于管理。管理员可以通过调整角色和用户之间的关系,来分配和撤销权限,而无需直接管理每个用户的权限
  1. 灵活的角色与权限关系:RBAC模型支持多对多的角色与权限关系,即一个角色可以拥有多个权限,一个权限也可以被多个角色所共享。这种灵活性使得RBAC适用于各种复杂的权限管理需求
  1. 提高安全性:RBAC模型可以确保用户只有所需的权限,并提供了良好的隔离性。通过严格控制权限的分配,可以减少系统中的安全漏洞和潜在的攻击风险
  1. 易于扩展和维护:由于RBAC模型使用了基于角色的抽象概念,当系统需要进行扩展或调整时,只需修改角色的权限分配,而无需改变具体的用户权限

缺点

  1. 复杂性:尽管RBAC模型提供了灵活的权限管理机制,但其本身也较为复杂。设计和实施RBAC系统需要仔细考虑角色的定义、权限的分配以及用户与角色之间的关系,需要进行详细的规划和配置
  1. 难以处理特殊情况:RBAC模型对于不同角色的用户可能存在某些特殊需求或特权,如临时提升权限、临时改变角色等,这些特殊情况可能难以通过RBAC模型来满足
  1. 高度依赖角色设计:RBAC模型的有效性和安全性高度依赖于正确定义和管理角色。如果角色设计不合理或者角色权限分配不当,可能导致系统中出现权限过度或权限不足的问题
  1. 难以适应复杂场景:在某些复杂的业务场景下,RBAC模型可能无法满足需求。例如,需要考虑时间约束、地域约束、审批流程等其他因素时,RBAC模型的简单角色与权限关系可能显得不够灵活和细粒度

总结起来,RBAC模型具有简化权限管理、灵活的角色与权限关系、提高安全性和易于扩展等优点。但同时也存在复杂性、处理特殊情况困难、高度依赖角色设计和难以适应复杂场景等缺点。在实施RBAC模型时,需要根据具体情况进行合理规划和权衡