基于RBAC的权限设计模型:
1 RBAC 介绍
RBAC 模型作为目前最为广泛接受的权限模型。
NIST (The National Institute of Standards and Technology,美国国家标准与技术研究院)标准RBAC模型由4个部件模型组成,这4个部件模型分别是基本模型RBAC0(Core RBAC)、角色分级模型RBAC1(Hierarchal RBAC)、角色限制模型RBAC2(Constraint RBAC)和统一模型RBAC3(Combines RBAC)[1]。RBAC0模型如图1所示。
l RBAC0 定义了能构成一个RBAC控制系统的最小的元素集合
在RBAC之中,包含用户users(USERS)、角色roles(ROLES)、目标objects(OBS)、操作operations(OPS)、许可权permissions(PRMS)五个基本数据元素,权限被赋予角色,而不是用户,当一个角色被指定给一个用户时,此用户就拥有了该角色所包含的权限。会话sessions是用户与激活的角色集合之间的映射。RBAC0与传统访问控制的差别在于增加一层间接性带来了灵活性,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的扩展。
l RBAC1 引入角色间的继承关系
角色间的继承关系可分为一般继承关系和受限继承关系。一般继承关系仅要求角色继承关系是一个绝对偏序关系,允许角色间的多继承。而受限继承关系则进一步要求角色继承关系是一个树结构。
l RBAC2 模型中添加了责任分离关系
RBAC2 的约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。责任分离包括静态责任分离和动态责任分离。约束与用户-角色-权限关系一起决定了RBAC2模型中用户的访问许可。
l RBAC3 包含了RBAC1和RBAC2
既提供了角色间的继承关系,又提供了责任分离关系。
建立角色定义表。定出当前系统中角色。
因为有继承的问题,所以角色体现出的是一个树形结构。
2 权限设计:
配置资源以及资源的操作 : 这里资源可以定义为一个通用的资源模型。提供通用的资源统一接口。
关系图:
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 )
通过传入一个org的Guid , 拿到当前这个org对象都具有那些访问权限。
getSourcePermissionByOrgGuid(String orgGuid , String resouceGuid)
通过传入一个org的Guid 和 一个资源的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)
通过permision的Guid , 资源的Guid 得到该资源下所有的有效操作。
screeningOpreationByGuid (String permissionGuid , String resourceGuid , String orgGuid)
通过permission , resource , org的Guid 得到改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 , 标签这两种方式。
- 大小: 15.5 KB
- 大小: 9.5 KB
- 大小: 7.1 KB
- 大小: 14.7 KB
- 大小: 19.5 KB
分享到:
相关推荐
本文将深入探讨四个常见的系统——机票管理系统、OA(Office Automation)办公系统、进销存系统和社区系统的需求分析,以及如何编写相关的分析文档。 首先,机票管理系统的核心目标是提供便捷的机票预订、查询、退...
Reporting Authorization是指用户对报表和查询的访问权限,而Analysis Authorization是指用户对数据分析和报表设计的权限。 Reporting Authorization的实现方法有两种:一是通过PFCG(Profile Generator)生成角色...
博客系统需求分析文档是软件开发过程中的重要环节,它详细阐述了系统的目标、功能和性能等方面的要求,为后续的设计、编码和测试提供了清晰的指导。这份来自清华大学计算机系的需求分析文档,无疑为我们揭示了一个...
### 权限管理详细需求分析 #### 一、概述 本文档旨在详细描述一个权限管理系统的设计与实现需求,包括但不限于用户、角色与权限之间的关系,以及各功能模块的具体权限分配。通过合理规划权限体系,确保系统的安全性...
《renren-security轻量级权限管理系统3.2最新完整版开发文档详解》 在软件开发领域,权限管理是系统安全的重要组成部分,它涉及到用户角色、权限分配、访问控制等多个方面。`renren-security`是一个专注于权限管理...
《软件系统开发需求分析文档》是一份至关重要的资料,它涵盖了软件开发过程中的核心环节——需求分析。需求分析是产品经理的必备技能,它涉及到从项目启动到实际开发的每一个细节,确保软件产品能够满足用户的实际...
论坛系统需求分析文档 论坛系统需求分析文档是对论坛系统的详细分析,涉及到系统设计、用户需求、性能需求、数据分析等多个方面。下面是从该文档中提取的知识点: 1. 论坛系统概念 论坛系统也称为 BBS,是 ...
【标题】:“sns招聘网站需求分析文档” 【描述】:“sns招聘网站需求分析文档旨在详细阐述人才工厂的功能需求、性能指标和运行环境等关键特性,为系统开发人员和测试团队提供指南。” 【标签】:“需求分析 sns”...
总的来说,OA办公系统的需求分析文档详细描绘了系统的功能需求、运行环境和用户权限体系,为系统开发奠定了坚实的基础。通过这样的系统,企业能够实现信息化、智能化的管理,提升运营效率,促进内部协作,同时保障...
### 文档管理系统分析案例 #### 一、引言与背景 在当今高度信息化的时代背景下,企业要想取得竞争优势,必须能够准确、及时地获取所需信息。为此,开发一套高效的文档管理系统显得尤为重要。本案例将深入探讨一种...
《学生管理系统需求分析文档》是软件工程领域中一个重要的文档,它是系统开发初期阶段的关键产出物,用于明确和记录对学生管理系统的功能、性能、界面、数据以及用户需求的全面理解。这个文档通常遵循一定的国家标准...
在这个详细需求文档中,我们聚焦于一个具体的产品,其权限管理涉及到用户管理、角色分配以及不同模块的权限设置。 首先,系统支持多种用户,每个用户可被赋予一个或多个角色。角色是权限的集合,用户通过角色来获取...
【中小学考试成绩分析系统分析文档】是一个针对中小学生考试成绩进行统计和分析的系统设计项目,主要目的是优化数据处理,提供有效的考试分析数据。系统利用计算机的高效能,通过合理的算法组合,实现对用户输入的...
5. **报表与统计**:生成各类报表,如工作量统计、流程效率分析等,为管理层决策提供数据支持。 开发此OA系统的编程工具是JSP,使用SQL Server 2000作为数据库,操作系统环境为Windows XP/Windows 2000,开发工具包...
PDF文档的解析和创建涉及多个层面,包括字形编码、颜色管理、图像压缩、交互式元素(如表单、动作和脚本)、安全和权限控制等。熟悉这些概念和技术对于开发PDF处理工具、进行文档自动化、数据分析以及合规性检查等...
1. 需求分析文档的作用:需求分析文档是软件工程项目的重要组成部分,它详细记录了软件开发前对项目功能、性能、界面、数据和用户界面的分析和定义。此文档是系统设计、编码和测试的基础,有助于开发团队与利益相关...
### 进销存需求分析详细文档 #### 一、引言 本文档旨在全面解析《进销存需求分析详细文档》中的关键知识点,包括进销存系统的业务流程、用户用例说明及其各功能模块的具体需求。 #### 二、项目概述 - **产品描述**...