支持RBAC限制的XACML改进模型
扫描二维码
随时随地手机看文章
引言
随着社会信息化程度的提高,信息安全已经逐渐成为一个不可忽视的问题。互联网的不断发展带来了其应用模式的不断改变,这样的变化也给信息安全的保障带来了不小的挑战。访问控制作为保障信息安全的第一道关卡自然会受到广泛关注。目前,WEB服务普遍采用分布式网络应用构建技术,它建立在开放的标准之上,同时很好地利用了已有的成熟的互联网应用技术,包括各种模型规范和编程语言,并结合面向服务的思想,以更好地实现异构信息交流的目的。这就要求如今所采用的访问控制方法不仅要达到保证信息安全的目的,还必须具有良好的可扩展性、可定制性和异质信息的交互性。
1访问控制概述
访问控制技术是通过某种方式明确地准许或限制访问能力及范围的一种方法。通过访问控制服务,可以限制对关键资源的访问,防止非法用户的侵入或者因合法用户的不慎
收稿日期:2013-04-27操作所造成的破坏[%传统的访问控制方式包括自主访问控制(DiscretionaryAccessControl,DAC)、强制访问控制(MandatoryAccessControl,MAC)、基于角色的访问控制(Role-basedAccessControl,RBAC)等。每种访问控制方式都有广泛应用,但应用的范围有所区别[2]。
DAC最早出现在20世纪70年代的分时系统中,是一种多用户环境下最常用的访问控制技术。在目前流行的UNIX操作系统中,DAC被普遍采用,允许合法用户以用户或用户组的身份访问策略规定的客体,同时阻止非授权用户访问客体,某些用户还可以自主地把自己所拥有的客体的访问权限授予其他用户。在传统的系统中,访问通常基于ACL,ACL与授权子系统结合为一体,在许可和拒绝对资源的访问上扮演关键的作用。
MAC主要用在军事领域中,它是在DAC的基础上,增加了对网络资源的安全属性划分,规定不同属性下主体的访问权限。MAC是一种多级访问控制策略,系统事先给访问主体和受控对象分配不同的安全级别属性,在实施访问控制时,系统先对访问主体和受控对象的安全级别属性进行比较,再决定访问主体能否访问该受控对象。
RBAC的概念由Ferraiolo和Kuhn于1992年提出叫RBAC的重点是分配一个所谓的角色给用户或用户组叫角色对应于业务系统中的岗位或者职位。由于角色是安全控制策略的核心,因此极大地简化了安全管理,特别适用于大规模的企业应用。无论是系统级还是应用级的安全管理,都可以应用RBAC进行权限控制,如目前的Windows操作系统和SQLServer的用户权限管理就体现了RBAC的思想。
从安全性的角度来看,较之DAC和MAC,RBAC更适合于商业应用。它综合了MAC和DAC的特点,既可以被配置成MAC,也可以配置接近DAC。
2RBAC与XACML
RBAC模型
RBAC的核心思想是将访问权限与角色相联系[5],通过给用户分配合适的角色,让用户与访问权限相关联。当主体发生变化时,只需修改主体与角色之间的关联,而不必修改角色与客体的关联。用户以什么样的角色对资源进行访问,决定了用户拥有的权限以及可执行何种操作。在RBAC中,角色成为访问的主体。
RBAC规范遵循角色继承原则、最小权限原则和责任分离原则[6]。
RBAC的优点:一是支持权限管理。通过角色沟通用户和资源,对用户的访问授权转变为对角色的授权,系统的管理工作是授权或取消用户的角色。二是管理员操作方便。行政管理人员委派用户到角色的工作,而技术人员配置权限到角色的工作。三是很好地描述角色层次关系,实现最小权限原则和职责分离原则,降低系统风险。
而RBAC存在的不足,则主要表现在两个方面:一是对资源实施访问时,如果无法通过用户角色验证,就再没有其他办法许可访问;二是在基于项目分配的人力资源公司内,用户可以拥有多个角色,同时角色经常变动,因此角色的管理工作量也是很大的。
XACML访问控制模型
XML是描述互联网上结构化信息与内容的标准,具有简单性、结构性与通用性。这些特性使得基于XML的XACML有着广泛的支持性。XACML是一种对访问控制策略和访问控制请求/响应产生过程加以描述的语言。XACML不仅提供了一系列逻辑算法对整个授权过程进行控制,而且提供了支持定义新功能、数据结构、合成逻辑算法等的标准可扩展点,可以根据主体、资源、环境的属性以及所采取的行为进行控制[7]。
XACML访问控制模型由策略执行点(PEP)、策略判决点(PDP)、策略管理点(PAP)、策略信息点(PIP)、主体(Subject)、资源(Resource)、环境(Environment)等组成。图1所示是XACML访问控制模型架构中各主要单元及相互间的关系冏。
图1XACML访问控制模型框架
3基于RBAC的XACML改进模型
3.1问题描述
XACML的RBAC框架[9]规范了如何使用XACML来表示NIST-RBAC标准模型中的核心模型和层次模型。同时,该规范还提出一种叫做RoleEnablementAuthority的实体,将角色指派和角色激活的任务从XACMLPDP中分离出来,更好地体现了以角色为中心的访问控制模式。然而,此次提出的基于XACML的RBAC框架没有对这个实体进行更为明确的定位与规范,只是给出了几种可能的实现方式,例如,该实体可通过RoleAssignment〈Policy〉或<PolicySet>来判断主体是否指派了某个角色属性。
因此,可以说OASIS提出的XACML的RBAC框架还存在着一些缺陷,因为它并不能完整地支持RBAC限制,也没有给出使用RBAC策略的具体数据流程。然而,对于角色的限制是RBAC模型中非常重要的一方面,也是RBAC模型的主要动机之一,所以RoleEnablementAuthority需要在基于XACML的RBAC框架中拥有一个明确的定位。
本文以NIST-RBAC标准模型中的限制模型的原则为基础,结合OASIS提出的XACML的RBAC框架规范以及具体的XACML访问控制模型,用XACML描述一种基于角色的访问控制改进模型。
3.2支持RBAC限制的XACML改进模型
本文对OASIS的XACML的RBAC框架进行了改进,以便更好地支持NIST-RBAC限制模型中的静态职权分离和动态职权分离限制。图2所示是支持RBAC限制的XACML改进模型,其中,新增的模块与数据流由虚线表示。
图2中,管理员通过策略管理点定义所需要的安全策略;在一个具体的应用环境下,策略执行点截获用户发送的访问请求;策略执行点将截获的访问请求发送给上下文处理器,以便将请求转化为统一的XACML格式;上下文处理器将产生的XACML格式的访问请求发送给策略决策点并请求其进行访问控制决策;策略决策点向上下文处理器发送请求以获取额外信息进行决策,其中包括对主体属性、资源属性、环境属性、角色属性的请求和对角色状态的请求;上下文处理器接到策略决策点的请求后分别向策略信息点和角色管理点(新增模块)发送相应请求;策略信息点和角色管理点(新增模块)接到请求后会向不同的实体索取所需要的信息,并将得到的信息返回给上下文处理器;上下文处理器将收集到的必要信息发送给策略决策模块;策略决策模块根据策略信息、属性信息、资源的上下文信息以及角色状态信息进行访问请求决策,并将决策结果返回给上下文处理器;上下文处理器将决策结果返回给策略执行点,以执行相应的决策结果,同时,执行相应的职责信息和更新角色信息。
由此,XACML的RBAC框架规范中的RoleEnablementAuthority以一个新模块的形式得以规范化和具体化,同时NIST-RBAC标准模型中限制模型所提出的针对角色的限制在此改进模型中得到了实现。
4改进模型的实现
4.1通过角色管理点实现静态责任分离
静态责任分离是责任分离的最简单的一种形式,即如果定义两个角色为静态的角色互斥,那么任何一个用户都不能同时被指派给这两个角色。这可以被看成是一种管理策略,是对管理员的用户角色指派操作的限制。本文以场景“‘Permit’‘administrator’‘A’to‘Set-Role-to-B’as‘employee’”来测试和分析各组件执行访问控制的效果。表1所列为相关测试用例和预期结果。
借助于XACML3.0安全策略管理规范,可以定义的访问策略如下(简化的XACML):
-<RuleRuleId="StaticSeparationofDuty"
Effect="Permit">
-<Target>
-<Subjects>A</Subjects>
-<Rolesattribute>admin</Rolesattribute>
-<Rolesstatus>open</Rolesstatus>
-<Resources>employee</Resources>
-<Actions>
-<Action>
-<ActionMatchMatchId="urn:oasis:names:tc:
xacml:1.0:function:string-equal">
<AttributeValueDataType="http://www.w3.org/2001/
XMLSchema#string">Set-Role-to-B</AttributeValue>
<ActionAttributeDesignatorDataType="http://www.
w3.org/2001/XMLSchema#string"AttributeId="urn:oasis:
names:tc:xacml:1.0:action:action-id"/>
</ActionMatch>
</Action>
</Actions>
</Target>
</Rule>
该管理策略描述了管理员A在B没有被指派角色employee的情况下可以给用户B指派角色vendor;而当B已经被指派了vendor的互斥角色employee后,A再指派给B角色vendor时会遭到拒绝。
4.2通过角色管理点实现动态责任分离
动态责任分离允许同一角色被指派给不同的用户,但它们不能同时被激活。这种访问控制方式通过对模型内角色管理点中的角色状态的转化来实现。
本文以场景'Permit''administrator''Cto'edit',documentl'”来测试和分析各组件执行访问控制的效果。表2所列为相关测试用例和预期结果。
借助于XACML3.0[10]安全策略管理规范,可以定义访问策略如下(简化的XACML):
-<RuleRuleId="DynamicSeparationofDuty"Effect="Permit">
-<Target>
-<Subjects>A</Subjects>
-<Rolesattribute>admin</Rolesattribute>
-<Rolesstatus>open</Rolesstatus>
-<Resources>Doc1</Resources>
-<Actions>
-<Action>
-<ActionMatchMatchId="urn:oasis:names:tc:
xacml:1.0:function:string-equal">
<AttributeValueDataType="http://www.w3.org/2001/
XMLSchema#string">edit</AttributeValue>
<ActionAttributeDesignatorDataType="http://www.
w3.org/2001/XMLSchema#string"AttributeId="urn:oasis:
names:tc:xacml:1.0:action:action-id"/>
</ActionMatch>
</Action>
</Actions>
</Target>
</Rule>
该管理策略描述了管理员A在角色验证成功的情况下可以对Doc1进行编辑,同时将管理员的角色状态设置为close,即其他具有管理员角色的用户无法进行相同操作。因此,当另一管理员B在A编辑Doc1的同时,申请对Doc1进行编辑遭到了拒绝。
5结语
角色访问控制模型对WEB信息安全的研究与应用有着重要的意义,而XAML的推广使得访问控制更加结构化、统一化与细粒度化。二者的结合应用为保障WEB服务安全提供了一种更为有效与规范的方法。本文通过对RBAC模型的研究,对XACML访问控制框架进行了改进,使得新模型更加适应动态的需求,为访问安全提供了更进一步的保障。然而,日益复杂化的网络环境也在不断地为保障信息安全的手段提出更高的要求,因此对于RBAC模型与XACML的应用研究也仍将不断地继续下去。
20211023_6172e0a713cd0__支持RBAC限制的XACML改进模型