一、RBAC是什么
RBAC,即Role-Based Access Control,是一种在计算机系统和网络安全领域广泛应用的访问控制模型。它通过将权限分配给角色,再将角色分配给用户,来实现对系统资源的访问控制。在RBAC模型中,用户与角色之间、角色与权限之间通常是多对多的关系。
RBAC的核心概念
角色(Role):在系统中代表一组相关权限的抽象概念,如管理员、普通用户等。
权限(Permission):对系统资源进行操作的许可,例如读取、写入、修改等。
用户(User):系统的实际使用者,可以被分配一个或多个角色。
分配(Assignment):将角色与用户关联起来,赋予用户相应的权限。
RBAC认为授权是Who(权限的拥有者或主体)、What(操作或对象)、How(具体的权限)三元组之间的关系。
RBAC的实现
RBAC通常通过数据库实现,涉及多张表如管理员表、角色表、权限表、角色权限关联表、角色管理员关联表等。管理员表用于保存系统中的管理员信息,角色表保存系统中的角色,权限表保存表示权限请求的入口,如API接口或URI地址。角色权限关联表和角色管理员关联表分别用于保存不同角色所拥有的权限和管理员所属的角色。
RBAC的优势
简化权限管理:通过角色分配权限,使权限管理更灵活易于管理。
灵活的角色与权限关系:支持多对多关系,适用于复杂的权限管理需求。
提高安全性:确保用户只有所需权限,减少安全漏洞和攻击风险。
易于扩展和维护:基于角色的抽象概念,便于系统扩展或调整。
RBAC的缺点
复杂性:设计和实施RBAC系统需要详细规划和配置。
难以处理特殊情况:如临时提升权限或改变角色等。
高度依赖角色设计:不合理的角色设计可能导致权限问题。
难以适应复杂场景:在需要考虑时间约束、地域约束等因素时,RBAC可能不够灵活。
RBAC模型适用于企业组织架构、应用程序和系统访问控制、多租户系统、医疗保健、金融和银行等多种场景,提供可扩展、可管理的访问控制机制。在实施RBAC时,需要根据具体情况进行合理规划和权衡。
二、场景
有若干个工作空间。一个工作空间有一个拥有者,可以有多个参与者。一个用户可以参与多个工作空间。
用户可以看到工作空间,但无法进入未参加的工作空间。
可以向未参加的工作空间的所有者提出加入申请,待审批通过后加入该工作空间。
拥有者可以主动添加参与者。
例:
张三为workspace1的拥有者,可以主动添加其他成员为参与者,张三同时还是workspace2的参与者。
李四可以看到所有工作空间,并向workspace1提出加入申请,拥有者审核通过后,李四成为workspace1的参与者。
王五不是workspace1的参与者和拥有者,无法进入workspace1。
权限均由系统自动授予而不是手动授权。
三、方案
系统按照工作空间进行划分,每一个工作空间内分为拥有者和参与者两个角色。如果后续还需扩展,如增加维护者,只需每个空间内部增加维护者角色即可。