基于角色的访问控制系统设计与实现.doc
XXX大学信息工程学院网络信息安全课程论文基于角色的访问控制系统设计与实现学生姓名XXX学号XXX所属学院信息工程学院专业计算机科学与技术班级计算机XXX指导教师XXX塔里木大学教务处制目录摘要3第1章:绪论31.1 研究背景31.2 课题研究的意义3第2章RBAC访问控制技术发展状况42.1国内外发展状况42.2 RBAC在实际应用方面的意义和价值4第3章基于角色的访问控制系统设计与实现53.1 RBAC的基本概念53.2 权限树的设计与实现63.3 用户管理模块83.4 角色管理模块93.5 权限管理模块103.6 用户角色的授权模块113.7 用户角色的激活模块11第4 章 系统运行模型124.1 用户认证124.2 安全访问控制134.3 测试验证点13第5章实验结果13第6章总结与展望15基于角色的访问控制系统的设计与实现摘要:访问控制就是当系统资源受到未经授权的非法操作时,能够提供适当的保护措施。访问控制实质上是对资源使用的限制,决定主体是否可以对客体执行某种操作。本访问控制系统,通过引入角色的概念,将用户映射为在一个组织中的某种角色,把访问权限授权给相应的角色,根据用户拥有的角色进行访问授权与控制,有效整合了传统访问控制技术的优势,又克服了它们的不足,使得制订和执行保护策略的过程更加灵活,也简化了管理员的管理工作。本访问控制方面采用了基于RBAC97的访问控制模型,提出了角色分级管理算法及授权增量设置原则,为电力通信资源管理系统的用户、业务、底层数据提供授权、访问控制、及权限管理的功能。并提供了一个图形化的角色管理工具来简化管理员的工作;由于本访问控制系统构建于J2EE的MVC模式之上,并基于RMI通信技术,使得它能够作为客户UI层与其他各层的中间件,为业务功能层提供授权与访问控制接口,以实现不同功能的业务视图。为底层数据层提供数据控制接口,以实现对不同数据资源的安全访问功能。关键词:RBAC 权限管理;角色;反射;自定义属性;第1章:绪论1.1 研究背景近年来,随着全球网络化的热潮,计算机网络技术正在日益广泛而深入地被应用到社会各个领域中,并深刻地改变着社会的面貌,同时我们也看到网络安全问题的重要性日益突出,尤其在商业、金融等领域的网络应用中,能否保证网络具有足够的安全性是首先要考虑的问题。由于网络上所传输的信息,往往关系着个人或企业机密,为了保护这些信息不会被非法使用和窃取,必须要采取措施以确保信息网络的安全。所以信息系统出了要确认使用者的身份是否合法外,还需判定某些资源对于该使用者来说是否有权限使用或更改,这便是信息安全的基本功能之一,成为访问控制技术(Access Control)1.2 课题研究的意义基于角色的访问控制策略在网络环境中,能够限制和控制通过通信链路对主机系统和应用的访问。为了达到这种控制,每个想获得访问的实体都必须经过鉴别或身份验证。它被认为是一种更普遍使用的访问控制模型,可以有效表达和巩固特定事物的安全策略,有效缓解传统安全管理处理瓶颈问题。它具有减少授权管理复杂性,降低管理开销,并能提供与综合系统组织结构相一致的安全策略的优势,被公认是大型信息管理应用环境中实现授权管理的最佳方案。第2章RBAC访问控制技术发展状况2.1国内外发展状况RBAC(Role-Based Access Control)是近年来在信息安全领域访问控制方面的研究热点和重点。它和DAC、MAC称为三大访问控制策略。第一次使用RBAC术语,是David Ferraiolo和Rick Kuhn于1992年在美国国家标准技术局的第15届国家计算机安全会议提出来的。之后,出现了各个不同RBAC模型,其中,以Ravi Sandhu等人提出的RBAC96模型最为典型,从而掀起了一股研究RBAC的浪潮。1995年11月召开了第一次ACM-RBAC大会清题为基于角色访问控制的ACM大会),在这次大会中所有专家一致认为基于角色的访问控制和技术非常实用,应该继续深入探讨。在RBAC研究历程中,1996年美国George Mansion Univ.Ravi S.Sandhu教授在IEEE computer上发表的一篇学术论文Role-Based Access Control。在该文中Sandhu教授正式提出了RBAC96模型家族,它对RBAC进一步的深入研究奠定了基础。此后国内外研究者在RBAC96模型家族的基础上提出了许多扩展模型。目前国外RBAC研究机构主要是美国NIST和George Mansion Univ.LIST实验室(Prof.Ravi.Sandhu)。NIST主要是进行RBAC及其相关模型的标准化工作,LIST侧重于对RBAC、RBDM及其扩展模型的创建、形式化描述,评价分析,以及在web中的应用等。国内最早的相关学术论文是1994年华中理工大学马建平的硕士学位论文一种无干扰的访问控制模型。而国内与国外比较,国内主要是学术机构如中国科学院软件研究所和华中科技大学计算机科学与工程系,他们正在对RBAC模型扩展和应用方面进行深入的研究。尚无比较成熟基于角色的访问控制(RBAC)及应用研究的RBAC安全访问控制产品。2.2 RBAC在实际应用方面的意义和价值RBAC模型不可能单一,可以从非常简单到非常复杂,实际上RBAC是一个没有边界的模型。同时,这方面的研究也才刚刚开始,如管理模型、授权和个性化和跨组织分布式系统等等。因此,RBAC还有非常丰富的研究领域。对于一个大型系统,角色的数量成百上千,管理这些角色和它们之间的关系将会是一个可怕的任务,如何有效地管理RBAC则成为一个新的问题。RBAC的最大优势在于它对授权管理的支持。通常的访问控制实现万法,将用户与访问权限直接相联系,当组织内人员新增或有人离开时,或者某个用户的职能发生变化时,需要进行大量授权更改工作。而在RBAC中,角色作为一个桥梁,沟通于用户和资源之间。对用户的访问授权转变为对角色的授权,然后再将用户与特定的角色联系起来。一个RBAC系统建立起来以后,主要的管理工作即为授权或取消用户的角色。RBAC的另一优势在于:系统管理员在一种比较抽象且与企业通常的业务管理相类似的层次上。根据NIST在2002年一月份的一份调查报告 (The Economic Impact ofRole-Based Access Control),分析了RBAC的诸多优点以及实施RBAC所产生的经济效益统计分析,得出如下结论:(1)RBAC从投入到公司/企业应用,到从RBAC带来的好处中获益,根据公司的大小不同,需要1到3个季度:这段期间是RBAC与旧系统的合并与融合期;(2)RBAC的NPV(net present value净产值)是实施RBAC的成本的69倍到158倍;RBAC的IRR(internal rate of return,内部收益率)是39%到90%。从上可以看出,其中蕴藏的商机是巨大的。尤其随着国家电子政务的推行,政府机构的办公自动化程度、企业信息化程度的提高,在政府、金融、信息资源管理等领域,RBAC将有越来越广阔的应用发展前景。第3章基于角色的访问控制系统设计与实现3.1RBAC的基本概念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+ResourceRole:角色,一定数量的权限的集合。权限分配的单位与载体,目的是隔离User与Privilege的逻辑关系.Group:用户组,权限分配的单位与载体。权限不考虑分配给特定的用户而给组。组可以包括组(以实现权限的继承),也可以包含用户,组内用户继承组的权限。User与Group是多对多的关系。Group可以层次化,以满足不同层级权限控制的要求。RBAC的关注点在于Role和User, Permission的关系。称为User assignment(UA)和Permission assignment(PA).关系的左右两边都是Many-to-Many关系。就是user可以有多个role,role可以包括多个user。凡是用过RDBMS都知道,n:m 的关系需要一个中间表来保存两个表的关系。这UA和PA就相当于中间表。事实上,整个RBAC都是基于关系模型。Session在RBAC中是比较隐晦的一个元素。标准上说:每个Session是一个映射,一个用户到多个role的映射。当一个用户激活他所有角色的一个子集的时候,建立一个session。每个Session和单个的user关联,并且每个User可以关联到一或多个Session.在RBAC系统中,User实际上是在扮演角色(Role),可以用Actor来取代User,这个想法来自于Business Modeling With UML一书Actor-Role模式。考虑到多人可以有相同权限,RBAC引入了Group的概念。Group同样也看作是Actor。而User的概念就具象到一个人。这里的Group和GBAC(Group-Based Access Control)中的Group(组)不同。GBAC多用于操作系统中。其中的Group直接和权限相关联,实际上RBAC也借鉴了一些GBAC的概念。Group和User都和组织机构有关,但不是组织机构。二者在概念上是不同的。组织机构是物理存在的公司结构的抽象模型,包括部门,人,职位等等,而权限模型是对抽象概念描述。组织结构一般用Martin fowler的Party或责任模式来建模。Party模式中的Person和User的关系,是每个Person可以对应到一个User,但可能不是所有的User都有对应的Person。Party中的部门Department或组织Organization,都可以对应到Group。反之Group未必对应一个实际的机构。例如,可以有副经理这个Group,这是多人有相同职责。引入Group这个概念,除了用来解决多人相同角色问题外,还用以解决组织机构的另一种授权问题:例如,A部门的新闻我希望所有的A部门的人都能看。有了这样一个A部门对应的Group,就可直接授权给这个Group。3.2 权限树的设计与实现(一)权限树设计思想在我们的系统中,主要的权限区别来源于不同的业务模块,如告警处理,拓扑处理,数据备份处理,系统安全处理,等。基于此,因此我们采用基于业务流的树形结构设计权限。使所有权限构成一颗具有隶属关系的多叉树。每一个权限既可以是树的一个叶子也可以是某叶子的父节点。这样的业务流权限多叉树,共100个权限椰子节点,14个主干分支,一个超级用户节点。其中的操作根据综合通信资源信息系统各功能模块的权限要求,我们定义了十四类操作,其权限树实现效果如图1所示:图1操作类别显示例图每一类操作下又有相应的分支子操作节点,如图2:图2操作类别中子操作显示例图此操作共构造可供分配的100种操作。这100种操作组合起来可以实现电力通信资源信息系统中各模块大部分权限设计。将这些操作与被控制的对象关联起来,并赋予相应的群族,再将群组指派用户,这样就实现了用户权限的关连,实现了用户的权限分配。基于此多叉树的权限设计如果要访问到某一权限,就需要对此权限树做树的遍历。在庞大的通信资源信息系统中,快速的信息处理是维护通信资源的必要条件。因此如何快速的遍历权限树,是我们提高访问控制系统性能的关键。(二)权限树生成与访问算法实现树的算法采用按广度优先的顺序遍历以此节点为根的子树。结合递归算法,生成及获得树中的叶子节点。1树的生成算法。根据数据库表,递归填加树的每一个节点。1)得到数据表中某记录的操作名及父节点,构成一权限对象。初始化树的根节点。将此对象与此根节点作为操作对象。2)按广度优先的顺序遍历,得到此节点的所有节点。3)将权限对象的父节点与得到的节点比对。为树添加此权限对象。4)返回更新后的树,重复第一步。2树的叶子访问算法。递归得到树中某一节点的叶子节点。1)得到某一节点及其下属叶子。2)将此这也叶子看成一棵以自己为根的树,在寻找其下叶子。3)判断得到的叶子是否是最后的孩子叶子,如果是,更新孩子节点列表;否则从第一部开始。(三)权限树的算法流程图1树的生成算法。根据上述算法描述,我们从数据库表中读取每一条操作记录,作为OperatObject,以树的根节点开始,依算法递归填加树的每一个节点。算法流程图如图3所示:图3 树的生成算法流程图2树的叶子访问算法。根据算法描述,从属的根节点出发,递归得到树中某一节点的叶子节点,其算法流程图如图4所示:图4 树的叶子访问算法流程图3.3 用户管理模块用户管理模块包括用户的添加用户、删除用户,用户信息更改、用户密码更改、用户信息浏览五大功能模块。这五大功能模块的主要实现方法UML图(如图5所示)。为了使得权限的分配灵活方便,在权限框架中规定权限管理人员可增加和删除所对应权限系统中的用户,并可以为用户分配任何得角色。即除了系统管理人员,其它的用户也具有可创建新的用户的权限,但是只能将自己拥有的角色分配给新创建的用户,也只能删除自己权限范围内的用户。举个例子,如果用户A具有角色RI,R2,不具有角色R3,那么当此用户创建一个新用户B时,最多只能将角色RI,R2分配给B,A无权将角色R3分配给用户B。由此,用户A能够更改、删除的用户,也是其角色RI,R2权限范围内的用户,而对于角色R3权限范围内的用户则无能为力。图5 用户管理模块UML图3.4角色管理模块角色群组管理模块包括群组的添加、删除,用户群组管理、群组权限管理四大功能模块。这四大功能模块的主要实现方法UML图(如图6所示)。对于添加一个群组,只需要操作前判别此用户是否具有添加群组操作的权限即可。但对于删除一个群组就没有那么简单了。因为要删除的角色可能己经被赋予了应用系统中的某些用户了。角色管理模块中删除某个角色r,则同时必须通知用户管理模块要求遍历系统中的所有用户,如果用户具有角色r,必须将用户角色列表中相应的记录删除掉,但不能删除用户的基本信息,只是使得此用户的相应角色及相应的权限失去效应,以保证角色管理模块和用户管理模块之间的一致。同时删除了角色r,则角色r具备的权限集p1,p2pn其中的映射关系也消亡了。对于角色模块中的用户群组管理和群组权限管理是用户授权中重要的步骤之一。作为RBAC策略的实现,用户群组管理和群组权限管理具体的体现了用户、群族、权限之间的映射关系。对于这种映射关系的管理,本文采用了角色分级管理的算法策略,对于这种关系的实现,本文采用了授权增量设置的算法策略,基于这两种算法,在用户群组管理和群组权限管理中,我们实现了:1给用户分配群组时,只能对其权限范围内的用户及群组进行操作。2对于登陆用户,不能减少或增加自身权限。即不能将自己添加到超出权限范围的群组中,也不能将自己从自身的群组中删除。3当对群组进行权限指派时,不能指派超出登录用户权限的操作给群组。4当对已有群组的权限进行更改时,不能对登录用户权限外的群组进行操作,也不能对权限内群组进行权限外操作赋值。图6 角色管理模块UML图3.5 权限管理模块权限管理模块包括权限信息浏览、权限参数配置,权限参数更改三大功能模块。这三大功能模块的主要实现方法UML图,如图7所示:图7 权限管理模块UML图权限管理模块主要负责维护和管理权限操作与资源对象的映射关系。这个模块是整个框架中最重要的一个部分。资源对象是指应用系统中需要进行保护的信息资源。在本访问控制系统中,所有的资源对象都被封装在相关的访问类中。对于资源对象的权限操作的指定,也遵循RBAC策略,对于某一登陆用户根据其角色权限:给资源对象分配权限操作时,只能对其权限范围内的权限操作进行赋值。3.6 用户角色的授权模块角色授权是访问控制系统的综合权限管理的一个综合模块。它融合用户管理、群组管理、权限管理并采用授权增量、最小权限算法,实现用户与资源对象的访问控制关联。图8的时序图描述了这一复合功能:图8 访问控制授权时序图在角色授权的时候,需要遵循两个原则:增量设置原则和最小权限原则。1增量设置原则增量设置原则是指:如果角色1继承角色2,则对角色1授权时,只授予它不同于角色2的权限即可,而不必重复设置它与角色2相同的权限。例如:在系统中己经有角色“系统用户角色管理员”,该角色已经被赋予一定权限。如果从“系统授权管理员”角色中继承出一角色“系统角色权限管理员”,他们的权限中角色管理部分是共同的。当用户被赋予这两个角色时,则只需为用户添加“用户、角色、权限”这三部分权限即可,而不是带有冗余的“用户、角色、角色、权限”,这样的权限信息。2最小权限原则所谓最小权限原则是指:用户所拥有的权力不能超过他所执行工作的权限。实现最小权限原则,需分清用户的工作内容,确定执行该项工作的最小权限集,然后将用户限制在这些权限集的范围之内。在电力通信资源信息系统中,各职能管理分工不同,角色权限不同,只有角色需要执行的操作才授权给角色。如“告警清除”角色只赋予具有告警处理能力的职员,当他处理完告警故障后,才可清除告警,而不是为了不去工作,看到告警忽略不计直接清除。3.7 用户角色的激活模块角色的激活是访问控制中重要的一部分,如果用户的登陆认证成功,那么用户相应所属的角色也会被激活。对于该系统,激活角色还需要必须的前提条件:系统当前环境条件下是否允许该角色激活,即该用户状态为enabled或unenabled。用户角色激活是在用户状态为enabled时,应用服务器在系统在用户登录成功时将用户、角色、权限、对象以及用户-角色、角色-权限、权限-对象信息全部读入内存,访问控制系统经过算法处理后形成一个用户的主体能力访问列表,由此应用程序很容易判别当前用户的操作是否符合当前的安全规则。这样就完成了用户角色的激活操作。在具体的实现中,首先调用资源对象中this.getClass().getName()用于返回访问控制安全对象的唯一标识;再调用安全检查类中的checkLoginForClassAuthor(classname),如果返回的是true,那么表明信息资源访问权限得到许可,可以对信息资源进行操作,否则,信息资源是受到保护不可达的。图9显示了用户权限的激活时序流程:图9 用户角色激活时序图第4 章 系统运行模型4.1 用户认证使用应用系统的用户首先要进行用户登录,登录成功后,结UserRole_Table及RolePerssion_Table查询当前用户对所有资源的访问权限,根据返回结果在动态生成此用户对资源的所有权限表如见表1:表1 动态生成权限表字段类型描述ResourceIDint64资源AccessModeint访问方式其中Access Mode的值是用户所属的多个角色对某一资源的所有访问方式的组合。4.2 安全访问控制当用户要对一个需安全访问控制的对象操作时,首先根据应用系统自定义的资源ID编码规则及访问对象的相关信息生成ResourceID,和应用系统定义的对此对象进行操作所需的访问权限access Mode,再查找UserPermission_Table表,判别当前用户是否具有相应的操作权限。4.3 测试验证点授权模块负责对URL资源的授权,我们采用下面的函数实现:Map AssigningAuth(Strirng Role,String URL,String OP)将URL资源的访问详细设计和模块实现权限OP赋予角色Role,并保存在对应该URL的角色-访问权限映射中。从URI资源管理器的需求分析和程序设计出发,我们可以得到如下针对URI资源管理工具的功能测试验证点:能正确载入全部当前可用的角色列表;能读入资源集和对应的权限集,并能正确显示;能正确进行对角色的授权工作,并且授权信息能正确地显示在用户界面上;确保对父角色的授权能正确的扩展到子角色;能正确进行修改对角色的授权;可以正确的创建和修改抽象对象;能查看相应的操作记录日志。第5章实验结果VMware vSphere vCenter 5.0用户角色访问与权限控制角色:各种角色定义了对此角色可操作细节的权限组合;用户权限:用户权限是对ESXI5.0中的对象实例(如ESXI5.0主机,虚拟机,存储,网络等)进行权限的分配。通过在这些对象上绑定"用户+角色"来限定每个用户或用户组可以对此对象的操作权限;1、添加角色在vSphere center中选择【系统管理】【角色】vSphere center 中VMware默认定义了几个角色,分别是:其中,【无权访问】【只读】【管理员】这三个是无法被删除的,其它可以被删除。在需要创建自定义角色时,你可以直接对上面这些角色进行克隆,克隆出新的角色后再编辑角色,修改相应的权限。也可以直接添加角色进行权限的定义。2、分配权限将VMware vSphere Client 登录,在【清单】【主机和群集】界面左边点选相应要给其限制的集群或虚拟机,再点击右边的【添加权限】功能选项,然后在右击弹出的快捷菜单中选择【添加权限】。在弹出的【分配权限】对话框中,点击【添加】,然后找到刚才在vCenter操作系统后台中创建的用户或用户组。(添加一个用户或用户组,角色选择【部署模板为新虚拟机(无删除/修改权限)】就可以了,这里是根据自己的需求来定义分配角色);注意,如果你不想此用户看到此数据中心下的所有存储,请将(传播到子对象)的勾去掉。3、验证VMware vSphere Client 登录:用新建的帐号测试:从上面操作我们可知,VMware vSphere的角色是很细的,权限分配也是很严谨的(对于某一个权限的正常设置必须让涉及此权限每个对象都要有相应的权限才行)。你要访问某个存储,必须要对这个存储所属的数据中心有【只读】权限才行,光有数据存储的访问权限,而没有对其父对象数据中心的只读权限,用户还是不能访问到此存储的。这一点很重要!第6章总结与展望RBAC访问控制策略是信息安全领域广泛采用的信息安全策略和机制。在信息资源管理软件中采用RBAC模型能在很大程度上适应组织结构庞大、权限定义复杂、且变动频繁的应用环境。因此本文把RBAC访问控制功能模块提高到中间件的高度,充分融合了系统的客户UI层,通信层,服务层及数据存储层。中间件本身则可以部署在分布式系统中不同的软硬件平台上,对外提供一系列接口,实现中间件可重用性和高可靠、可扩展性的优点。这就简化了应用集成在一定程度上提高了整个系统的安全性由于RBAC策略在实现时具有其抽象概念与实际应用相结合难度较大的问题,所以要使得RBAC策略重复发挥其优势其功能,需要对应用环境平台作详细的需求调查分析。参考文献1叶锡君,许勇,吴国新.基于角色的访问控制在Web中的实现技术J.计算机工程,第八卷2007,(1):167一1692何海云,张春.赵战生.基于角色的访问控制模型分析.计算机工程.第25卷.第8期2003.8.39-413马建平,余祥宣,洪帆等.基于角色的安全策略.计算机研究与发展.第35卷.第5期.2008.5,447-4504俞诗鹏.基于角色访问控制的理论与应用研究.北京大学数学学院信息科学系.2003年5月.45Booch,Grady.UML用户指南.北京:China Machine Press.2006,6吴敏,丁永生,陈家训.XML的研究现状及发展.微型电脑应用.2006.17(4):5-9.7陈雁主编.数据库系统原理与设计.中国电力出版社.2004.106-1528陈明著.数据结构(C语言版).清华大学出版社.2005.148-151,204-2069Sinan Si Albir著.常晓波译UML技术手册.中国电力出版社.2002.9-22,