基于角色的权限访问控制初步

基于角色的权限访问控制(Role-Based Access Control)

角色访问控制(RBAC)引入了role的概念,目的是为了隔离user(即动作主体,subject)与privilege(权限,表示对resource的一个操作,即operation+resource)。role作为一个用户(user)与权限(privilege)的代理层,解耦了权限和用户的关系,所有的授权应该给予role而不是直接给user或 group。privilege是权限颗粒,由operation和resource组成,表示对resource的一个operation。role-privilege是many-to-many的关系,这就是权限的核心。

基于角色的访问控制方法(RBAC)的显著的两大特征是:
1. 由于角色-权限之间的变化比角色-用户关系之间的变化相对要慢得多,减小了授权管理的复杂性,降低管理开销。
2. 灵活地支持企业的安全策略,并对企业的变化有很大的伸缩性。

RBAC的基本概念:
RBAC认为权限授权实际上是who、what、how的问题。在RBAC模型中,who、what、how构成了访问权限三元组,也就是“who对what(which)进行how的操作”。

who:权限的拥用者或主体(如principal、user、group、role、actor等等)
what:权限针对的对象或资源(resource、class)。
how:具体的权限(privilege,正向授权与负向授权)。
operator:操作。表明对what的how操作。也就是privilege+resource
role:角色,一定数量的权限的集合。权限分配的单位与载体,目的是隔离user与privilege的逻辑关系。
group:用户组,权限分配的单位与载体。权限不考虑分配给特定的用户而给组。组可以包括组(以实现权限的继承),也可以包含用户,组内用户继承组的权限。user与group是多对多的关系。group可以层次化,以满足不同层级权限控制的要求。
RBAC的关注点在于role和user,permission的关系。称为user assignment(UA)和permission assignment(PA)。关系的左右两边都是many-to-many关系。就是user可以有多个role,role可以包括多个user。

以下内容感觉偏理论,不是很好理解,大致看一下就可以了。但是上面权限的RBAC最基本的模型还是要熟记和理解的。加了一个中间层就隔离的变化,真的是牛叉。现在看来这种模型似乎是理所当然的,但是对比这个模型和传统的权限控制模型可以说是很叼了。以后遇到类似的场景也可以通过加入中间层。
一、RBAC96模型

RBAC96模型家族,其中包括了RBAC0~RBAC3四个概念模型。它们之间的关系如下图:

RBAC0定义了能构成一个RBAC控制系统的最小的元素集合

在RBAC之中,包含用户users(USERS)、角色roles(ROLES)、目标objects(OBS)、操作operations(OPS)、许可权permissions(PRMS)五个基本数据元素,权限被赋予角色,而不是用户,当一个角色被指定给一个用户时,此用户就拥有了该角色所包含的权限。会话sessions是用户与激活的角色集合之间的映射。RBAC0与传统访问控制的差别在于增加一层间接性带来了灵活性,RBAC1、 RBAC2、RBAC3都是先后在RBAC0上的扩展。RBAC0模型如下图所示:


RBAC1 引入角色间的继承关系
角色间的继承关系可分为一般继承关系和受限继承关系。一般继承关系仅要求角色继承关系是一个绝对偏序关系,允许角色间的多继承。而受限继承关系则进一步要求角色继承关系是一个树结构。
RBAC2 模型中添加了责任分离关系
RBAC2 的约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。责任分离包括静态责任分离和动态责任分离。约束与用户-角色-权限关系一起决定了RBAC2模型中用户的访问许可
RBAC3 包含了RBAC1和RBAC2
既提供了角色间的继承关系,又提供了责任分离关系。RBAC3模型如下图:

二、ARBAC97模型
ARBAC97模型是基于角色的角色管理模型,包括三个部分:
URA97:用户-角色管理模型,该组件涉及用户指派关系UA的管理,该关系把用户与角色管理在一起。对该关系的修改权由管理角色,这样,管理角色中的成员有权管理正规角色中的成员关系。
PRA97:权限-角色管理模型。该组件设计角色许可证的指派与撤销。从角色的观点来看,用户和许可权有类似的特点,它们都是由角色联系在一起的实在实体。
RRA97:角色-层次管理模型,为了便于对角色的管理,对角色又进行了分类。该组件设计3类角色,它们是:
1、能力(Abilitier)角色--仅以许可权和其它能力作为成员的角色
2、组(Groups)角色--仅以用户和其它组为成员的一类角色
3、UP-角色--表示用户与许可权的角色,这类角色对其成员没有限制,成员可以是用户、角色、许可权、能力、组或其它UP-角色

下面是我之前基于RBAC3设计的一个图:

原文地址:https://www.cnblogs.com/tuhooo/p/9026646.html

时间: 2024-10-04 22:39:21

基于角色的权限访问控制初步的相关文章

RBAC基于角色的权限访问控制

多对多,用中间表 原文地址:https://www.cnblogs.com/gzhbk/p/10972301.html

基于角色与基于资源的权限访问控制

基于角色的权限访问控制RBAC(role-based access control)是以角色为中心进行的访问控制,也就是判断主体subject是那个角色的方式进行权限访问控制,是粗粒度的 基于资源的权限访问控制RBAC(resource-based access control)是以资源为中心进行的访问控制,只需要为角色添加权限就可以 区别: 由于基于角色的权限访问控制的角色与权限往往是多对多的关系(比如admin角色可以所有CURD的权限,部门经理角色有Retrieve权限,这就是多对多关系了

使用Lync 2013 基于角色的权限控制:RBAC 给用户分配指定的操作权限

使用场景: 在大型的Lync统一沟通系统的日常运维中,我们需要为不同角色的管理员分配不同的Lync管理权限,在Lync Server 2013上面就使用了基于角色的权限控制:RBAC ,它里面分了多种权限角色,包括 CsAdministrator,CsUserAdministrator,CsVoiceAdministrator,CsServerAdministrator,CsViewOnlyAdministrator,CsHelpDesk等等,不同的角色有不同的Lync管理权限, 例如,当我们只

基于角色的权限管理系统

我们开发业务系统的时候,基本上都会涉及到权限管理模块,要求不同的人看到不同的菜单,操作不同的按钮,看到不同的数据.很多初学者面对这样的需求不知道如何下手,特别是稍微复杂点的权限,更是找不到方向,为此我们夜鹰教程网特别推出了这套基于角色的权限管理视频教程,通过给用户分配角色,给角色分配权限,来实现权限管理.这样一来,可以实现不同的人管理不同的菜单,操作不同的按钮,看到不同的数据.可以划分权限组,每个组的成员拥有相同的权限.也可以把同一个人分配到不同的权限组,具有多个权限组的权限,实现权限的组合.

从零开始——基于角色的权限管理01(补充)

此博文较为详细的介绍从零开始--基于角色的权限管理01文中的两个部分的流程(解释代码). 1) index.jsp中提交跳转action action的login,获取jsp页面传过来的用户名密码和验证码,进行验证 首先到userDao中,执行login方法,判断是否存在这组用户名和密码 接着到roleDao中,执行getRoleNameById以获取角色名 最后,进入main.jsp中 2)在main.jsp中,有一个树的显示,再次进入authServlet中执行menuAction   先后

基于角色的权限控制

首先要明白的有一个表就是需要记录整个项目中控制器和方法,这样在权限检测的时候就可以检测数据库对应的角色有没有这个控制器或者方法的权限, 但是需要明白的是在开发的过程中当然需要把这种权限给取消,这样在开发过程是需要增加一个控制器或者方法就不需要验证权限,然后开发好了之后就需要 在权限表中增加该控制器和方法. 一般基于角色的权限控制,需要用到下面的几张表 1.用户表2,权限表,3.角色表,4权限角色关系表5用户角色关系表 这种方式是用户通过,用户角色关系表查询出自己的角色,然后通过权限角色关系表查出

ASP.net MVC 基于角色的权限控制系统的实现

一.引言 我们都知道ASP.net mvc权限控制都是实现AuthorizeAttribute类的OnAuthorization方法. 下面是最常见的实现方式: public class CustomAuthorizeAttribute : AuthorizeAttribute { public override void OnAuthorization(AuthorizationContext filterContext) { if (!filterContext.RequestContext

ASP.NET MVC 基于角色的权限控制系统的示例教程

上一次在 .NET MVC 用户权限管理示例教程中讲解了ASP.NET MVC 通过AuthorizeAttribute类的OnAuthorization方法讲解了粗粒度控制权限的方法,接下来讲解基于角色的权限控制方法. 基于角色的权限控制方法概述 基于角色的权限控制系统RBAC(Role Based Access Control)是目前最流行,也是最通用的权限控制系统.所谓基于角色的权限控制,就是将各个操作权限分组,每一个组就是一个角色,举个例子:管理员拥有所有的权限,编辑就只拥有写文章和发布

基于角色的权限设计(一)

在任何系统中,权限设计是最基础的东西,本文给出一个基于角色的权限设计的循序渐进的设计方案. 在权限系统中,功能(权限)是最小的单位,比如起草新闻.编辑新闻.审核新闻.删除新闻等,而角色是一类功能的集合,比如新闻编辑 这个角色,他可能有起草新闻.编辑新闻等功能集合,而责任编辑他可能就有更多的权限,比如除了新闻编辑的功能,还有审核新闻.删除新闻等功能,给张三赋予 新闻编辑的角色(其实我更愿意说把张三加入到新闻编辑这个角色中去),张三就可以起草新闻.编辑新闻了,给李四赋予责任编辑的角色,李四就可以起草