# What?

基于角色的权限访问控制(Role-Based Access Control,简称 RBAC),其核心在于通过角色对用户所拥有的一组权限进行限定。RBAC 流程中的三个关键角色:

  • 用户:系统中所有的账户
  • 角色:一系列权限的集合(如:管理员,开发者,审计管理员等)
  • 权限(资源):菜单、按钮、API等详细权限。

在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色。角色可依新的需求和系统的合并而赋予新的权限,而权限也可根据需要从某个角色中收回。

  • 优点:便于角色划分,更灵活的授权管理;最小颗粒度授权

# Flow?

img.png

# Design

  • 用户
    • 为用户分配角色(常规 RBAC 模型流程)
    • 为用户分配权限(扩展,ACL(Access Control List))
  • 角色
    • 为角色绑定用户
    • 为角色绑定权限
  • 权限
    • 为权限划分角色
    • 为权限划分用户

# Expansion?

访问控制列表 ACL(Access Control List),是前几年盛行的一种权限设计,它的核心在于用户直接和权限挂钩,即 ACL 是一种面向资源的访问控制模型,它的机制是围绕“资源”展开的。

优点:简单易用,开发便捷

缺点:用户和权限直接挂钩,导致在授予时的复杂性,比较分散,不便于管理。另一方面,ACL 和RBAC 相比缺点在于由于用户和权限直接挂钩,导致在授予时的复杂性,虽然可以利用组来简化这个复杂性,但仍然会导致系统不好理解,而且在取出判断用户是否有该权限时比较困难,一定程度上影响了效率。

例子:常见的文件系统权限设计, 直接给用户加权限

最后更新时间: 1/19/2021, 1:50:12 PM