`
sprite
  • 浏览: 64006 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

基于RBAC的权限设计模型

阅读更多

c:

 

1        RBAC 介绍

 

RBAC 模型作为目前最为广泛接受的权限模型。

 

NIST The National Institute of Standards and Technology,美国国家标准与技术研究院)标准RBAC模型由4个部件模型组成,这4个部件模型分别是基本模型RBAC0Core RBAC)、角色分级模型RBAC1Hierarchal RBAC)、角色限制模型RBAC2Constraint RBAC)和统一模型RBAC3Combines RBAC[1]RBAC0模型如图1所示。

 

<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"></shapetype><stroke joinstyle="miter"></stroke> <formulas> </formulas> <f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f> <lock v:ext="edit" aspectratio="t"></lock><shape id="_x0000_i1025" style="WIDTH: 361.5pt; HEIGHT: 108pt" type="#_x0000_t75" alt="RBAC 0模型.JPG"></shape><imagedata src="file:///D:%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.jpg" o:href="/images/blogjava_net/bluedavy/RBAC%200%E6%A8%A1%E5%9E%8B.JPG"></imagedata>clip_image001.jpg
图表 1 RBAC 0 模型

 

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

 

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

 

l          RBAC1 引入角色间的继承关系

 

角色间的继承关系可分为一般继承关系和受限继承关系。一般继承关系仅要求角色继承关系是一个绝对偏序关系,允许角色间的多继承。而受限继承关系则进一步要求角色继承关系是一个树结构。

 

l          RBAC2 模型中添加了责任分离关系

 

RBAC2 的约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。责任分离包括静态责任分离和动态责任分离。约束与用户-角色-权限关系一起决定了RBAC2模型中用户的访问许可。

 

l          RBAC3 包含了RBAC1RBAC2

 

既提供了角色间的继承关系,又提供了责任分离关系。

 

建立角色定义表。定出当前系统中角色。

 

因为有继承的问题,所以角色体现出的是一个树形结构。

 

<shape id="_x0000_i1026" style="WIDTH: 320.25pt; HEIGHT: 4in" type="#_x0000_t75"></shape><imagedata src="file:///D:%5CTemp%5Cmsohtml1%5C01%5Cclip_image002.emz" o:title=""></imagedata>test.bmp

 

2        权限设计:

 

 

配置资源以及资源的操作 : 这里资源可以定义为一个通用的资源模型。提供通用的资源统一接口。

 

 

 

 

 

 

数据库 ER 图:

<shape id="_x0000_i1027" style="WIDTH: 414.75pt; HEIGHT: 241.5pt" type="#_x0000_t75" o:ole=""></shape><imagedata src="file:///D:%5CTemp%5Cmsohtml1%5C01%5Cclip_image004.emz" o:title=""></imagedata>clip_image002.gif

 

关系图:

 

 

<shape id="_x0000_i1028" style="WIDTH: 414.75pt; HEIGHT: 314.25pt" type="#_x0000_t75"></shape><imagedata src="file:///D:%5CTemp%5Cmsohtml1%5C01%5Cclip_image006.emz" o:title=""></imagedata>clip_image003.gif

 

 

<shape id="_x0000_i1029" style="WIDTH: 414.75pt; HEIGHT: 553.5pt" type="#_x0000_t75"></shape><imagedata src="file:///D:%5CTemp%5Cmsohtml1%5C01%5Cclip_image008.emz" o:title=""></imagedata>未命名.bmp

 

 

3        分析:

 

 

    根据以上的类关系图和ER图可以看出。整个权限可以抽象为五个对象组成。

 

OrgBean : 用于描述org模型。

 

Role : 用于描述角色。

 

Permission : 用于描述权限。

 

Resource : 用于描述资源。

 

Operation : 用于描述操作。

 

 

其中Permission中有Resource , Operation 的聚合,资源和操作组成权限。

 

Role Permission 都有自包含。因为设计到权限的继承。

 

资源Resource 也可能出现一颗树形结构,那资源也要有自包含。

 

 

思想 :

 

权限系统的核心由以下三部分构成: 1. 创造权限, 2. 分配权限, 3. 使用权限,然后,系统各部分的主要参与者对照如下: 1. 创造权限 - Creator 创造, 2. 分配权限 - Administrator 分配, 3. 使用权限 - User

 

1. Creator 创造 Privilege Creator 在设计和实现系统时会划分,一个子系统或称为模块,应该有哪些权限。这里完成的是 Privilege Resource 的对象声明,并没有真正将 Privilege 与具体 Resource 实例联系在一起,形成 Operator

 

2. Administrator 指定 Privilege Resource Instance 的关联 。在这一步, 权限真正与资源实例联系到了一起, 产生了 Operator Privilege Instance )。 Administrator 利用 Operator 这个基本元素,来创造他理想中的权限模型。如,创建角色,创建用户组,给用户组分配用户,将用户组与角色关联等等 ... 这些操作都是由 Administrator 来完成的。

 

3. User 使用 Administrator 分配给的权限去使用各个子系统。 Administrator 是用户,在他的心目中有一个比较适合他管理和维护的权限模型。于是,程序员只要回答一个问题,就是什么权限可以访问什么资源,也就是前面说的 Operator 。程序员提供 Operator 就意味着给系统穿上了盔甲。 Administrator 就可以按照他的意愿来建立他所希望的权限框架 可以自行增加,删除,管理 Resource Privilege 之间关系。可以自行设定用户 User 和角色 Role 的对应关系。 ( 如果将 Creator 看作是 Basic 的发明者, Administrator 就是 Basic 的使用者,他可以做一些脚本式的编程 ) Operator 是这个系统中最关键的部分,它是一个纽带,一个系在 Programmer Administrator User 之间的纽带。

 

 

4        权限API

 

   getPermissionByOrgGuid(String orgGuid )

 

      通过传入一个orgGuid , 拿到当前这个org对象都具有那些访问权限。

 

 getSourcePermissionByOrgGuid(String orgGuid , String resouceGuid)

 

    通过传入一个orgGuid 和 一个资源的Guid , 返回改Org对当前这个资源的访问权限。

 

 

getPermissionByResourceGuid(String resource)

 

    通过传入一个资源的Guid , 得到当前资源下都有那些权限定义。

 

 

havingHeritPermission(String orgGuid , String resouceGuid) : Boolean

 

    传入一个orgGuid, 资源GUID ,查看改OrgGuid下对资源是否有向下继承的权限。这里继承是资源的继承。即对父栏目有权限,可以继承下去对父栏目下的子栏目同样有权限。

 

 

havingPermission(String orgGuid , String resourceGuid) : Boolean

 

    判断某Org对某一资源是否用权限。

 

 

以上是粗粒度的权限API 。 以下为细粒度的权限:

 

 

getOperationByPermission(String permissionGuid)

 

    通过permission Guid 得到该permission 的所有有效操作。

 

 

getOperationByGuid(String permissionGuid , String resourceGuid)

 

    通过permisionGuid , 资源的Guid 得到该资源下所有的有效操作。

 

 

screeningOpreationByGuid (String permissionGuid , String resourceGuid , String orgGuid)

 

    通过permission resource orgGuid 得到改Org对这一资源的有效操作。

 

 

hasOperation(String operationGuid) : boolean

 

    通过传入的operationGuid 返回是否具有操作权限。

 

 

5        权限的实现:

 

1 .表单式认证,这是常用的,但用户到达一个不被授权访问的资源时, Web 容器就发

 

出一个 html 页面,要求输入用户名和密码。

 

2 .用 Filter 防止用户访问一些未被授权的资源, Filter 会截取所有 Request/Response

 

然后放置一个验证通过的标识在用户的 Session 中,然后 Filter 每次依靠这个标识来决定是否放行 Response

 

这个模式分为:

 

Gatekeeper :采取 Filter 或统一 Servlet 的方式。

 

Authenticator Web 中使用 JAAS 自己来实现。

 

 

Filter 拦截只是拦截该用户是否有访问这个页面,或这一资源的权限。真正做到显示后拦截是在应用程序内部去做。

 

 

做显示拦截提供API , 标签这两种方式。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    基于RBAC权限管理模型的实现

    在IT行业中,权限管理是系统安全的关键组成部分,而基于RBAC(Role-Based Access Control,基于角色的访问控制)的权限管理模型是一种广泛应用的解决方案。RBAC模型通过将用户权限与角色关联,使得权限分配更加灵活...

    RBAC的权限设计模型

    RBAC权限设计模型 RBAC(Role-Based Access Control,基于角色的访问控制)是一种基于角色的权限设计模型,旨在解决权限管理的复杂性和灵活性问题。RBAC模型认为权限授权实际上是Who、What、How三个问题的结合,也...

    基于RBAC权限管理数据库表设计

    总结来说,基于RBAC的权限管理数据库表设计涵盖了角色、权限、用户、角色-权限关联、用户-角色关联等多个核心组件,通过这些组件的组合,可以构建出一个强大且易于维护的权限管理体系。在实际应用中,还可以根据业务...

    基于RBAC模型的通用权限管理系统的设计(数据模型)

    根据RBAC模型的权限设计思想,建立权限管理系统的核心对象模型。对象模型中包含的基本元素主要有用户、用户组、角色、目标、访问模式和操作。主要的关系有分配角色权限和分配用户角色。控制对象是系统所要保护的资源...

    基于RBAC权限模型搭建的高效智能权限管理系统.pdf

    "基于RBAC权限模型搭建的高效智能权限管理系统.pdf" 本文档介绍了基于RBAC权限模型搭建的高效智能权限管理系统,旨在确保系统信息的安全性。该系统主要包含用户信息表、角色表、权限表等模块,依托Web的计算算法,...

    经典的基于RBAC的权限设计

    基于RBAC(Role-Based Access Control,基于角色的访问控制)的权限设计是一种广泛应用的权限管理模型,它以角色为中心,通过角色与权限的关联,实现用户对资源的访问控制。NIST定义了四种RBAC模型:RBAC0、RBAC1、...

    基于RBAC的权限设计模型.doc

    RBAC(Role-Based Access Control,基于角色的访问控制)是一种广泛应用的权限模型,它通过角色这一中间层将权限与用户关联,提高了权限管理的灵活性和效率。NIST定义的RBAC模型由四个基本组件构成: 1. **RBAC0...

    基于RBAC改进模型的角色权限及层次关系分析

    ### 基于RBAC改进模型的角色权限及层次关系分析 #### 一、引言 随着信息技术的发展,网络安全成为组织和个人关注的重点。基于角色的访问控制(Role-Based Access Control,简称RBAC)作为一种有效的访问控制机制,...

    基于RBAC的权限管理系统

    基于RBAC(Role-Based Access Control,基于角色的访问控制)的权限管理系统是一种广泛采用的解决方案,它以角色为核心,实现了用户与权限的间接映射,提高了管理效率并降低了复杂性。下面将详细介绍RBAC模型及其在...

    基于RBAC模型的通用权限管理系统的设计

    资源的权限设计中,需要考虑资源实例的权限相关性。例如,若在企业管理信息系统中,不同区域的部门需要对客户资料进行操作,那么资源实例(客户资料)的权限应与访问主体(区域)关联。在这种情况下,资源实例包含的...

    一个基于RBAC的权限管理系统

    综合以上信息,这个基于RBAC的权限管理系统采用了分层架构设计,实现了用户、角色和权限的灵活配置,以支持MIS系统的安全访问控制。系统采用C#语言开发,并且依赖于.NET框架,数据存储可能使用的是SQL Server数据库...

    基于rbac模型的权限管理系统

    基于RBAC(Role-Based Access Control,基于角色的访问控制)模型的权限管理系统是一种广泛采用的方法,它以角色为核心,实现了灵活、高效的权限分配机制。现在,让我们深入探讨这个话题。 首先,RBAC模型的核心...

    Java语言基于RBAC模型设计的权限模型

    Java语言基于RBAC模型设计的权限模型,麻雀虽小,五脏俱全,SpringBoot项目加mysql实例表数据,可以启动运行。 1:参考脚本建mysql数据库 2:导入脚本 3:用idea加载项目 启动项目

    基于RBAC的通用权限管理构件

    基于RBAC(Role-Based Access Control,基于角色的访问控制)的通用权限管理构件是一种广泛应用于企业级应用的解决方案,它通过角色来管理和控制用户的访问权限。下面将详细介绍这个系统以及与其相关的技术。 **...

    基于RBAC模型的权限管理改进研究与实现.pdf

    然后,我们提出了基于RBAC模型的权限管理改进研究,设计了一个基于角色的控制访问模型,能够动态地创建、分配和撤销权限,并实现资源分离和多级权限管理。 在实现方面,我们使用了JavaScript脚本语言和SSH框架,...

Global site tag (gtag.js) - Google Analytics