什么是RBAC模型
权限是需要给对应的用户的,当用户太多的时候如果一个一个用户的设定权限就会显得很复杂,这时候我们可以引入角色,每个角色可以拥有多个权限,每个用户可以分配多个角色,这样用户就拥有了多个角色的多个权限
为什么要用RBAC模型
因为有角色作为媒介,大大降低了错综复杂的交互关系,比如一家有上万人的公司,角色可能只需要几百个就搞定了,因为很多用户需要的权限是一样的,分配一样的角色就可以了。这种模型的对应关系图如下所示:
用户和角色,角色和权限都是多对多的关系,这种模型是最通用的权限管理模型,节省了很大的权限维护成本,当然这种只是通用的模式,在实际的业务是千变万化的,比如大部分公司是分层级的,层级越高权限越大这时候可以用角色继承的RBAC模型。还有很多角色是互斥的这时候可以使用带约束的RBAC。比如同一个角色有多个用户,我们可以采用在角色的前提下增加一个用户组来简化角色分配。在pomelo中我们使用了通用的RBAC模型,这里只展示通用的模型
RBAC模型数据结构
菜单表(权限表)
1 | P TABLE IF EXISTS customer_menu; |
角色表
1 | DROP TABLE IF EXISTS customer_role; |
用户表
1 | DROP TABLE IF EXISTS customer_user; |
用户角色表
1 | DROP TABLE IF EXISTS customer_user_role; |
角色权限表
1 | DROP TABLE IF EXISTS customer_role_menu; |