RBAC权限模型介绍

我们开发一个系统,必然面临权限控制的问题,即不同的用户具有不同的访问、操作、数据权限。

RBAC权限模型简介
RBAC权限模型(Role-Based Access Control)即:基于角色的权限控制。模型中有几个关键的术语:

某用户是什么角色?
某角色具有什么权限?
通过角色的权限推导用户的权限
RBAC的演化进程
用户与权限直接关联

 

想到权限控制,人们最先想到的一定是用户与权限直接关联的模式,简单地说就是:某个用户具有某些权限。如图:

张三具有创建用户和删除用户的权限,所以他可能系统维护人员
李四具有产品记录管理和销售记录管理权限,所以他可能是一个业务销售人员

这种模型能够清晰的表达用户与权限之间的关系,足够简单。但同时也存在问题:

现在用户是张三、李四,以后随着人员增加,每一个用户都需要重新授权
或者张三、李四离职,需要针对每一个用户进行多种权限的回收

一个用户拥有一个角色
在实际的团体业务中,都可以将用户分类。比如对于 薪水管理系统,通常按照级别分类:经理、高级工程师、中级工程师、初级工程师。也就是按照一定的角色分类,通常具有同一角色的用户具有相同的权限。这样改变之后,就可以将针对用户赋权转换为针对角色赋权。因为角色少、权限多,所以基于角色管理权限,减少用户在授权与权限回收过程中的过多操作。

一个用户有一个角色
一个角色有多个操作(菜单)权限
一个操作权限可以赋予多个角色

我们可以用下图中的数据库设计模型,描述这样的关系。

一个用户一个或多个角色
但是在实际的应用系统中,一个用户一个角色远远满足不了需求。如果我们希望一个用户既担任销售角色、又暂时担任副总角色。该怎么做呢?为了增加系统设计的适用性,我们通常设计:

一个用户有一个或多个角色
一个角色包含多个用户
一个角色有多种权限
一个权限可以赋予多个角色

 

posted @   __破  阅读(248)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示