RBAC 权限管理设计
前言
作为一个后台管理系统,权限管理是一个绕不开的话题,一个成熟的后端系统离不开一个比较完善的权限管理系统,所以本小结我们根据 RBAC 思想来设计一下我们这个系统的权限管理。
权限分类
一般来说,我们常说的权限分为两种,一种是功能权限,一种则是数据权限。
- 功能权限指的是用户登录系统后能看到什么模块,能看到哪些页面。
- 数据权限指的是用户在某个模块里面能够看到哪些数据。
本系统目前只进行功能权限的设计,数据权限默认进行管控,先最小化功能实现,后面有需求在迭代吧。
功能权限设计
目前业界有很多关于权限系统的技术模型,常见的有ACL、ABAC、DAC、RBAC等等,不同体量的权限系统,我们可以参考不同的权限模型进行梳理和设计,本系统就采用一个经典的 RBAC 权限系统模型,我接触的系统基本上都是使用的 RBAC 模型,能满足绝大部分的需求。
什么是 RBAC
RBAC 模型(Role-Based Access Control:基于角色的访问控制)模型是比较早期提出的权限实现模型,在多用户计算机时期该思想即被提出,其中以美国George Mason大学信息安全技术实验室(LIST)提出的RBAC96模型最具有代表,并得到了普遍的公认。
RBAC 认为权限授权的过程可以抽象地概括为:Who 是否可以对What进行How的访问操作,并对这个逻辑表达式进行判断是否为True的求解过程,也即是将权限问题转换为Who、What、How的问题,Who、What、How构成了访问权限三元组,具体的理论可以参考RBAC96。
RBAC的权限授权其实就是Who、What、How的问题。
Who
:权限的拥用者What
:权限针对的资源How
:具体的权限
RBAC 组成
RBAC模型的三要素为&#