1/16第1章简介1.1研究背景与意义近年来,随着企业信息系统的广泛使用,信息技术成为知识经济的基础,企业的发展中起着不可替代的作用。信息技术在企业中的运用,高了企业效率,改变了传统的商业模式,使得信息和服务得到了极大的共享。但与此同时,系统安全问题也逐渐受到越来越多的关注。对信息资源的访问控制和用户权限的管理成为了企业确保系统安全的重要工作。在信息安全体系结构中,访问控制技术(Accesscontroltechnology)是解决安全问题的一个关键。目前我国的大部分企业均采用传统的访问控制技术,包括自主访问控制(DAC)和强制访问控制(MAC),但它们都存在着一些弊端。本文以基于角色的访问控制技术(RBAC)为理论基础,针对企业展开了实践探讨,并通过分析系统功能需求,设计并实现了一个访问控制系统。基于角色的访问控制的核心思想是:将访问权限与角色相联系,而用户的授权则通过赋予相应的角色来完成,用户所能访问的权限就由该用户所拥有的所有角色的权限集合的并集决定。本文以大量的用例图和逻辑等视图分析了系统的设计框架,设计并实现用户登录模块、数据库模块、流程权限配置模块等。该系统可以应用于大型企业的信息系统,具有很好的通用性、可扩展性和可移植性。1.2开发和运行环境介绍本次课设利用JSP去呈现一个访问控制系统。管理员在网页中登录,用到的主要技术如下:1.2.1MyEclipseMyEclipse是一个十分优秀的用于开发Java,J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse目前支持JavaServlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse是几乎囊括了目前所有主流开源产品的专属eclipse开发工具。1.2.2Tomcat6.02/16Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。1.2.3jdkjdk是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。1.2.4MysqlMySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle公司。MySQL是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem:关系数据库管理系统)应用软件之一。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。3/16第2章基于角色的访问控制2.1访问控制基础访问控制的定义是:“为电脑系统所属资源在遭受未经授权的操作威胁时,供适当的控制以及防护措施,以保护信息的机密性和完整性。”其中,未经授权的操作包括:未经授权的使用、信息的泄露、未经允许的修改、恶意的破坏以及拒绝服务五部分。“访问”的本质是主体对客体实行某种操作。同时通过引用监视器来控制访问。访问控制系统一般包括:主体、客体、安全访问策略。这是访问控制的三要素。在信息系统中,主体是发出访问操作、存取要求的发起者;客体是系统中被处理、被控制或被访问的对象;安全访问策略是一套规则,用以确定一个主体是否对客体拥有访问权限。三要素的具体内容见表1。2.2RBAC模型的基本概念随着计算机信息系统在非军用领域得到更为广泛的应用,传统的自主访问控制技术和强制访问控制技术已经不能满足现代信息系统安全的需求。在这种情况下,出现了基于角色的访问控制模型。基于角色的访问控制策略在用户(user)和访问权限(permission)之间引入了角色(role)的概念,用户与特定的一个或多个角色相联系,角色与一个或多个访问权限相联系,角色在用户与权限之间起了一个桥梁的作用。在实际的工作中,角色可以生成或取消,它的权限也可以根据实际工作需要进行修改。基于角色的权限管理模式适用于用户较多且有着不同权限层次的系统的访问控制的管理,目前被认为是解决大型企业权限管理问题的有效方法。RBAC模型主要有以下7个概念:用户:直接与系统进行互动的人或程序。角色:对应于组织中某一特定职能岗位,代表特定的任务范畴。在RBAC中权限分配给角色,用户通过扮演不同的角色拥有着对应的权限组合。权限:表示主体对系统中的客体进行特定模式访问的操作许可。权限包含操作与4/16客体,在NIST的RBAC标准中,特别定义了操作与客体。操作:指对客体的操作能力,包含写入、读取与拥有权等,此外也可以包含抽象的操作动作。客体:指访问控制可供操作的客体,可能是档案、文件或是执行程序等相关的客体。会话:用户对应到可使用的角色集合的过程,用户通过会话对应到被允许的角色,RBAC中用户可以对应到多个角色,根据需要来转换角色,获得适当的权限,以达到最小权限的功能。限制:用来规定角色彼此之间的关系,如层次关系、角色互斥的关系。2.3RBAC的设计原则基于角色的访问控制模型主要遵循以下原则:角色继承原则、最小权限原则、职责分离原则角色容量原则、数据抽象原则。角色之间、权限之间、角色和权限之间定义了一些关系。角色继承关系表示角色之间可以相互继承,将子角色分配给用户,用户将获得其父角色的所有权限。当角色之间可能有互相重叠的职责和权力时,属于不同角色的用户可能需要执行一些相同的操作。这样,管理员在设置子角色的时候,只需要设定不同于父角色的属性和访问权限,避免了重复定义。最小原则原则之所以被RBAC支持,是因为RBAC可以将其角色配置成其完成任务所需要的最小权限集。职责分离原则可以通过调用相互独立互斥的角色来共同完成敏感的任务而体现,比如要求一个记账员和管理员共同参与同一过账。角色容量原则是指,在一个特定的时间段内,有一些角色只能有一定人数的用户占用。在创建新的角色时应该指定角色的容量。数据抽象可以通过权限的抽象来体现,如财务操作用借款、存款等抽象权限,而不用操作系统ᨀ供的典型的读、写、执行权限。然而这些原则必须通过RBAC各部件的详细配置才能得以体现。2.4访问控制策略比较访问控制策略是一套规则,用以确定一个主体是否对客体拥有访问权限。根据制定的系统安全策略,形成了主体与客体、主体与主体、客体与客体之间相互访问的关系。但并不是要把系统中的每个实体都分为客体或主体,根据不同的情5/16况,一个实体可以是一个访问请求的主体,同时也可以是另一个访问请求的客体。访问控制策略一般分为三种:自主访问控制策略、强制访问控制策略和基于角色的访问控制策略。这三种访问控制策略的关系如图1所示。自主访问控制最早出现在20世纪70年代时期的分时系统中,是一种多用户环境下最常用的一种访问控制技术,在目前流行的Unix类操作系统中被普遍采用。自主访问控制技术基于这样的思路:主体全权管理有关其客体的访问授权,有权泄露、修改该客体的有关信息。因此,自主访问控制也存在着一些缺点。首先在商业应用中,系统的用户大多对资源不具备所有权,所有权是属于公司甚至外部机构,从这个层面上说自主访问控制不适合于商业应用。另一方面,自主访问控制允许用户自主决定将权限转让给他人,在经过多次权限转让之后,权限可能被无限制地扩散,无法保证系统的安全性。而此时系统管理员对权限的管理几乎没有任何权利,形同虚设。此外,自主访问控制中对资源的访问是直接依据权限进行,无法防范木马攻击,木马攻击者可以获得或破坏机密信息。强制访问控制的基本思想:每个主体和客体都有其既定的安全属性,某客体是否能执行特定的操作取决于它的主体和该客体的安全属性的关系,当然,主客体的安全属性不能随意更改,一般只能由系统的安全管理员设置。管理员可以对系统权限进行有效的管理,但由于主客体之间需要相互逐一进行配置,工作量巨大。此外,强制访问控制缺乏灵活性,与自主访问控制相同,也很难满足商业应用的需要。基于角色的访问控制更一般化,可以通过RBAC实现MAC和DAC,但其本质上是一种非任意权限的控制方法。基于角色的访问控制可以有效地减小权限6/16管理的工作量,它可以按需要定义一些约束条件,例如设置互斥角色。RBAC也能够很好地支持最小权限原则和职责分离原则,以确保系统的安全。而且,它实现了用户与访问控制的逻辑分离,极大地方便了权限的管理。RBAC模型实际上形象地反映了RBAC本身的含义,建立RBAC模型就是要对RBAC进行系统而抽象地描述,从而使人们能够非常方便地理解RBAC的含义,以便对其进行更加深入地研究。目前,绝大多数基于角色的访问控制研究都以RBAC96或NISTRBAC模型作为出发点进行深入研究的。2.5NISTRBAC模型首先讨论RBAC96模型。R.S.Sandhu等人于1996年ᨀ出了基于角色访问控制参考模型,即著名的RBAC96模型,其包括4个不同层次:基础模型(RBAC0),角色层次模型(RBAC1),角色约束模型(RBAC2),复合模型(RBAC3)。RBAC0是最基本的模型,只包含最基本的RBAC元素:用户、角色、权限以及会话,但是其满足了RBAC系统所必须的最小要求。在RBAC0中,不存在角色之间层次关系,所有角色都是平级的,所有的对象也没有约束。RBAC1是在RBAC0的基础上引入一定的层次结构,其包含RBAC0的所有内容。RBAC2在RBAC0的基础上引入了约束条件,对于现实社会中的实际系统,不管其是否具有角色的层次关系,约束机制都是必不可少的。RBAC3相比较于RBAC0,增加了角色分级和约束限制,因此,可以认为RBAC3是RBAC1和RBAC2两者的结合。RBAC各子模型间的关系如图2所示。NIST(NationalInstituteofStandardsandTechnology)是美国标准与技7/16术协会的简称。它ᨀ出的NISTRBAC模型实质上是RBAC96中RBAC3模型的一个扩展,NISTRBAC模型的意义不在于理论或技术上的创新,而在于标准化。NISTRBAC定义了四个模型部分:核心RBAC、层次RBAC、静态职责分离RBAC和动态职责分离RBAC。图3给出了NISTRBAC模型的基本框架。在现实应用中,单纯的基于角色的管理往往不能完全适应大型系统的管理,特别是当管理需要考虑到基于服务的集中式与分布式相结合的方式以及各个部门之间角色的协作等因素时,这些情况下往往需要扩展才能实现。8/16第3章应用系统的需求分析实际生产中,系统分析部分主要是根据用户ᨀ出的原始需求和需求调查资料进行分析,取出系统的功能要点、开发对象以及系统的规模预测,并进一步选定系统的软件环境,包括开发环境和运行环境。由于本课设不涉及实际生产,我们只是模拟一个基于角色管理的工厂安全管理平台,所以需求均为我们的假设,可能与实际生活有所偏差。由于用户ᨀ出的需求是从用户角度分析的,那么在实际生产中,要考虑的问题为:出需求的用户是否对本领域有所了解或是否精通,这意味着用户的原始需求可能并不适合直接用于系统的开发和设计,必须先从需求中ᨀ取出功能的和抽象结构,再进行设计。企业安全管理平台大致包括四个功能:安全流程体系管理、安全流程活动元数据管理、安全流程建模和配置、安全流程报表。安全流程体系管理供安全流程体系中用户权限等方面的管理功能;安全流程活动元数据管理用来完成安全流程及流程活动相关元数据自身信息的管理以及元数据之间关联关系的维护;安全流程建模和配置供安全流程建模和设计功能,同时完成流程活动和相关元数据的绑定;安全流程报表完成