摘要
在基于角色访问控制(role-based access control,RBAC)中,权限和角色相关,用户被当作相应角色的成员而获得角色的权限。RBAC背后的首要动机是为了简化管理。已经有文章介绍了一些基于角色系统的开发框架,但目前很少有文章使用系统开发者或软件工程师易于理解的方式来阐述RBAC。统一建模语言(UML)是一种通用的可视化建模语言,我们可以使用它阐述、可视化和文档化软件系统的组成部分。本文使用UML表示RBAC模型,缩短了安全模型和系统开发之间的鸿沟。我们使用三种视图表述RBAC模型:静态视图、功能视图、动态视图。另外,我们简短地讨论了将来的方向。
1 介绍
在RBAC中,权限和角色相关,用户(user)被当作相应角色(role)的成员而获得角色的权限(permission)。这大大简化了权限的管理。角色针对组织中的各种功能创建,用户依据他们的责任和资历被指派角色。用户被指派的角色可以容易地从一个跳到另一个。用户对信息的访问在指派角色的基础上被管制。自从RBAC被广泛接受,许多安全领域的研究者和安全系统开发者已经花了很多时间来开发基于角色的系统。一些文章介绍了一些基于角色系统的开发框架 [2, 11 , 12 ]。这些以前的工作有一些很难被开发人员理解,因为它们太抽象、太形式,另外一些则是关注面向应用或专门领域框架的具体解决方案。这些框架都不足够为系统开发者给出一份合理的蓝图。
我们的主要目标是缩短安全模型和系统开发之间的鸿沟。本文使用通用的可视化建模语言UML来表示RBAC模型。我们选择UML的原因是它已经成为建模的标准语言。我们的表示包括RBAC模型的静态视图、功能视图、动态视图。
本文按以下方式组织:在第2部分,我们描述一种广为人知的基于角色访问控制模型,通常称为RBAC96。第3部分简短介绍UML。第4部分用UML表示RBAC96模型。第5部分给出结论。
2. RBAC模型
作为有希望取代传统自主式访问控制(DAC)和强制式访问控制(MAC) [3,4, 6, 9]的替代者, RBAC目前已经得到了很大的关注。RBAC的策略基于角色,可以使用映射组织结构的方式来阐述安全策略。Sandhu等发布了称为 RBAC96的RBAC通用模型家族[9]。图1展示了家族中最通用的模型。关于在开发这个模型家族时所作设计决定的一些动机和讨论可参见[9]。
图1 RBAC模型
图1显示了 (regular)管制对数据和资源的访问的角色和权限。直观上,一个用户是一个人或一个自治的agent,一个角色是一项在组织中的工作功能或工作头衔。而权限是对系统中一个或多个object的特定访问模式的许可或执行某些动作的特权。角色以偏序关系≥组织,如果x≥y那么角色x就继承了角色y的权限。x的成员也意味着是y的成员。每次会话( session)把一个用户和可能的许多角色联系起来。用户建立一次会话,激活一些他或她是成员(直接获得或通过角色继承的方式间接获得)的角色子集。RBAC模型有以下组成部分,这些组成部分从以上的讨论中形式化。
一个用户可以成为很多角色的成员,一个角色可以有许多用户。类似地,一个角色可以有多个权限,同一个权限可以被指派给多个角色。每个会话把一个用户和可能的许多角色联系起来。一个用户在激发他或她所属角色的某些子集时,建立了一个会话。用户可用的权限是当前会话激发的所有角色权限的并集。每个会话和单个用户关联。这个关联在会话的生命期间保持常数。一个用户在同一时间可以打开多个会话,例如,在不同的工作站屏幕窗口各一个。每个会话可以有不同的活动角色。会话的概念相当于传统的访问控制中主体(subject)的标记。一个主体是一个访问控制单位,一个用户在同一时间可以拥有多个不同活动权限的主体(或会话)。
3. UML概览
UML是通用的可视化建模语言,我们可以使用它阐述、可视化和文档化软件系统的组成部分。现在UML已经是软件工程的标准语言。UML包括用例建模,静态建模和动态建模。在用例建模中,通过用例和执行者阐述系统的功能需求。用例由执行者引发,描述了执行者和系统之间的交互。静态建模提供系统的结构视图信息,在这个视图中,通过类、类属性和与其他类的关系( relationship)表示。关系包括关联(association)、泛化/特化(generalization/specialization)、聚合。动态建模表现系统的行为视图。它可以通过对象协作图、顺序图或状态图来描述。对象协作图和顺序图用来描述对象和其他对象在执行用例时的协作。依赖于状态的对象使用状态图来描述 [5]。
本文中,我们使用类图、用例图和对象协作图分别作为RBAC模型的静态视图、功能视图、动态视图。在本文的剩下内容中,我们使用了 [1, 7, 10]中介绍的UML标记符。
4. 基于UML的 RBAC表示
RBAC中的组成部分是用户、角色、权限、会话和约束。为了使用UML表示RBAC模型,我们使用对象类的标记分析每个组成部分。在本文后面部分中,我们的分析分为三个不同的视图:静态视图、功能视图和动态视图。
4.1 静态视图
图2 类图:概念静态模型
RBAC的概念静态模型如图2所示,包括类、类之间的关系和关系的势。基本的实体是用户、角色、权限、约束和会话类。角色和权限类分别特化出两种类别:使用者和管理者。这个特化依赖于用户的资历。RBAC模型的约束可以有很多种形式,依赖于应用系统。为了简化分析模型,我们静态模型中的约束只有三个:用户约束、权限约束、会话约束。另外,静态模型还有一个特殊的类session hour,当用户建立一个会话来激活他/她的角色时,该类被使用。这对表达基于会话的约束很有用。例如,一个组织可以要求用户只能在某些时间建立会话。为了强化这类约束,我们需要跟踪每个会话的会话时间。实体类的属性在图3中定义。
图3 实体类的属性
在静态视图中,UA关系和PA关系用多对多的“assinged to”关系表示。用户-会话关系看作一个用户可以建立一个或多个会话,在常数的会话生命期中每个会话激活至少一个或多个角色。角色继承关系表示为一个角色inherits另外的角色。
4.2 功能视图
本文中,我们也作了更具体的功能需求来表示在图2中没有清晰定义的、RBAC系统应该提供的功能。使用用例模型描述的功能视图如图4所示,有三个执行者:安全管理员(security administrator)、用户(user)和角色领域工程师(role domain engineer)。角色领域工程师从可能组织一组权限的应用系统中抽取出基本的知识,构造角色层次和指定约束。安全管理员管理基于角色的系统,指派用户到角色和指派权限到角色。用户是真实的人或外系统,可以建立会话、请求权限许可和关闭会话。
图4 用例模型
下面是建立会话(session establishing)用例的简要叙述:
用例:建立会话
执行者:用户
前置条件:系统空闲
说明:用户提交信息以建立会话;系统显示用户可以激活的角色;用户选择要激活的角色;系统以用户所选择的角色激活一个会话。
在以所选择角色建立会话之后,用户可能需要访问需要基于角色信息的授权过程的系统资源。换句话说,和角色相关的权限应该得到系统的许可。以下是“权限许可”用例的简要描述:
用例:权限许可
执行者:用户
前置条件:用户的会话已经激活
说明:用户提交权限许可信息,系统通知用户权限是否许可。
我们也可以考虑其他情况。例如,我们可能需要额外的功能来让安全管理员监视会话或让用户查询自己的状态。
4.3 动态视图
在动态视图中,用例被精化以显示参与用例的对象之间的交互。“建立会话”的协作图如图5所示。
图5 协作图:建立会话
用户通过UserInterface引发用例, RBAC Controller coordinates协调对象之间的交互。“权限许可”的协作图如图6所示,需要一个前置条件:会话已经被激活。
图6 协作图:权限许可
5. 结论
本文中,我们简要描述了广为人知的基于角色访问控制模型。我们使用可视化建模语言UML来描述这个模型。这是使用建模语言描述RBAC模型的第一次尝试。我们相信我们的工作可以帮助系统开发者更容易地理解RBAC模型和建立基于角色的系统。我们也识别了在安全模型的初期被排除的有用功能和约束。在此工作的基础上,我们将研究基于UML的模型如何能适应于阐述RBAC的组成部分。也包括如何用可能的UML扩展表示角色继承和约束。因为模型通过简化细节来帮助我们理解系统,这个方向应该比较实用。
致谢
感谢Jaehong Park的帮助审阅此文。
参考文献
[1] G. Booch, J. Rumbaugh, and I. Jacobson. The Unified Modeling Language User Guide. Addison Wesley , 1999.
[2] Pete Epstein and Ravi Sandhu. Tow ards A UML Based Approach to Role Engineering. In Pr oceedingsof the 4th ACMWorkshop on Role-Based AccessControl, pages 135-142, Fairfax, VA, October 28-29 1999.
[3] David Ferraiolo and Richard Kuhn. Role-based access con trols. In Proceedings of 15th NIST-NCSC National Computer Security Conferenc e, pages 554-563, Baltimore, MD, October 13-16 1992.
[4] M.-Y. Hu, S.A. Demurjian, and T.C. Ting. User-role based security in the ADAM object-oriented design and analyses environment. In J. Biskup, M. Morgernstern, and C. Landwehr, editors, Database Security VIII: Status and Pr ospects . North Holland, 1995.
[5] Hossan Gomaa. Object Oriented Analysis and Modeling for Family of systems with the UML. T echnicalReport, ISE Dept. George Mason University, 1999.
[6] Imtiaz Mohammed and David M. Dilts. Design for dynamic user-role-based security. Computers & Security, 13(8):661-671, 1994.
[7] J. Rumbaugh, G. Booch, and I. Jacobson. The Unified Modeling Language Reference Manual. Addison Wesley , Reading MA, 1999.
[8] Ravi S. Sandhu. Lattice-based access control models. IEEE Computer, 26(11):9{19, November 1993.
[9] Ravi S. Sandhu, Edward J. Coyne, Hal L. Feinstein, and Charles E. Y ouman. Role-based access con trolmodels. IEEE Computer, 29(2):38{47, February 1996.
[10] National Soft w areet al. Unified Modeling Language Notation Guide, Version 1.1. September 1, 1997.
[11] Charles Y ouman, Ed Coyne, and Ravi Sandhu, editors. Pr oceedingsof the 2nd ACM Workshop on R ole-Based Access Control, Nov. 6-7. ACM, 1997.
[12] Charles Y ouman, Ed Coyne, and Ravi Sandhu, editors. Pr oceedingsof the 3rd ACM Workshop on R ole-Based Access Control, Oct. 22-23. ACM, 1998.