温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

基于角色的权限控制模型RBAC实例分析

发布时间:2022-03-17 08:59:26 来源:亿速云 阅读:197 作者:iii 栏目:开发技术

本篇内容主要讲解“基于角色的权限控制模型RBAC实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基于角色的权限控制模型RBAC实例分析”吧!

    一、RBAC权限模型简介

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

    • 用户:系统接口及访问的操作者

    • 权限:能够访问某接口或者做某操作的授权资格

    • 角色:具有一类相同操作权限的用户的总称

    RBAC权限模型核心授权逻辑如下:

    • 某用户是什么角色?

    • 某角色具有什么权限?

    • 通过角色的权限推导用户的权限

    二、RBAC的演化进程

    2.1.用户与权限直接关联

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

    基于角色的权限控制模型RBAC实例分析

    • 张三具有创建用户和删除用户的权限,所以他可能系统维护人员

    • 李四具有产品记录管理和销售记录管理权限,所以他可能是一个业务销售人员

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

    现在用户是张三、李四,以后随着人员增加,每一个用户都需要重新授权

    或者张三、李四离职,需要针对每一个用户进行多种权限的回收

    2.2.一个用户拥有一个角色

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

    基于角色的权限控制模型RBAC实例分析

    • 一个用户有一个角色

    • 一个角色有多个操作(菜单)权限

    • 一个操作权限可以属于多个角色

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

    基于角色的权限控制模型RBAC实例分析

    2.3 一个用户一个或多个角色

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

    • 一个用户有一个或多个角色

    • 一个角色包含多个用户

    • 一个角色有多种权限

    • 一个权限属于多个角色

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

    基于角色的权限控制模型RBAC实例分析

    三、页面访问权限与操作权限

    页面访问权限: 所有系统都是由一个个的页面组成,页面再组成模块,用户是否能看到这个页面的菜单、是否能进入这个页面就称为页面访问权限。

    操作权限: 用户在操作系统中的任何动作、交互都需要有操作权限,如增删改查等。比如:某个按钮,某个超链接用户是否可以点击,是否应该看见的权限。

    基于角色的权限控制模型RBAC实例分析

    为了适应这种需求,我们可以把页面资源(菜单)和操作资源(按钮)分表存放,如上图。也可以把二者放到一个表里面存放,用一个字段进行标志区分。

    四、数据权限

    数据权限比较好理解,就是某个用户能够访问和操作哪些数据。

    通常来说,数据权限由用户所属的组织来确定。比如:生产一部只能看自己部门的生产数据,生产二部只能看自己部门的生产数据;销售部门只能看销售数据,不能看财务部门的数据。而公司的总经理可以看所有的数据。

    在实际的业务系统中,数据权限往往更加复杂。非常有可能销售部门可以看生产部门的数据,以确定销售策略、安排计划等。

    所以为了面对复杂的需求,数据权限的控制通常是由程序员书写个性化的SQL来限制数据范围的,而不是交给权限模型或者Spring Security或shiro来控制。当然也可以从权限模型或者权限框架的角度去解决这个问题,但适用性有限。

    到此,相信大家对“基于角色的权限控制模型RBAC实例分析”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI