1.权限管理模型
要想将细化权限粒度,我们不可避免会涉及到一些权限模型,例如 ACL、RBAC、DAC、MAC 以及 ABAC、PBAC 等。
在这些众多的权限模型中,我们使用较多的是 RBAC,ACL 也有一些项目在使用,另外几种则使用相对较少。因此松哥这里重点和大家介绍 ACL 和 RBAC。
1.1 ACLACL
ACL是一种比较古老的权限控制模型。英文全称是 Access Control List,中文称作访问控制列表,这是一种面向资源的访问控制模型,所有的权限配置都是针对资源的。
它的原理是这样:
对于系统中的每一个资源,都会配置一个访问列表,这个列表中记录了用户/角色对于资源的 CURD 权限,当系统需要访问这些资源时,会首先检查列表中是否存在当前用户的访问权限,进而确定当前用户是否可以执行相应的操作。
ACL 的使用非常简单,搞明白它的原理自己分分钟就能实现。但是 ACL 有一个明显的缺点,就是需要维护大量的访问权限列表。大量的访问控制列表带来的问题就是性能下降以及维护复杂。
1.2 RBAC
RBAC(Role-based access control)是一种以角色为基础的访问控制,也是目前使用较多的一种权限模型,它有多种不同的变体,松哥后面会专门写一篇文章来介绍 RBAC,这里仅简单科普下。
RBAC 权限模型将用户按角色进行归类,通过用户的角色来确定用户对某项资源是否具备操作权限。RBAC 简化了用户与权限的管理,它将用户与角色关联、角色与权限管理、权限与资源关联,这种模式使得用户的授权管理变得非常简单和易于维护。
1.3 其他
下面这些使用常见较少,小伙伴们做一个了解即可,感兴趣的小伙伴也可以自行研究下。
- ABAC:这是一种基于属性的访问控制。
- PBAC:这是一种基于策略的访问控制。
- DAC:除了权限控制,主体也可以将权限授予其他主体。
- MAC:资源可以被哪些类别的主体进行哪些操作,主体可以对哪些等级的资源进行哪些操作,这两个条件同时满足时,允许访问。