权限系统(1)--基本模式_第1页
权限系统(1)--基本模式_第2页
权限系统(1)--基本模式_第3页
权限系统(1)--基本模式_第4页
权限系统(1)--基本模式_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、在系统中发生的事情,抽象的说都是某个主体(subject)在某个资源(resource)±执行了某个操 作(operation)。subject -operationresource所谓权限管理,就是在这条信息传递路径中加上-些限制性控制。主体试图去做的limited by系统允许主体去做的=主体实际做的。可以看到,权限控制某本对应于filter模式。subject试图去做的事情应该由业务逻辑决定, 因而应该编码在业务系统中。先考虑故粗粒度的控制策略,控制点加在subject处,即无论从事何种操作,针对何种资源, 我们首先需要确认subject是受控的。只有通过认证的用户才能使用系统

2、功能,这就是 authenticationo boolean isallowed subject)稍微复杂一些,控制可以施加在subject和operation的边界处(此时并不知道具体进行何种 操作),称为模块访问控制,即只有某些川户才能访问特定模块。isallowed(subject, operation set)第三级控制直接施加在operation上,即操作访问控制。operation知道resource和subject (但 它尚没有关于resource的细节知识),我们能够采取的权限机制是bool isallowed(subject, operation, resource),返回

3、true允许操作,返冋false则不允许操作。最简单的情况卜,subject与resource之间的访问控制关系是静态的,町以直接写成一个权限 控制矩阵for ope rati on a:resourcea resourcebsubjecta i 0subjectb 0 1 isallowed(subjecta, resourcea)恒等于 true如果多个operation的权限控制都可以通过这种方式來表示,则多个权限控制矩阵可以廉加 在一起for operationa, operationb:resourcea resourcebsubjecta 10 01subjectb 01 11当s

4、ubject和resource的种类很多吋,权限控制矩阵急剧膨胀,它的条口数是n*m。很就然, 我们需要进行矩阵分解。这也是最基木的控制手段之一:在系统屮增加一个瓶颈,或者说寻 找到隐含的结构。subject_resource = subject_role * role_resource这样系统权限配置条目的数量为n*r + r*m,如果r的数目远小于subject和resource,则 实现简化。这称为rbac(role based access control),它的一个额外好处是权限系统的部分描 述可以独立于subject存在,即在系统中没有任何川户的时候,通过角色仍然可以表达部分权限信

5、息。可以说角色是subject在权限系统中的代理(分解)。有时候引入一个瓶颈还不过瘾,有人引入组的概念,与role串联,subject_resource = subject_group_role * role_resource或着group与role并联,subject_resource = subject_group * group_resource与role稍有不同,一般情况下纠nip的业务含义更加明显,可能对应于组织结构等。将组织 机构明确引入权限体系,有的时候比较方便,但对于权限系统自身的稳定性而言,耒见得有 什么太大的好处。并联模式有些多余,串联模式又过于复杂,细节调整困难,特别是多

6、条控 制路径造成的冲突情况。一般情况下,我不提倡将group引入权限控制中。比操作控制更加深入的控制就是数据控制了,此时需要对于resource的比较全面的知识。虽 然表面上,仍然是boolean isallowed(subject, operation, resource),但控制函数需要知道 resource 的细节。例如 行级控制(row-level)或者列级控制(column-level)m实现。因为我们一般情况下不可能将每一 个条目都建模为独立的resource,而只能是存在一个整体描述,例如所有密级为绝密的文档。 在witrix平台中,数据控制主要通过数据源的filter来实现,因

7、为查询条件(数据的定位条 件)己经被对象化为query类,所以我们可以在合适的地方自由的追加权限控制条件。以上的讨论中,权限控制都是根据某些静态描述信息来进行的,但现实壯界是多变的。最简 单的,当subject从事不同业务吋,对应于同一组资源,也可能对应的权限控制并不同(在 witrix平台中,对应于idatasource的模式切换)。更复杂一些,在不同的吋刻,我们需要根据 其他附加信息来作出是否允许操作的判断,即此时我们权限设置的不仅仅是一些静态的描 述信息,而是一个完整的控制函数,这就是所谓的工作流权限控制,一种动态权限控制.权限系统(2)-operation权限控制可以看作一个filte

8、r模式的应用,这也符合aop思想的应用条件。在一个简化的图 象中,我们只需要将一个判别函数isallowed(subject, operation, resource)m入到所有女全敏 感的函数调用之询就可以了。虽然概念上很完美,具体实现的时候仍然有一些细节上的问题。 基木的困难在于很难衣最细的粒度上指定权限控制规则(连续的?动态的?可扩展的?), 因而我们只能衣一些关键处指定权限规则,或者设置一些整体性的权限策略,然府通过特定 的推理來推导岀细粒度的权限规则,这就引出结构的问题。我们需要能够对权限控制策略进 彳亍有效的描述(控制策略的结构),并且决定如何与程序结构相结合。subject, o

9、peration和 resource为了支持推理,都可能需要分化出复杂的结构,而不再是简单的原子性的概念。而 在与程序结构结合这一方而,虽然aop使得我们可以扩展任何函数,但这种扩展需要依赖 于cutpoint处所能得到的信息,因而权限控制的有效实施也非常依赖于功能函数木身良好的 设计。有的时候因为需要对结构有过于明确的假定,权限控制的实现不得不牺牲一定的通川 性。卜面我们将分别讨论一下operation, subject和resource的结构分解的问题。首先是operation0 说到推理结构,让人最先想起的就是决策树,树形结构,在面向对象语言屮可以对应于继承。 金字塔式的树形结构也正是在

10、现实吐界中我们应用最多的控制结构。通过层层分解, operation的结构可以组织为一棵树,应用程序=> 各个子系统=> 每个子系统的功能模块=> 子功能模块=>每个模块的功能点(具有明确的业务含义)=> 每个功能点对应的访问函数(程序实现 中的结构)一个常见的需求是根据权限配置决定系统菜单树的显示,一般控制用户只能看到己有权操 作的功能模块和功能按钮。这种需求的解决方法是非常直接的。首先,在后台建立子系统到 功能模块,功能模块到功能点以及功能点到实现函数z间的映射表(如果程序组织具有严格 规范,这其至可以通过自动搜集得到)。然后,在权限配置时建立用户与功能点z间

11、的关联。 此时,通过一个视图,我们就可以搜集到用户对哪些功能模块具有访问权限的信息。为了控制菜单树的显示,witrix平台中的sitemap采用如下策略:1. 如果川户对某个子功能具有操作权限,则所有父菜单项都缺省可川2. 如果用户对某个功能具佇操作权限,并h.标记为cascade,则所有子菜单项都自动缺省可 用3. 如杲明确指定功能不可用,则该菜单及子菜单都强制不可用4. 如果明确指定功能对所有人可用,则不验证权限,所有子菜单自动缺省可用4. 强制设定覆盖缺省值5. 不可用的菜单缺省不可见6. 明确标记为可见的菜单即使不可用也可见7. 父菜单可见子菜单才可见我们通过预计算来综合考虑这些相互影

12、响的控制策略。尽量将推导运算预先完成也是解决性 能问题的不二法门。在witrix平台屮,每一次网络访问的url都符合jsplet框架所要求的对象调川格式,需要指 定objectname和objectevent参数,这就对应于功能点的访问函数。访问控制点集中在 objectmanager并口-访问格式是标准的。使用spring等aop方式实现细粒度访问控制,闲难 似乎在于不容易引入外部配置信息(例如功能点信息等),而控制点所对应的对象函数格 式也不统一,因而多数需要亦细粒度上一一指定。权限系统- subject权限控制中,subject可能不会简单的对应t userid,而是包含一系列的secu

13、rity token或 certificate,例如川户登陆地址,登陆时间等。一般情况卜,这些信息在权限系统中的使川都 是很直接的,不会造成什么问题。subject域屮最觅要的结构是user和role的分离,nj以在不存在user的情况下,为role指定 权限。有人进一步定义了 usergroup的概念,可以为usergroup指定role,而user从其所属 的group继承role的设置。一,般情况下,我不提倡在权限系统中引入usergroup的概念。这 其屮最重要的原因就是它会造成多条权限信息传递途径,从而产生一种路径依赖,并可能出 现信息冲突的情况。一般user与group的关联具有明

14、确的业务含义,因而不能随意取消。如 果我们希望对usei拥有的权限进行细调,除去user从group继承的某个不应该拥有的权限, 解决的方法很有可能是所谓的负权限,即某个权限条目描述的是不能做某某爭。负权限会造 成各个权限设置之间的互相影响,造成必须尝试所仃权限规则才能作出判断的困境,引出对 额外的消歧策略的需求,这些都极人的限制了系统的可扩展性。在允许负权限的环境中,管 理员将无法直接断定某个权限设置的最终影响,他必须在头脑中完成所有的权限运算之后才 能理解某川户最终拥有的实际权限,如果发现权限设置冲突,管理员可能需要多次尝试才能 找到合适方案。这种配置时的推理需求可能会增加配置管理的难度,

15、造成微妙的安全漏洞, 而口负权限导致的全局关联也降低了权限系统的稳定性。我更倾向于将group作为权限设置 时的-种辅助标记手段,系统中只记录用户最终拥有的角色,即相当于记录用户通过group 拥有权限的推导完成的结果,如果需要权限细调,我们直接在用八拥有的角色列表上直接进 行。当然,如果实现的复杂一些,权限系统对外暴露的接口仍然可以模拟为能够指定 usergroup 的权限。推理在血向对彖语言中最明显的表现是继承,所以有些人将subject域中的推理直接等价于 rolez间的继承问题,这未必是故好的选择。继承对以形成非常复朵的推理关系,但是可能 过于复杂了(特别是直接使用sql语句无法实现树

16、形推理查询)。按照级列理论,从不相关 发展到下一阶段是出现简单的序关系,即我们可以说subject出现级別上的差异,高级别 subject将自动具有低级别的权限。一种选择是定义rolerank,规定高级别role自动具有低级 别role的权限,但考虑到user与role的两分结构,我们也可以同时定义userrank和rolerank, 规定高级别user自动具有低级别的role, iflj role之间不具有推理关系。在而向对象领域中, 我们己经证实了完全采用继承來组织对象关系会导致系统的不稳定,所以我倾向于第二种选 择,即将role看作某种类似于interface的东西,一种权限的切片。为了

17、进一步限制这种推导 关系,我们j以定义所谓的安全域的概念.security domain,规定推导只能在-一定的域中才能 进行。select user.userld, role.roleldfrom user, rolewhere user.userrank > role.rolerankand user.domain = role.domain将权限控制一般需要施加在最细的粒度上,这在复朵的系统屮可能过于理想化了。复杂的情 况下我们需耍进行局部化设计,即进行某些敏感操作z前进行一系列复杂的权限校验工作。 当完成这些工作之后,进入某个security zone,在其中进行操作就不再需要校

18、验了。总的来说,权限系统采用非常复杂的结构效果未必理想。很多时候只是个管理模式的问题, 应该尽量通过重新设计权限空间的结构来加以规避。不过在一些非常复杂的权限控制环境 下,也许简也的描述信息确实很难有效的表达权限策略(虽然我从未遇到过),此时尝试- 下规则引擎可能比在权限系统中强行塞入越來越多的约束要好的多权限系统(4)-resource权限管理中进行数据访问控制,其基本模式如下operation target = selector(resource) selector = user selector + auth filter 这里需要xj resource的结构,以及选择算/的显式建模os

19、elector必须允许权限系统追加filter, 例如idatasource包屮所使川的query对象。sql语言的表达能力有限,作为选择算子来使用有时需耍resource作一些结构上的调整,增 加一些冗余的字段。例如衣达-段时间内的利率,我们需要使用from.date和to_date两个 字段来进行描述,其中to_date的值与下一条记录的from_date相同。value from date to date0.01 2003-01-01 2003-05-010.012 2003-05-01 2004-01-01如果表达一条航线中的多个阶段,我们可能会在每条记录中增加起始站和终点站两个字段。

20、 更重要的一个常见需求是树形结构在关系数据库中的衣达。为了能够青接操纵-个分支下的 所有记录,在层次固定的情况下,我们可能会增加多个分类字段,例如数据仓库中的层次维 度。在层次数口不确定的情况下,我们将不得不使用层次码或者类似于url的其他方案,通 过layejcodelikeol.ol% z类的语句实现分支选择。为了限制选择的深度,我们可能还需 要layerjevel字段。基于层次码和层次数,我们可以建立多种选择算子,例如包含所有直接 子节点,包含口身及所有父节点等等。权限系统(5)-动态性动态权限最简单的-个表现是时限性,subject只在某个时间段内具有某种权限。这只需要 在user和r

21、ole的映射中,或者role自身的属性中增加starttime和expiretime即可。更复杂的动态性一般与流程控制相关,此时权限控制应该由工作流系统完成,而不是在数据 上增加越來越多的权限标记。在witrix平台中,使用tpl模板技术来定制权限设置。 http:/canonical.blogdriver.corn/ca nonical/658364.html某于rbac模型的权限管理系统的设计和实现裴辉东梁云风(1. ill东省烟台海颐软件股份有限公司;2山东省烟台东方电子信息产业股份有限公司)摘要:提出了基于rbac模型的权限管理系统的设计和实现方案。介绍了采用的j2ee架构 的多层体系

22、结构设计,阐述了棊于角色的访问控制rbac模型的设计思想,并讨论了权限 管理系统的核心面向对象设计模型,以及权限访问、权限控制和权限存储机制等关键技术。 关键词:权限管理系统;角色;访问控制;rbac模型;j2ee; ldap0引言管理信息系统是一个复杂的人机交互系统,其中每个具体环节都可能受到安全威胁。构建强 健的权限管理系统,保证管理信息系统的安全性是十分垂要的。权限管理系统是管理信息系 统中可代码重川性最高的模块z-o任何多用户的系统都不可避免的涉及到相同的权限需 求,都需要解决实体鉴别、数据保密性、数据完整性、防抵赖和访问控制等安全服务(据 iso7498-2)o例如,访问控制服务要求

23、系统根据操作者已经设定的操作权限,控制操作者可 以访问哪些资源,以及确定对资源如何进行操作。目前,权限管理系统也是重复开发率最高的模块之一。在企业屮,不同的应川系统都拥有一 套独立的权限管理系统。何套权限管理系统只满足口身系统的权限管理需要,无论在数据存 储、权限访问和权限控制机制等方血都可能不一样,这种不一致性存在如下弊端: 乩系统管理员需要维护多套权限管理系统,重复劳动。bjij户管理、组织机构等数据重复维护,数据一致性、完整性得不到保证。c. 由于权限管理系统的设计不同,概念解释不同,采川的技术有差异,权限管理系统之i'可的 集成存在问题,实现单点登录难度十分大,也给企业构建企业

24、门八带來困难。采川统一的安全管理设计思想,规范化设计和先进的技术架构体系,构建一个通川的、完善 的、女全的、易于管理的、有良好的可移植性和扩展性的权限管理系统,使得权限管理系统 真止成为权限控制的核心,在维护系统安全方面发挥重要的作用,是十分必要的。本文介绍一种基于角色的访问控制rbac (role-based policies access control)模型的权限 管理系统的设计和实现,系统采用基于j2ee架构技术实现。并以讨论了应用系统如何进行 权限的访问和控制。1采用j2ee架构设计采用j2ee企业平台架构构建权限管理系统。j2ee架构集成了先进的软件体系架构思想,具 有采川多层分布

25、式应用模型、基于组件并能重川组件、统一完全模型和灵活的事务处理控制 等特点。系统逻辑上分为四层:客户层、web层、业务层和资源层。乩客户层主要负责人机交互。可以使系统管理员通过web浏览器访问,也可以提供不同业 务系统的api、web service调用。b. web层封装了用來提供通过web访问本系统的客八端的农示层逻辑的服务。c. 业务层提供业务服务,包括业务数据和业务逻辑,集中了系统业务处理。主要的业务管 理模块包括组织机构管理、用户管理、资源管理、权限管理和访问控制儿个部分。d. 资源层主要负责数据的存储、组织和管理等。资源层提供了两种实现方式:人型关系型 数据库(如oracle)和l

26、dap (light directory access protocol,轻量级目录访问协议)目 录服务器(如微软的活动目录)。2rbac模型访问控制是针对越权使用资源的防御措施。基木目标是为了限制访问主体(用户、进程、服 务等)对访问客体(文件、系统等)的访问权限,从而使计算机系统在合法范围内使用;决 定川户能做什么,也决定代表一定川户利益的程序能做什么1。企业环境中的访问控制策略一般有三种:口主型访问控制方法、强制型访问控制方法和基于 角色的访问控制方法(rbac)。其中,自主式太弱,强制式太强,二者工作量大,不便于 管理1。基于也色的访问控制方法是口前公认的解决人型企业的统一资源访问控制

27、的有效 方法。其显箸的两人特征是:1.减小授权管理的复杂性,降低管理开销;2.灵活地支持企业 的安全策略,并对企业的变化有很大的伸缩性。nist (the national institute of standards and technology,美国国家标准与技术研究院)标准 rbac模型山4个部件模型纽成,这4个部件模型分别是基木模型rbaco (corerbac)、 角色分级模型 rbac1 (hierarchal rbac) 角色限制模型 rbac2 (constraint rbac)和统 模型 rbac3 (combines rbac) 1。rbaco 模型如图 1 所示。图1 r

28、baco模型a. rbaco定义了能构成一个rbac控制系统的最小的元素集合。在rbac z中,包含用户 uscrs(users)、角色 roles(roles)目标 objects(obs)、操作 opeeions(ops)、许可权 perniissions(prms)五个基木数据元素,权限被赋予和色,而不是川户,当一个和色被指定给 一个用户时,此用户就拥有了该角色所包含的权限。会话sessions是用户与激活的角色集合 之间的映射。rbac0与传统访问控制的差别在于增加一层间接性带來了灵活性,rbac1、 rbac2、rbac3都是先后在rbac0上的扩展。b. rbac1引入角色间的继承

29、关系,角色间的继承关系可分为一般继承关系和受限继承关系。 -般继承关系仅要求角色继承关系是一个绝対偏序关系,允许角色间的多继承。而受限继承 关系则进一步要求角色继承关系是一个树结构。c. rbac2模型中添加了责任分离关系。rbac2的约束规定了权限被赋予角色时,或角色被 赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。责任分离包括 静态责任分离和动态责任分离。约束与用户角色权限关系一起决定了 rbac2模型中用户 的访问许可。d. rbac3包含了 rbac1和rbac2,既提供了角色间的继承关系,乂提供了责任分离关系。 3核心对象模型设计根据rbac模型的权限设计思想,

30、建立权限管理系统的核心对象模型。如图2所示。对象模型中包含的基本元素主要有:用户(users)、用户组(group)、角色(role)、苗示 (objects)>访问模式(access mode)、操作(operator)o主要的关系有:分配角色权限pa (permission assignment)> 分配用户角色 ua (users assignmen 描述如 f:图2权限管理系统核心类图a .控制对象:是系统所要保护的资源(resource),可以被访问的对象。资源的定义需要注 意以下两个问题:1资源具有层次关系和包含关系。例如,网页是资源,网页上的按钮、文木框等对象也是资

31、源,是网页节点的子节点,如可以访问按钮,则必须能够访问页而。2.这里提及的资源概念是指资源的类别(resource class),不是某个特定资源的实例 (resource instance)o资源的类别和资源的实例的区分,以及资源的粒度的细分,有利丁确 定权限管理系统和应用系统zi'可的管理边界,权限管理系统需要对于资源的类别进行权限管 理,而应用系统需要对特定资源的实例进行权限管理。两者的区分主要是棊于以下两点考虑: 一方面,资源实例的权限常具有资源的相关性。即根据资源实例和访问资源的主体z间的关 联关系,才可能进行资源的实例权限判断。例如,在管理信息系统中,需要按照营业区域划分不

32、同部门的客户,a区和b区都具有修 改客户资料这一受控的资源,这里''客户档案资料”焰属于资源的类别的范畴。如果规定a 区只能修改a区管理的客户资料,就必须要区分出资料的归属,这甲的资源是属于资源实 例的范畴。客户档案(资源)本身应该有其使用者的信息(客户资料可能就含有营业区域这 -属性),才能区分特定资源的实例操作,可以修改属于自己管辖的信息内容。另一方而,资源的实例权限當具有相当大的业务逻辑相关性。对不同的业务逻辑,常常意味 着完全不同的权限判定原则和策略。b. 权限:对受保护的资源操作的访问许njaccess permission),是绑定在特定的资源实例上的。 对应地,访

33、问策略(access strategy)和资源类别相关,不同的资源类别可能采用不同的访 问模式(access mode)。例如,页面具有能打开、不能打开的访问模式,按钮具有可用、不 可用的访问模式,文木编辑框具有可编辑、不可编辑的访问模式。同一资源的访问策略可能 存在排斥和包含关系。例如,某个数据集的可修改访问模式就包含了可查询访问模式。c. 用户:是权限的拥有者或主体。用户和权限实现分离,通过授权管理进行绑定。d. 用户组:一组用户的集合。在业务逻辑的判断中,可以实现基于个人身份或组的身份进行 判断。系统弱化了用户组的概念,主耍实现用户(个人的身份)的方式。e. 角色:权限分配的单位与载体。

34、角色通过继承关系支持分级的权限实现。例如,科长角色 同时具有科长角色、科内不同业务人员角色。f. 操作:完成资源的类別和访问策略之间的绑定。&分配角色权限pa:实现操作和如色之i'可的关联关系映射。h.分配用户角色ua:实现用八和角色之间的关联关系映射。该对象模型最终将访问控制模型转化为访问矩阵形式。访问矩阵中的行对应于用八,列对应 于操作,每个矩阵元素规定了相应的角色,对应于相应的目标被准予的访问许可、实施行为。 按访问矩阵中的行看,是访问能力表cl(access capabilities)的内容;按访问矩阵中的列看, 是访问控制表acl (access control li

35、sts)的内容。4权限访问机制权限管理系统端:提供集中管理权限的服务,负责提供用户的鉴别、用户信息、组织结构信 息,以及权限关系表的计算。如图3所示。s3权限的访问示意e1fig.3 privilege invoke图3权限的访问示意图fig.3 privilege invoke系统根据用八,角色、操作、访问策略和控制对象z间的关联关系,同吋考虑权限的正负向 授予,计算出用户的最小权限。在业务逻辑层采用session bean实现此服务,也可以发布成 web sendeeo采川代理proxy模式,集屮控制来自应川系统的所要访问的权限计算服务,并 返回权限关系表,即一元组objectld, op

36、eratorldo应用系统端:可以通过访问能力表cl和访问控制表acl两种可选的访问方式访问权限管 理系统。以基于j2ee框架的应川系统为例,说明访问过程:a. 首先采川基于表单的验证,利川servlet方式集中处理登录请求2。考虑到需要鉴别的实 体是川户,采川棊于acl访问方式。川户登录时调川权限管理系统的川户鉴别服务,如果 验证成功,调用权限讣算服务,并返冋权限关系表,以hashmap的方式存放到登录用八的 全局session +:如果没有全局的session或者过期,则被导向到沓录页而,重新获取权限。b. 直接url资源采用基于cl访问方式进行的访问控制。如果用户直接输入url地址访问 页血,有两种方法控制访问:1.通过权限标签读取

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论