使用加权搜索树的基于上下文的安全策略评估的制作方法

文档序号:6357076阅读:392来源:国知局
专利名称:使用加权搜索树的基于上下文的安全策略评估的制作方法
技术领域
本公开一般涉及分布式计算环境中的访问控制机制,具体涉及评估用于授权和权限(entilement)处理的基于上下文的策略的在计算上高效的技术。
背景技术
可扩展访问控制标记语言或XACML是结构化信息标准促进组织(OASIS)管理的用于管理访问控制策略的工业标准。该工业标准可从OASIS网站上获得。XACML提供了用于指定访问控制策略的基于XML的基于上下文的安全语言。当用于访问控制时,诸如XACML的现有开放标准格式关注于返回单个访问决定,诸如“允许”或“拒绝”。相比之下,“权限”包括返回一组允许访问的项(item)的概念。典型地,权限是一组控制规范(通过策略呈现), 其管理身份对信息、应用和系统的访问,其中用户是一种这样的身份。对权限的支持是促进更高效的访问控制模型的共同要求。在其中访问控制请求由包括关于请求本身的属性的上下文与相关环境组成的、诸如XACML的上下文安全策略中,通常通过从策略中选择这些属性的子组用于“索引”和支持来提供权限。然而,此方法受以下限制仅选择被索引的属性可以被返回作为一组权限。例如,如果资源id(资源的唯一标识符)被选择用于索引,则对允许主体(subject)访问资源的权限的请求将不返回有意义的结果。期望允许在不需要显式地索引某些属性的情况下使用诸如XACML的上下文安全策略语言来评估权限。还期望提供用于执行这种评估的在计算上高效的技术。

发明内容
一种用于使用从根节点延伸的一个或多个叶的加权索引树来评估具有一组属性的基于上下文的(例如XACML)策略的机器实现的方法。树的每个叶表示一个策略规则。下至叶的深度优先的路径表示该组属性中必须存在于对适用的规则的请求中的一个或多个属性。针对该加权索引树评估输入以产生响应。一种类型的输入是授权请求,在该情况下, 响应是授权决定(例如,允许或拒绝)。另一类型的输入是对一组权限的查询,在该情况下, 响应是一组权限。在另一实施例中,一种用于评估安全策略的装置包括处理器和保存计算机指令的计算机存储器,当该计算机指令被该处理器执行时,执行用于评估基于上下文的策略的方法,该策略具有一组属性。该方法通过识别(从策略中)一组属性值的相对频率开始。该组属性值接着被排序,并且对该组经排序的属性值中的每个分配标识符。优选地,该标识符是数值标识符(诸如唯一的整数)。使用所分配的标识符,接着产生搜索树。该搜索树的每个叶定义一个规则,并且下至叶的深度优先的路径表示该组属性中必须存在于对可使用的规则的请求中的一个或多个属性。然后针对该搜索树评估请求(诸如授权决定请求、权限查询等)。搜索树的结构使得策略评估在计算上高效。另外,当请求是权限查询时,该方法使得能够在不需要显式地索引某些属性的情况下使用基于上下文的安全策略评估权限。
根据另一方面,提供了一种用于产生在评估基于上下文的安全策略中使用的加权索引树的计算机程序产品。该计算机程序产品保存计算机程序指令,当该计算机程序指令被数据处理系统执行时,执行树产生方法。该方法包括以下步骤对策略进行正规化;在该策略中识别一组属性值的出现频率,对该组属性值排序,对所排序的属性值中的每个分配唯一的标识符;使用该唯一标识符产生正规化的规则组,该正规化的规则组中的每个规则具有与其关联的键;以及使用该键构建加权索引树。上文已经勾勒了本发明的某些更相关的特征。这些特征应被认为仅是说明性的。 通过以不同的方式或通过修改本发明来应用所公开的本发明,可以获得许多其它有益的效果,如下文将描述的。


为了对本发明及其优点有更完整的理解,现在参照与附图一起进行的以下描述, 其中图1描绘了可以实施说明性实施例的示例方面的分布式数据处理环境的示例框图;图2是可以实施说明性实施例的示例方面的数据处理系统的示例框图;图3是用于促进这里所描述的技术的策略评估管理器的高层组件的框图;图4是示出加权索引树的产生以及该树如何用于评估基于上下文的安全策略的处理流程图;图5是表示策略表的表;图6是示出如何计算图5的策略表中所示的策略属性的出现频率的表;图7是示出如何对出现频率排序、以及如何对已从图5的策略表中获得的经排序的策略属性分配数值标识符的表;图8是示出图7中所分配的数值标识符如何被用于产生一组键(key)的表;图9是对应于图8的表中所定义的该组规则以及所关联的键的加权索引树;图10是包括具有通配符属性的规则的另一策略表;图11是针对图10的表的出现频率的表;图12是示出针对图11的表的、经排序的策略属性与所关联的数值标识符的经排序的映射;图13是示出针对图12的经排序的映射的规则键的组;图14是对应于图12的表中所定义的该组规则和所关联的键的加权索引树;图15是代表性的XACML策略;图16是基于图15的XACML策略的、并与策略表结合被存储以促进对包括多个规则的请求的处理的第一数据结构;以及图17是基于图15的XACML策略的、并与策略表结合被存储以促进对包括多个规则的请求的处理的第二数据结构。
具体实施例方式现在参照附图尤其是参照图1-2,提供其中可以实施本公开的说明性实施例的数据处理环境的示例图。应该理解,图1-2仅是说明性的,并不意在对可以实施所公开的主题的方面或实施例的环境施加或隐含任何限制。可以在不偏离本发明的精神和范围的情况下对所描述的环境进行许多修改。现在参照附图,图1描绘了其中可以实施说明性实施例的方面的说明性分布式数据处理系统的图示表示。分布式数据处理系统100可以包括其中可以实施说明性实施例的方面的计算机的网络。分布式数据处理系统100包含至少一个网络102,其是用于在分布式数据处理系统100内连接在一起的各种设备与计算机之间提供通信链路的媒介。网络102 可以包括连接,如有线线路、无线通信链路或光缆。在所描述的示例中,服务器104和服务器106与存储单元108 —起连接到网络 102。此外,客户端110、112和114也连接到网络102。所述客户端110、112和114可以是例如个人计算机、网络计算机等。在所描述的示例中,服务器104向客户端110、112和114 提供数据,诸如启动文件、操作系统镜像以及应用。在所描述的示例中,客户端110、112和 114是对服务器104的客户端。分布式数据处理系统100可以包括额外的服务器、客户端和其它未示出的设备。在所描述的示例中,分布式数据处理系统100是具有网络102的因特网,其表示使用传输控制协议/因特网协议(TCP/IP)的协议组合来互相通信的网络和网关的全球集成。在因特网的核心是主节点或主机计算机之间的高速数据通信线的骨干网,由路由数据和消息的数千个商用、政府、教育和其它计算机系统组成。当然,分布式数据处理系统100 还可以被实施为包括多个不同类型的网络,诸如,例如内联网、局域网(LAN)、广域网(WAN) 等。如上所述,图1仅意在作为示例,而不作为对所公开的主题的不同实施例的结构限制, 因此,图1中所示的特定元素不应该被认为是对其中可以实施本发明的说明性实施例的环境的限制。现在参照图2,示出了其中可以实施说明性实施例的方面的示例数据处理系统的框图。数据处理系统200是诸如图1中的客户端110的计算机的示例,其中,可以布置实施用于本公开的说明性实施例的处理的计算机可用代码或指令。现在参照图2,示出了其中可以实施说明性实施例的数据处理系统的框图。数据处理系统200是诸如图1中的服务器104或客户端110的计算机的示例,其中可以布置实施用于说明性实施例的处理的计算机可用程序代码或指令。在此说明性示例中,数据处理系统200包括通信构造(fabric) 202,其提供处理器单元204、存储器206、永久存储装置208、 通信单元210、输入/输出(I/O)单元212和显示器214之间的通信。处理器单元204用于执行可以加载到存储器206中的软件的指令。取决于具体实施方式
,处理器单元204可以是一个或多个处理器的组,或者可以是多处理器核心。此外, 可以使用其中主处理器与次级处理器一起存在于单个芯片上的一个或多个异构处理器系统实施处理器单元204。作为另一说明性示例,处理器单元204可以是包含相同类型的多个处理器的对称多处理器系统。存储器206和永久存储装置208是存储设备的示例。存储设备是能够临时和/或永久地存储信息的任何硬件。在所述示例中,存储器206可以是例如随机存取存储器或任何其它合适的易失性或非易失性存储设备。永久存储装置208取决于具体实施方式
可以采用各种形式。例如,所述永久存储装置208可包括一个或多个组件或器件。例如,永久存储装置208可以是硬盘驱动器、闪存、可重写光盘、可重写磁带或它们的某些组合。永久存储装置208所使用的介质还可以是可移除的。例如,可移除硬盘驱动器可以被用于永久存储装置208。在所述示例中,通信单元210对通信提供其它数据处理系统或设备。在所述示例中,通信单元210是网络接口卡。通信单元210可以通过使用物理和无线通信链路两者或之一提供通信。输入/输出单元212允许利用可以连接到数据处理系统200的其它设备进行数据的输入和输出。例如,输入/输出单元212可以提供连接用于通过键盘和鼠标的用户输入。 此外,输入/输出单元212可以向打印机发送输出。显示器214提供将信息显示给用户的机制。用于操作系统和应用或程序的指令位于永久存储装置208上。这些指令可以被加载到存储器206中,用于被处理单元204执行。通过处理器单元204使用计算机实施的指令可以执行不同实施例的处理,所述计算机实施的指令可以位于诸如存储器206的存储器中。这些指令被称为可以被处理器单元204中的处理器读取和执行的程序代码、计算机可用程序代码或计算机可读程序代码。可以在不同物理或有形计算机可读介质(诸如存储器 206或永久存储装置208)上实施不同实施例中的程序代码。程序代码216以函数形式位于可选择性地移除的计算机可读介质218上,并可以被加载或传递到数据处理系统200上用于被处理器单元204执行。在所述示例中,程序代码216和计算机可读介质218形成计算机程序产品220。在一个示例中,计算机可读介质 218可以是有形形式,诸如,例如被插入或放置到作为永久存储装置208的一部分的驱动器或其它设备(诸如作为永久存储装置208的一部分的硬盘驱动器)中用于传递到存储设备的光盘或磁盘。在有形形式中,计算机可读介质218还可以采用永久存储装置的形式,诸如连接到数据处理系统200的硬盘驱动器、拇指驱动器(thumb drive)或闪存。计算机可读介质218的有形形式也被称为计算机可读存储介质。在某些示例中,计算机可读介质218 可以是不可移除的。替代地,可以通过至通信单元210的通信链路以及/或者通过至输入/输出单元 212的连接将程序代码216从计算机可读介质218传递至数据处理系统200。在说明性示例中,通信链路和/或连接可以是物理的或无线的。计算机可读介质还可以采取非有形介质的形式,诸如包含程序代码的通信链路或无线传输。针对数据处理系统200所示出的不同组件不意味着对可以实施不同实施例的方式提供了结构限制。可以在包括针对数据处理系统200所示出的组件之外的或对其替代的组件的数据处理系统中实施不同说明性实施例。图2中所示的其它组件可以从所示的说明性示例变化。作为一个示例,数据处理系统 200中的存储设备是可以存储数据的任何硬件装置。存储器206、永久存储装置208和计算机可读介质218是有形形式的存储设备的示例。在另一示例中,总线系统可以被用于实施通信构造202,并可以包括一个或多个总线,诸如系统总线或输入/输出总线。当然,可以使用任何合适类型的体系结构实施总线系统,其规定在附接至该总线系统的不同组件或设备之间传递数据。另外,通信单元可以包括用于传送和接收数据的一个或多个设备,诸如调制解调器或网络适配器。此外,存储器可以是例如存储器206或高速缓存(cache),如在可以存在于通信构造202中的接口和存储控制器集线器中所发现的。用于执行本发明的操作的计算机程序代码可以以一个或多个编程语言的任意组合编写,包括面向对象的编程语言(诸如JaVaTM、Smalltalk、C++等)、以及传统的过程编程语言(诸如“C”编程语言等)、或类似编程语言。程序代码可以作为独立的软件包完全在用户的计算机上执行,部分地在用户的计算机上执行,部分在用户的计算机上部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后面的情形中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者对外部计算机进行该连接(例如,使用因特网服务提供商通过因特网)。本领域的普通技术人员将理解,图1-2中的硬件可以根据实施方式而变化。在图 1-2中所描绘的硬件之外或替代其,可以使用其它内部硬件或外围设备,诸如闪存、等效的非易失性存储器或者光盘驱动器等。而且,说明性实施例的处理还可以应用于多处理器数据处理系统,并非前述的SMP系统,而不偏离所公开的主题的精神和范围。数据处理系统支持本领域公知的基于上下文的安全策略机制。一个这种机制是可扩展的访问控制标记语言或XACML。假定对XACML熟悉。XACML策略由策略组(policy set)和策略组合算法组成。策略组是策略或策略组的序列以及目标,并且策略是目标、规则组和规则组合算法。目标指定对其应用策略的请求的类型。仅在请求满足策略的目标的情况下,才针对策略规则组检查该请求。规则组是一组规则,并且规则具有目标、可选条件和效果(例如,允许或拒绝)。规则目标指定该规则是否适用于该请求。如果请求匹配了该目标以及规则的任何条件,则效果被作为决定返回。XACML规定了若干规则或策略组合算法, 包括但不限于最先适用(first-applicable)、仅一个适用(only-one-applicable)、拒绝优先(deny-overrides)以及允许优先(permit-overrides)。XACML访问控制通过利用一个或多个基于XACML的访问控制策略评估XACML请求(包含授权的主体、正被访问资源以及正被执行的动作)以及返回允许或拒绝所请求的访问的XACML响应而工作。图3示出了这里使用的已知策略评估管理器的高层组件。在于2008年6月5日提交的题为“Indexing of Security Policies (安全策略的索引)”、序列号为12/133,850 的、共用的、共同未决的申请中描述了该功能。策略管理配置300是图2的数据处理系统 200的上下文中的评估管理器302的示例实施方式。具体地,策略评估管理器302被示出在图2的数据处理系统200的存储器206内。策略评估管理器302还可以位于其它存储位置内,直到被期望使用所需要。其它存储位置包括图2的永久存储装置208。策略评估管理器 302包括多个合作的组件以提供对与安全策略相关的请求的有效评估。所述组件典型地包括索引创建器304、解析器306、编辑器308、检索器310、评估器312和规则数据库(DB) 314。 所述组件互相合作地工作,但也与其它与系统相关的组件合作地工作。虽然被示出为分离的实体,但所述组件也可以被实施为共同产品中的服务的集合,或者被以其它方式组合以获得相同的功能上的能力。索引创建器304提供基于用于词汇元素的规则的值产生键的能力。索引的键是必须包含在对适用的规则的请求中的属性值的组合。因此根据属性值组合创建该键。索引键减少了用于确定与请求相关的适用策略元素所需要的时间。策略元素是属性和值的组合。 例如,属性“主体id (subject-id) ”和关联的值“Craig”定义策略元素“主体id = Craig”。 然后,策略是一组策略元素,当其被利用关联的条件评估时可以提供单个结果。解析器306提供分析请求、规则信息和策略词汇的解析能力。解析器可以是用于翻译所使用的标记语言的同一解析器,或者可以是为额外的任务专用的。编辑器308具有创建、修改和删除规则以及策略元素的功能。编辑器308可以是典型的文本编辑器或适配于与选择用于策略元素和规则实施的数据格式一起工作的其它具有编辑能力的组件。检索器310从规则数据库或存储系统中获取评估请求所需要的规则。检索可以是针对以后评估的候选规则的列表或组。还可以检索规则用于由编辑器进行的后续处理。评估器312提供检查被依次提供来确定结果的规则的能力。如前所述,结果对适用的规则必须返回“真(true)”。规则数据库 (DB) 314包含一组规则。规则由目标部分和条件部分组成。目标部分定义规则的主体或目标。条件部分定义了对于规则为真、适用于必须与主体结合被满足的目标的准则。例如,用于薪水处理的规则可以具有“年薪”的目标,以及“少于20,000”的条件部分。索引316是通过索引创建器304的创建处理获得的一组相关的键。索引316的键表示对应策略元素的经排序的列表。策略表318是包括用于策略元素和规则标识符的条目的数据结构。数据结构中的每行当被实施为表时,包括策略和对应的规则条目。策略元素定义键。一旦已经展平了 XACML策略,例如通过序列号12/133,580中所描述的处理,则结果是一组独特(distinct)的策略元素。优选地,每个规则仅适用于一个请求。此适用性由函数(诸如“字符串等于(string-equals)”和“整数大于(integer-greater-than) ”)的组合确定。对函数仅有的限制是它们必须采用两个参数作为自变量并返回布尔(Boolean) 值。索引处理要求仅相等函数出现在策略元素的目标中。此限制确保可以执行高效的组查找,而不是XACML通常所需要的对匹配值的顺序检查。为了实现此,非相等匹配函数被与使用布尔AND运算符的任意现有条件组合地从规则的目标部分移动到规则的条件部分。因此,并根据序列号12/133,580中公开的主题,提供索引策略的方法,使得适用于给定请求的策略元素可以被快速并高效地确定。具体地,策略被简化到一组独特的规则, 其中每个规则适用于仅一个请求。为这些独特规则创建索引,其中索引的键是必须出现在对可使用的规则的请求中的属性值的组合。为了确保从索引的高效查找,不包括相等检查的所有函数被放置在规则的条件部分。此索引处理典型地允许安全策略的大组能够被更高效地评估。包含策略元素的请求被接收。该请求被处理,使得通过对用于该组策略元素的规则的索引查找分解(resolve)策略元素。然后对策略元素评估规则。说明性实施例典型地减少了必须被评估来确定适用的规则的表达的复杂性和不同形式。所描述的索引提供了确定用于给定策略的规则的适用性的更高效的机制。将以上作为背景,可以描述本公开的主题。此公开一般涉及对基于上下文的安全策略“展平(flattening)”技术(如序列号12/133,850)的“加权索引树”增强,其即使在某些策略属性未被显式地索引的情况下也促进权限处理。如将看到的,这里的技术提供了超过现有技术的若干优点。首先,策略中没有特定属性在索引重要性方面被提升到其余之上;因此,可以针对权限,查询策略中的所有属性。其次,加权索引树确保策略评估的每个步骤(不论对于授权决定还是响应于权限查询)尽可能在计算上高效。具体地,加权索引树中仅与给定请求相关的部分被访问,并且沿树向下的每个决定尽可能地排除最大量的不相关结果。使用此方法,实现了对XACML v2.0标准中的策略的权限查询。图4是示出根据这里所描述的技术的、加权索引树的产生以及如何使用该树评估基于上下文的安全策略的处理流程图。在所示的处理流程之前,安全策略已被索引(展平)为一组独特的规则,其中每个规则包含必须出现上下文中的属性值的组,用于使该规则被评估。这是序列号12/133,580中的上述技术。在步骤402中,并根据此公开,跨越整个(或几乎整个)展平的策略,计算这些属性值中的每个的相对频率。例如,要求“主体id”为 “Craig”可能在策略中出现十(10)次,以及要求“主体id”为“Fiona”可能仅出现五(5) 次。一旦计算了,属性值就被根据它们的频率排序,并且在步骤404,创建加权索引树,其中较频繁使用的属性高于较不频繁使用的属性。如将看到的,此决定树中的节点由使所述规则适用所需要的属性值的组合确定。此树被迭代地创建,依次加入用于每个规则的节点。因此,例如,规则1可能要求值主体id (subject-id) = Craig,资源id (resource-id)=资源 1 (Resource-I),并且动作 id (action-id)=读(read),而规则 2 可能要求主体 id = Craig, 资源id =资源2(ReSourCe-2),并且动作id =读。在此示例中,主体id = Craig以及动作 id=读是最频繁使用的属性,所以它们在树中被放置为高于资源1和资源2。假定“Craig” 被放置在“读”之前,则使用此方法,针对这两个规则的简化决定树可能像如下主体id = Craig —动作id =读一资源id =资源1—资源id=资源2返回到图4,接着以多个可能的方式使用加权索引树,例如响应于授权决定请求, 响应于权限查询等。因此,给定的请求(例如针对授权决定、权限查询等)被转换为键。这是步骤406。在步骤408,键被用于遍历(walk)该树。如将看到的,遍历该决定树是指以深度优先的方式搜索该树。对于授权决定,以深度优选方式搜索该树,仅当合适的节点在输入请求上下文中(如被键中的值所确定的)时才访问子节点。一旦到达了树中的叶(通过步骤408),便返回和评估合适的规则。这是第一实施例中的步骤410 (评估针对授权决定的安全策略)。在第二实施例中,关于权限查询而评估安全策略。对于这种查询,请求输入是请求上下文、以及响应于该查询而将被收集的一个或多个属性类型(例如“资源id”)。在此实施例中,步骤408包括仍然以深度优先的方式穷尽地搜索该树,如果子节点要么在输入请求中或者如果它们具有正被收集的属性类型,则访问该子节点。所收集的属性类型被保存直到到达叶节点。在到达叶节点时,必须被评估的规则以及被授权给该规则的属性值被获知,并且返回该响应(步骤410)。步骤402和404 —起包括树产生函数400。此函数可以被离线(off-line)执行, 例如,当安全策略被加载到策略管理器中时,或者其可以被动态地(“在线(on-the-fIy) ”) 执行,例如响应于授权请求、权限查询或其它请求输入的接收。此外,虽然未详细示出,但本领域的普通技术人员将理解,“策略”典型地包括在该策略被索引(展平)并接着被处理,以产生加权索引树之前被聚集到一起的多个策略组。因此,给定的加权索引树典型地包括来自多个策略组的数据,但这不是限制。在优选实施例中,给定策略符合XACML规范,但这里所描述的技术也并不限制于基于XACML的安全策略。而是,图4中所示的技术适用于任何基于上下文的安全策略实施方式。以下部分描述图4中所示的技术的几个示例,其中,策略被正规化并接着被索引为树结构。如公知的,基于XACML的策略具有词汇,即一组属性制定器 (AttributeDesignator)和属性选择器(Attribut必elector)元素,以确定输入请求的哪个部分是必须的。这些属性源中的每个在策略中具有一组具体值。为了索引该策略,如上所述,所公开的技术首先计算每个具体属性值的相对频率,优选地对其分配0 — η之间的等级。这允许相关的输入值由整数表示(这加速了执行,因为比较整数比比较字符串值在计算上更高效),以及确定检查哪些属性以获得每个点的最多的值,从而允许以最高效的形式创建比较树。作为具体的例子,图5示出了显示经正规化的策略的表500。这是图3中引用的策略表318。在此策略表的情况下,图6是示出如何计算图5的策略表中所示的策略属性值的出现频率的表600。如可看出的,属性值“动作id=查看(View)”具有最高频率(3次出现),接着是属性值“主体id = Craig”和“资源id =资源1”,分别具有第二高的频率O 次出现)。一旦计算了所述频率(这是图4中的步骤402),它们被以频率排序,并被分配数值标识符。该结果是图7中所示的表700。具体地,表700示出了如何对出现频率排序以及如何对已经从图5的策略表获得的经排序的策略属性分配数值标识符。继续上述示例, 属性值“动作id =查看”(在策略中具有最高出现频率的属性值)被分配最低值的标识符 (“0”),接着是第二频繁的属性值(被分配标识符“1”和“2”),等等。表700中的每个属性值条目被分配唯一的数值标识符(唯一整数)。使用所分配的标识符,可以接着创建加权索引树。具体地,经正规化的规则组中的每个规则(来自图5中的表500)被分配一组数值标识符作为它的键。因此,具有主体id “Craig”、资源id “资源1”以及动作id “查看”的规则l(r0001)(在表500中)被分配键
,具有主体id “Craig”、资源id “资源1” 以及动作id “编辑(Edit) ”的规则2被分配键[1,2,3],等等。图8示出了显示如何使用图7中所分配的数值标识符产生一组键的表800。然后,使用表800中定义的该组规则和所关联的键,创建加权索引数900。如可以看出的,深度优先的搜索依次产生键中的节点的每个。具体地,每个叶节点,诸如叶节点 902,表示策略(策略组)中的规则,并且从树向下深度优先的路径表示必须出现在针对适用的规则的请求中的属性。通过使用键中经排序的值(优选从最小到最大的整数),树的每个叶被“排序”,从而,当叶从根节点开始向下移动时,该整数值的序列增加。这使得能够在针对给定的进入(in-bound)请求搜索该树时获得计算效率。虽然不作为限制性,但在具体实施方式
上,加权索引树中的每个节点可以是用 Java编写的对象,其中,每个对象知道一个或多个子对象。然后使用加权索引以针对进入请求、权限查询或其它进入请求评估策略。在第一实施例中,授权决定请求被如下评估。请求首先被转换为一系列数值标识符(如利用规则本身),并接着执行对该数的深度优先搜索。例如,假定针对授权决定的请求是主体id = Craig,资源id =资源1以及动作id =查看。使用上述示例将此请求转换为数值键W,1,2]。然后遍历该树,在每个节点处确保当前数值标识符在该请求中。如果不,则不需要沿树向下继续进行。根据图9中所示的搜索树,可以看出到达的唯一叶节点是 “rOOl”,意味着其是适用于该请求的唯一规则。然后评估该规则,并以通常的方式返回授权响应(例如“允许”或“拒绝”)。在另一示例中,假定该请求包括不在该策略中的属性。在这种情况下,用于该属性的数值标识符不被加入到请求键中。因此,如果请求是主体id = Vern,资源id =资源1,以及动作id =查看,则新请求键是W,1],因为“Vern”未出现在策略中。对于权限查询,处理类似。“权限”查询典型地指以下形式的查询“返回Craig可以查看的资源id的列表”或“返回Kerry可以对资源2执行的动作id的列表”。加权索引树(如图9中所示)接着被用于计算在给定输入“部分请求”和输入“属性源”的情况下应该返回哪些具体的值。继续上述示例,用于第一个查询(Craig可以查看什么)的输入是-部分请求-主体 id = Craig-动作id=查看-属性源-资源id为了评估此权限查询,合适时,在使用该部分请求之前遍历该树。然而,当碰到包含用于该属性源的具体值的树节点时,该值被加入到组中并被跟踪用于以后的使用。还跟踪碰到的规则标识符。在图9中的树的情况下,输出部分请求是W,2],并且潜在匹配是[1, 4,5]。利用
遍历该树以聚集的结果[1]和规则“rOOl”结束。因此,响应于此具体权限查询,如果rOOl针对“允许”评估,则评估返回“资源1”。以下段落描述替代示例,其中对该规则组的另一规则。在此示例中,规则包括由通配符定义的属性值。图10示出了包括具有通配符属性的规则1002的策略表1000。在此示例中,通配符“*”是指对于适用的此规则,对动作id没有限制。换句话说,Craig可以对资源3执行任何动作。图11是针对图10的表的发生频率的表1100,图12是示出针对图11 的表的、经排序的策略属性和所关联的数值标识符的经排序的映射的表1200。图13是示出用于图12的经排序的映射的规则键组的表1300。图14是对应于图12的表中定义的规则组与所关联的键的加权索引树1400。在树1400的情况下,假定接收到权限查询“Craig 可以对资源3做什么?”。查询键是[1,2],其意味着对树的遍历到达规则r005,而沿途没有遇到任何候选响应。这意味着对此属性源的所有潜在匹配都必须被返回(也包括“全部 (ALL) ”的显式返回)。以上仅是加权索引树的代表示例,而不意味着限制所公开的技术。如前所述,可以在传统的基于XACML的处理链中实施上述技术,其优选地包括合适的请求和响应协议,以使用加权索引树处理查询。虽然不被要求,但XACML请求-响应协议可以包括包含xacml 请求对象的响应。这是因为语义是将输入请求与所返回的响应组合来创建将针对指定的效果(例如,允许)评估的请求。在响应容器中使用请求允许保留可能出现的任何布尔AND语义。此外,在权限的实施例中,应用编程接口(API)可以被用于调用权限引擎来处理该加权索引树,并且,在响应中返回一组权限。例如,XACML4J (针对Java 的XACML)可以被扩展来提供API。如上所述,由XACML指定的基于内容的安全策略典型地包括一个或多个“组合” 算法,诸如最先适用(first-applicable)、仅一个适用(only-one-applicable)、拒绝优先 (deny-overrides)以及允许优先(permit-overrides)。优选地,当组合规则(以进行评估决定或返回权限)时考虑这些组合算法。现在,描述此“规则组合”功能。因为规则本身仅指定与它们一起被包含的策略和策略组(而不是组合算法),所以在策略正规化(如前所述)期间,包含对象的层级(hierarchy)和所关联的组合算法被跟踪。接着,为了找到对请求或查询的正确结果,必须在索引树中的每个层级处采用组合算法。因此,一种方法是构建优先级队列(或等同物),其中“最深的”规则在该队列的顶部。 如这里所使用的,通过其中包含每个规则的策略组/策略对象的数量计算“最深的”。然后,处理包括在优先级队列上的迭代,利用策略组/策略对象的同一列表提取“η”个最顶部元素。然后使用最深的策略组/策略的组合算法。一旦此算法被用于确定结果,例如“允许”, 则此结果接着被放回优先级队列上,作为对原始的“η”个最顶部元素的替代。随后,对优先级队列重新排序,并开始下一次迭代。最后,在优先级队列上留下一个包含最后的评估/权限决定的项。因此,在具体示例中,假定上述索引的评估技术已经识别了三C3)个规则适用于输入请求。而且,假定策略正规化步骤导致从树中提取的以下数据规则1 —[策略组Α,策略组B,策略C]规则4 —[策略组Α,策略组B,策略C]规则5 —[策略组Α,策略D]其中组合算法是策略组A=最先适用策略组B=拒绝优先策略C=最先适用策略D=最先适用如上所述,利用最深的规则在顶部来构建优先级队列。在此示例中,规则1和4具有3的深度,规则5具有2的深度。因此,从规则1和4开始迭代。接着使用最深策略组/ 策略的组合算法,在此情况下为策略C(最先适用)。一旦该算法被用于确定结果,例如允许,则此结果被放置回该优先级队列上允许(Pernit)—[策略组Α,策略组B]如上所述,优先级队列接着被重新排序,并且迭代继续直到在优先级队列上留下单个项。概括地,为了采用组合算法,应该以保留策略的原始意图的方式组合适用于输入请求的每个规则的评估结果。例如,如以上示例所示,可以使用诸如“拒绝优先于其它结果” 或“允许优先于其它结果”(等)的算法组合决定。如果存在两个适用的规则,并且其中之一返回允许,另一个返回拒绝,则需要决定使用哪个组合算法。因此,如上所述,在正规化期间(即,当策略被展平为单组规则时),记录包括其中包含规则的策略组和/或策略标识符的经排序的列表的第一数据结构。在分离的第二数据结构中,记录为每个策略组和策略而使用的组合算法。因此,假定图15是代表性的XACML策略。图16是用于该策略的第一数据结构,图17是第二数据结构。优选地,第一表被存储在展平的规则本身中;第二表被存储在分离的数据结构中。在评估期间,当多个规则是适用的,优先级队列构造被用于对包含策略标识符的列表向回进行(work back up),优选地从原始策略的底部至顶部。对于曾经是同一策略组的一部分的两个规则,原始策略组的组合算法被用于分解最终结果。优选地,此组合技术从“最深的”规则开始,向回进行,并组合中间结果。关于图15中所示的XACML策略,如果规则1、规则3和规则4全适用于给定请求, 则此技术首先组合规则3和规则4,因为它们在同一策略中;在策略表中查找算法,使用“最先适用”组合算法。然后,该技术使用根策略组(“拒绝优先”)的算法将此组合的结果与评估规则1的结果组合,以达成最后的决定。如上所述,在代表性的实施方式中,该技术使用优先级队列、所描述的数据结构以及比较器功能,其将“最深的”的规则移动到用于评估的队列的顶部。如此,规则组合算法在评估的每一步仅需要检查队列的顶部。不作为限制,如上所述,可以在软件中实施策略索引(包括属性值频率计算、排序和整数分配),加权树产生以及规则组合功能,作为一个或多个专用或“特定”机器。策略评估可以与加权树(数据结构)一起被在专用或“特定”机器中实施,诸如权限服务器。传统识别管理工具和系统,诸如IBM Tivoli 安全策略管理器,以及集成解决控制台可以被适配用于此目的,或者可以以任何其它方便的方式实施该技术。所描绘的不同实施例中的框图示出了装置、方法和计算机产品的某些可能实施方式的体系结构、功能和操作。因此,流程图或框图中的每个块可以表示代码的模块、片段或部分,其包括一个或多个可执行的指令用于实施所指定的功能。在某些可选实施方式中,块中示出的功能可以不以图中示出的顺序执行。例如,在某些情况下,取决于所涉及的功能, 顺序示出的两个块可以被几乎同时执行,或者所述块有时可以被相反顺序地执行。所公开的主题可以采取完全硬件实施例、完全软件实施例或包含硬件和软件元素两者的实施例的形式。在优选实施例中,以软件实施本发明,其包括但不限制于固件、常驻软件、微代码等。所公开的主题可以采取计算机程序产品的形式,其可以从提供程序代码的计算机可用或计算机可读的介质中取得,用于由计算机或任何指令执行系统使用或与它们一起使用。对于此说明书的目的,计算机可用或计算机可读介质可以是可以包含或存储用于被指令执行系统、装置或设备使用或与它们一起使用的任何有形装置。该介质是有形的,并且其可以是电、磁、光、电磁、红外或半导体系统(装置或设备)。计算机可读介质的示例包括半导体或固态存储器、磁带、可移除计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、坚固磁盘或光盘。光盘的当前示例包括CD-ROM、CD-R/W和 DVD。适合于存储和/或执行程序代码的数据处理系统将包括通过系统总线直接或间接耦接到存储器元件的至少一个处理器。存储器元件可以包括在程序代码的真实执行期间使用的本地存储器、批量存储器以及提供至少某些程序代码的临时存储以减少执行期间必须从批量存储器中检索代码的次数的高速缓存存储器。输入/输出或I/O设备(包括但不限制于键盘、显示器、指针设备等)可以直接或者通过插入I/O控制器而耦接到系统。网络适配器也可以耦接到该系统,以使得数据处理系统能够变得通过插入私有或公共网络而耦接到其它数据处理系统或者远程打印机或存储设备。调制解调器、线缆调制解调器和以太网卡仅是当前可用的网络适配器的类型中的几个。已经为说明性和说明性的目的呈现了所公开的主题的描述,但其并不意在穷举, 也不被限制于本发明所公开的形式。对本领域的普通技术人员而言,许多修改和改变将是显然的。实施例被选择和描述来最好地说明本发明的原理和实际应用,以及使得本领域的其它技术人员能够理解本发明,因为具有各种修改的各种实施例适合于所构思的特定应用。如所述,可以以各种服务器侧的体系结构或者与其一起实施这里描述的技术,该体系结构包括简单的η层(n-tier)体系结构、网站入口(web portal)、联合系统等。实施所公开的技术的访问控制机制可以被实施为服务或独立的机器。
产生和评估加权索引树的技术可以应用到任何基于上下文的安全策略,而不仅仅是基于XACML的技术。基于上下文的安全策略的其它示例包括可扩展权限标记语言(XrML) 以及企业隐私授权语言(EPAL)。在所描述的实施例中,每个具体的属性值被转换为唯一的整数,从而该树可以被使用这些整数值创建和索引。虽然此方法是优选的,但并不必要,因为存在创建索引树的其它方法。例如,可选实施方式可以选择对每种类型保持原始属性值,并使用原始的相等函数 (诸如比较两个字符串,或比较两个电子邮箱地址)。此外,若需要,则可以仅使用策略中的属性值组的一部分创建索引树。此外,附图中示出的加权索引树仅用于说明性的目的;也可以使用其它类型的数据结构和定向。因此,可以利用其它基于节点的可搜索的结构实施搜索“树”,包括链接的对象、列表或数据阵列。在产生索引树之前也可以使用用于将标识符分配给属性值的其它技术。它们包括例如在有关请求而不是策略中的属性值的相对频率的策略评估期间产生矩阵,并且基于所获取的频率矩阵周期性地重计算该树。可以利用任何请求-响应协议或利用不是上述基于XACML的版本的其它API机制实施策略评估。已经描述了本发明,所附的是权利要求。
权利要求
1.一种用于评估基于上下文的策略的方法,所述策略具有一组属性,所述方法包括 识别一组属性值的相对频率;对该组属性值排序;对经排序的属性值中的每个分配标识符;使用分配给所述经排序的属性值的标识符,产生搜索树,所述搜索树的每个叶定义规则,并且其中,下至所述叶的深度优先的路径表示该组属性中的必须出现在对适用的规则的请求中的一个或多个属性;以及针对所述搜索树评估请求,以产生响应。
2.如权利要求1所述的方法,其中,所述请求是授权请求,并且,所述响应是允许或拒绝授权决定。
3.如权利要求2所述的方法,其中,评估所述授权请求的步骤包括 将所述授权请求转换为一组标识符;以及使用与所述授权请求关联的该组标识符,执行所述搜索树的深度优先搜索。
4.如权利要求1所述的方法,其中,所述请求是权限查询,并且,所述响应是一组权限。
5.如权利要求4所述的方法,其中,评估所述权限查询的步骤包括 将所述权限查询转换为一组标识符;使用与所述权限查询关联的该组标识符,执行所述搜索树的深度优先搜索。
6.如权利要求1所述的方法,其中,所述标识符是数值标识符。
7.如权利要求1所述的方法,其中,在标记语言中指定上下文策略。
8.如权利要求7所述的方法,其中,所述标记语言是XACML。
9.如权利要求8所述的方法,其中,所述评估步骤包括采用XACML组合算法。
10.一种用于评估基于XACML的策略的方法,所述策略具有一组属性,所述方法包括 产生具有从根延伸的一个或多个叶的加权索引树,所述树的每个叶表示表示策略规则,其中,下至所述叶的深度优先的路径表示该组属性中的必须出现在对适用的规则的请求中的一个或多个属性;以及针对所述加权索引树评估请求,以产生响应。
11.如权利要求10所述的方法,其中,所述请求是授权请求,并且,所述响应是允许或拒绝授权决定。
12.如权利要求11所述的方法,其中,评估所述授权请求的步骤包括 将所述授权请求转换为一组数值标识符;以及使用与所述授权请求关联的该组数值标识符,执行所述搜索树的深度优先搜索。
13.如权利要求10所述的方法,其中,所述请求是权限查询,并且,所述响应是一组权限。
14.如权利要求13所述的方法,其中,评估所述权限查询的步骤包括 将所述权限查询转换为一组数值标识符;使用与所述权限查询关联的该组数值标识符,执行所述搜索树的深度优先搜索。
15.一种装置,包括 处理器;以及计算机存储器,其保存计算机指令,当所述计算机指令被所述处理器执行时,执行包括以下步骤的方法产生具有从根延伸的一个或多个叶的加权索引树,所述树的每个叶表示策略规则,其中,下至所述叶的深度优先的路径表示该组属性中的必须出现在对适用的规则的请求中的一个或多个属性;以及针对所述加权索引树评估请求,以产生响应。
16.如权利要求15所述的装置,其中,所述请求是授权请求,并且,所述响应是允许或拒绝授权决定。
17.如权利要求16所述的装置,其中,评估所述授权请求的步骤包括 将所述授权请求转换为一组数值标识符;以及使用与所述授权请求关联的该组数值标识符,执行所述搜索树的深度优先搜索。
18.如权利要求15所述的装置,其中,所述请求是权限查询,并且,所述响应是一组权限。
19.如权利要求18所述的方法,其中,评估所述权限查询的步骤包括 将所述权限查询转换为一组数值标识符;使用与所述权限查询关联的该组数值标识符,执行所述搜索树的深度优先搜索。
20.一种用于产生在评估策略中使用的搜索树的数据处理系统,包括 用于正规化所述策略的单元;用于识别一组属性值在所述策略中的相对出现频率的单元; 用于对该组属性值排序的单元;用于对经排序的属性值中的每个分配唯一标识符的单元;用于使用分配给所述经排序的属性值的唯一标识符产生经正规化的规则组的单元,所述经正规化的规则组中的每个规则具有与其关联的键;以及用于使用所述键创建经排序的深度优先的搜索树的单元。
21.如权利要求20所述的数据处理系统,其中,通过将词汇应用到所述策略而正规化所述策略。
22.如权利要求20所述的数据处理系统,其中,所述策略是基于XACML的安全策略。
23.一种访问控制系统,包括基于上下文的安全策略,其被存储在计算机存储器中;策略评估机制,用于产生具有各自表示策略规则的一个或多个叶的加权索引树,所述策略评估机制响应于请求的接收,针对所述加权索引树执行深度优先的搜索,以返回响应; 以及访问控制机制,其使用所述响应,使得能够进行访问控制操作。
全文摘要
公开了使用加权搜索树的基于上下文的安全策略评估。提供了一种用于使用具有从根节点延伸的一个或多个叶的加权索引树评估具有一组属性的基于上下文(例如XACML)的策略的方法、装置和计算机程序产品。该树的每个叶表示策略规则。下至叶的深度优先的路径表示该组属性中必须出现在对适用的规则的请求中的一个或多个属性。针对该加权索引树评估输入,以产生响应。一种类型的输入是授权请求,在该情况中,响应是授权决定(例如,允许或拒绝)。另一类型的输入是对一组权限的查询,在该情况中,响应是一组权限。
文档编号G06F17/30GK102207955SQ201110077968
公开日2011年10月5日 申请日期2011年3月30日 优先权日2010年3月30日
发明者克雷格·R·W·福斯特 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1