详细描述
示例安全环境
图1是示出其中可以实现示例安全方案100的示例一般环境的框图。安全方案100表示进行保护的集成方法。如图所示,安全方案100包括多个安全概念:安全令牌100(A)、安全策略100(B)、以及求值引擎100(C)。一般,安全令牌100(A)、安全策略100(B)共同提供对求值引擎100(C)的输入。求值引擎100(C)接受输入,并产生指示应许可还是拒绝对某一资源的访问的授权输出。
在所述实现中,安全方案100可由一个或多个设备102覆盖和/或与其集成,这些设备由硬件、软件、固件、其某种组合等组成。如图所示,“d”个设备在一个或多个网络104上互连,“d”是某一整数。更具体地,设备102(1)、设备102(2)、设备102(3)...设备102(d)能够经由网络104通信。
每一设备102可以是能够实现安全方案100的至少一部分的任何设备。这样的设备的示例包括但不限于:计算机(例如,客户机计算机、服务器计算机、个人计算机、工作站、台式机、膝上型计算机、掌上型计算机等)、游戏机(例如,控制台、便携式游戏设备等)、机顶盒、电视机、消费电子产品(例如,DVD播放器/记录器、摄录像一体机、数码录像机(DVR)等)、个人数字助理(PDA)、移动电话、便携式媒体播放器、其某种组合等。一个示例电子设备在以下具体参考图4描述。
网络104可由链接在一起和/或覆盖在彼此之上的任何一个或多个网络形成。网络104的示例包括但不限于:因特网、电话网络、以太网、局域网(LAN)、广域网(WAN)、有线电视网络、光纤网络、数字用户线(DSL)网络、蜂窝网络、Wi-
网络、
网络、虚拟专用网(VPN)、其某种组合等。网络104可包括多个域、一个或多个网格网络等。这些网络或网络组合中的每一个可根据任何联网标准操作。
如图所示,设备102(1)对应于正与之交互的用户106。设备102(2)对应于正在其上执行的服务108。设备102(3)与资源110相关联。资源110可以是设备102(3)的一部分,或与设备102(3)分开。
用户106、服务108以及诸如任何给定设备102等机器形成非穷举的示例实体列表。实体随时可能希望访问资源110。安全方案100确保被正确认证和授权的实体被许可访问资源110,而阻止其他实体访问资源110。
图2是示出具有两个设备102(A)和102(B)以及多个示例安全相关组件的示例安全环境200的框图。安全环境200还包括授权机构202,诸如安全令牌服务(STS)授权机构。设备102(A)对应于实体208。设备102(B)与资源110相关联。尽管安全方案100可在更复杂的环境中实现,但使用该相对简单的两个设备的安全环境200来描述示例安全相关组件。
如图所示,设备102(A)包括两个安全相关组件:安全令牌204和应用程序210。安全令牌204包括一个或多个断言206。设备102(B)包括五个安全相关组件:授权上下文212、资源保卫214、审计日志216、授权引擎218和安全策略220。安全策略220包括信任和授权策略222、授权查询表224和审计策略226。
每一设备102可被不同地配置,且仍能够实现安全方案100的全部或一部分。例如,设备102(A)可具有多个安全令牌204和/或应用程序210。作为另一示例,设备102(B)可不包括审计日志216或审计策略226。其它配置也是可能的。
在所述实现中,授权机构202向实体208发放具有断言206的安全令牌204。断言206在以下描述,包括在题为“安全策略断言语言示例特征”一节中。实体208从而与安全令牌204相关联。在操作中,实体208希望依靠安全令牌204使用应用程序210来访问资源110。
资源保卫214接收访问资源110的请求,并有效地管理与设备102(B)的其他安全相关组件的认证和授权过程。如其名所指示,信任和授权策略222包括针对在安全环境200内信任实体和授权动作的策略。信任和授权策略222可例如包括安全策略断言(未在图2明确示出)。授权查询表224将诸如访问请求等所请求的动作映射到适当的授权查询。审计策略226描绘与在安全环境200中实现安全方案100有关的审计责任和审计任务。
授权上下文212从安全令牌204收集断言206,它用于认证进行请求的实体,授权上下文212还从信任和授权策略222收集安全策略断言。这些收集的断言在授权上下文212中形成断言上下文。因此,授权上下文212可包括除各种断言以外的其他信息。
来自授权上下文212的断言上下文和来自授权查询表224的授权查询被提供给授权引擎218。使用断言上下文和授权查询,授权引擎218作出授权决策。资源保卫214基于授权决策而响应访问请求。审计日志216包含审计信息,诸如所请求的资源110的标识和/或由授权引擎218执行的算法求值逻辑。
图3是示出其中在安全相关组件之间交换示例安全相关数据的示例安全环境200的框图。交换安全相关数据以支持示例访问请求操作。在此示例访问请求操作中,实体208希望使用应用程序210访问资源110,并用安全令牌204指示其这样做的授权。因此,应用程序210向资源保卫214发送访问请求*。在图3的该描述中,星号(即“*”)指示所述安全相关数据在图3中明确示出。
在所述实现中,实体208用令牌*——安全令牌204向资源保卫214认证*它自己。资源保卫214将该令牌断言*转发到授权上下文212。这些令牌断言是安全令牌204的断言206(图2)。安全策略220向资源保卫214提供授权查询表*。授权查询表是从授权查询表模块224得到的。发送到资源保卫214的授权查询表可被限于与当前访问请求直接相关的一个或多个部分。
策略断言是由安全策略220从信任和授权策略222提取的。策略断言可包括信任相关断言和授权相关断言两者。安全策略220将策略断言*转发到授权上下文212。授权上下文212将令牌断言和策略断言组合成断言上下文。如由带圈的“A”所示,从授权上下文212向授权引擎218提供断言上下文*。
根据授权查询表查明授权查询。资源保卫214向授权引擎218提供授权查询(授权查询*)。授权引擎218在求值算法中使用授权查询和断言上下文来产生授权决策。授权决策(授权决策*)被返回给资源保卫214。实体208是否被资源保卫214准许访问*资源110取决于该授权决策。如果授权决策是肯定的,则访问被准许。另一方面,如果由授权引擎218发出的授权决策是否定的,则资源保卫214不准许实体208访问资源110。
授权过程还可使用补充授权过程的语义来审计。审计可能需要监视授权过程和/或存储如授权引擎218逻辑地执行的求值算法等任何中间和/或最终产品。为此,安全策略220向授权引擎218提供来自审计策略226的审计策略*。至少当请求审计时,可从授权引擎218向审计日志216转发含有审计信息的审计记录*。或者,审计信息可经由资源保卫214例如作为授权决策的一部分或单独地路由到审计日志216。
图4是可用于本文所述的安全相关实现的示例设备102的框图。多个设备102能够跨一个或多个网络104通信。如图所示,两个设备102(A/B)和102(d)能够经由网络104参与通信交换。尽管具体示出两个设备102,但是也可以取决于实现利用一个或多于两个设备102。
一般而言,设备102可标识任何计算机或能够进行处理的设备,诸如客户机或服务器设备;工作站或其他通用计算机设备;PDA;移动电话;游戏平台;娱乐设备;以上参考图1列出的设备之一;其某种组合等。如图所示,设备102包括一个或多个输入/输出(I/O)接口404、至少一个处理器406以及一个或多个介质408。介质408包含处理器可执行指令410。
在所述设备102的实现中,I/O接口404可包括(i)用于跨网络104通信的网络接口,(ii)用于在显示屏上显示信息的显示设备接口,(iii)一个或多个人机接口等。(i)网络接口的示例包括网卡、调制解调器、一个或多个端口等。(ii)显示设备接口的示例包括图形驱动器、显卡、屏幕或监视器的硬件或软件驱动器等。打印设备接口可类似地作为I/O接口404的一部分被包括。(iii)人机接口的示例包括那些以有线或无线方式与人机接口设备402(例如,键盘、遥控器、鼠标或其他图形定点设备等)通信的接口。
通常,处理器406能够执行、运行、和/或以其它方式实现诸如处理器可执行指令410等处理器可执行指令。介质408由一个或多个处理器可访问介质组成。换言之,介质408可包括可由处理器406执行以由设备102实现功能的执行的处理器可执行指令410。
因此,安全相关实现的实行可以在处理器可执行指令的通用上下文中描述。一般而言,处理器可执行指令包括例程、程序、应用程序、代码、模块、协议、对象、组件、元数据及其定义、数据结构、应用程序编程接口(API)、模式等,它们执行和/或完成特定的任务,和/或实现特定的抽象数据类型。处理器可执行指令可以位于单独的存储介质中,由不同的处理器执行,和/或通过各种传输介质传播或存在于各种传输介质上。
处理器406可以使用任何适用的能进行处理的技术来实现。介质408可以是作为设备102的一部分被包括的和/或能被设备102访问的任何可用介质。其包括易失性和非易失性介质、可移动和不可移动介质以及存储和传输介质(例如,无线或有线通信信道)。例如,介质408可以包括用于处理器可执行指令410的长期大容量存储的磁盘/闪存/光介质阵列,用于当前正在执行的指令的短期存储的随机存取存储器(RAM),用于传输通信(例如,安全相关数据)的网络104上的链路等。
如具体示出的,介质408至少包括处理器可执行指令410。一般而言,处理器可执行指令410在由处理器406执行时使设备102能执行本文所述的各种功能,包括在各个流程图中所示的那些动作。仅作为示例,处理器可执行指令410可包括安全令牌204、其断言206的至少其中之一、授权上下文模块212、资源保卫214、审计日志216、授权引擎218、安全策略220(例如,信任和授权策略222、授权查询表224和/或审计策略226等),其某种组合等。尽管未在图4中明确示出,但处理器可执行指令410还可包括应用程序210和/或资源110。
安全策略断言语言示例特征
本节描述了安全策略断言语言(SecPAL)的实现的示例特征。本节的SecPAL实现是以相对非正式的方式描述的,且仅作为示例。它具有解决创建端对端解决方案时所涉及的大量安全策略和安全令牌职责的能力。作为示例而非限制,这些安全策略和安全令牌职责包括:描述显式信任关系;表达安全令牌发放策略;提供包含身份、属性、能力和/或委托策略的安全令牌;表达资源授权和委托策略等。
在所述实现中,SecPAL是用于以灵活且易处理的方式表达安全措施的声明性的基于逻辑的语言。它可以是综合的,且它可提供用于表达信任关系、授权策略、委托策略、身份和属性断言、能力断言、撤销、审计要求等的统一机制。该统一性在使安全方案可理解且可分析方面提供切实的好处。该统一机制还通过允许避免、至少显著减少不同安全技术之间的语义转换和调停的需求而提高安全保证。
SecPAL实现可包括以下示例特征的任何一个:[1]SecPAL可相对容易地理解。它可使用允许其断言作为英语语句阅读的定义句法。而且,其语法可以是限制性的,使其仅要求用户理解少数具有清楚定义的语义的主语-动词-宾语(例如,主语-动词短语)构造。最后,用于基于断言的集合对可推断事实求值的算法可依赖于少数相对简单的规则。
SecPAL可在其实现中利用行业标准基础架构以便于其在现有***中的采用和集成。例如,可使用可扩展标记语言(XML)句法,这是来自形式模型的直接映射。这允许使用标准语法分析器和句法正确性确认工具。它也允许对完整性、来源证明和机密性使用W3C XML数字签名和加密标准。
SecPAL可通过支持分布式策略授权和合成而允许分布式策略管理。这允许灵活地适应不同的操作模型管控,其中基于所分派的管理责任来创作策略或策略的部分。使用标准方法来数字地签署和加密策略对象使其能够安全分发。[4]SecPAL允许高效且安全的求值。对输入的简单的句法检查足以确保求值将会终止并产生正确的答案。
SecPAL可提供用于支持所要求的策略、授权决策、审计和用于身份管理的公钥基础架构(PKI)的访问控制要求的完整解决方案。相反,大多数其他方法仅能关注和解决这些安全问题范围内的一个子集。[6]SecPAL出于多个目的可以具有充分的表达力,这些目的包括但不限于:处理网格环境和其他类型的分布式***的安全问题。以维护语言语义和求值性质同时允许适应特定***的需求的方式来启用可扩展性。
图5是示出用于一般安全方案的示例断言格式500的框图。在本文其他部分描述的实现中使用的安全方案断言可以不同于示例断言格式500。然而,断言格式500是安全方案断言的一个示例格式的基本图示,且它提供理解一般安全方案的各个方面的所述示例实现的基础。
如在断言格式500的最上行所示,概况层的示例断言包括:主体(principal)部分502、说(say)部分504以及主张(claim)部分506。文字上,概括层的断言格式500可被表示为:主体说主张。
在断言格式500的下一行,主张部分506被分成示例组成部分。因此,示例主张部分506包括:事实(fact)部分508,如果(if)部分510,“n”个条件事实1...n部分508(1...n)以及c部分512。下标“n”表示某一整数值。如图例524所示,c部分512表示约束部分。尽管仅示出单个约束,但c部分512实际上可表示多个约束(例如,c1,...,cm)。如果部分510右侧的条件事实部分508(1...n)和约束512(1...m)的集合可被称为前提。
文字上,主张部分506可表示为:事实如果事实1,...事实n,c。因此,整个断言格式500在文字上可如下表示:主体说如果事实1,...事实n,c,则事实。然而,断言可被简化为:主体说事实。在断言的这一缩写的三部分形式中,略去了以如果部分510开始并延及c部分512的条件部分。
每一事实部分508还可被细分成其各个组成部分。示例组成部分有:e部分514和动词短语部分516。如图例524所示,e部分514表示表达式部分。文字上,事实部分508可表示为:e动词短语。
每一e即表达式部分514可采用两个示例选择之一。这两个示例表达式选择是:常量514(c)和变量514(v)。主体可归入常量514(c)和/或变量514(v)。
每一动词短语部分516也可采用三个示例选择之一。这三个示例动词短语选择是:谓词部分518继之以一个或多个e1...n部分514(1...n)、能够断言(can assert)部分520继之以事实部分508、以及别名部分522继之以表达式部分514。文字上,这三个动词短语选择分别可被表示为:谓词e1...en、能够断言事实、以及别名e。整数“n”可对事实508(1...n)和表达式514(1...n)取不同的值。
一般,SecPAL语句是安全主体作出的断言形式的。安全主体一般由密钥标识,以使其可跨***边界认证。在其最简单的形式中,断言陈述,主体相信事实是有效的(例如,如由包括事实部分508的主张506所表示)。他们也陈述,如果一个或多个其他事实有效且满足某组条件,则一事实有效(例如,如由从事实部分508延及如果部分510以及条件事实部分508(1...n)到c部分512的主张506所表示)。也可能存在没有任何约束512的条件事实508(1...n)和/或没有任何条件事实508(1...n)的约束512。
在所述实现中,事实是关于主体的陈述。在本节中此处描述了四种示例类型的事实陈述。首先,事实可陈述,主体具有用“动作动词”对资源行使动作的权利。示例动作动词包括但不限于:调用、发送、读取、列表、执行、写入、修改、追加、删除、安装、拥有等。资源可由统一资源指示符(URI)或任何其他方法标识。
其次,事实可使用“拥有”动词来表达主体标识符与一个或多个属性之间的绑定。示例属性包括但不限于:电子邮件名、通用名、组名、角色头衔、帐户名、域名服务器/服务(DNS)名、网际协议(IP)地址、设备名、应用程序名、组织名、服务名、帐户标识/标识符(ID)等。第三种示例类型的事实是可使用“别名”动词定义两个主体标识符来表示同一主体。
“限定词”或事实限定词可作为以上三种事实类型的任一种的一部分而被包括。限定词使得断言者能指示如果认为事实有效则它相信应成立的环境参数(例如,时间、主***置等)。这样的陈述可基于这些限定词的值在断言者和依赖方的有效性检查之间清楚地分开。
第四种示例类型的事实由“能够断言”动词定义。这种“能够断言”动词提供用于表达信任关系和委托的灵活且强大的机制。例如,它允许一个主体(A)陈述其相信第二主体(B)断言的某些类型的事实的意愿。例如,给定断言“A说B能够断言事实()”以及“B说事实()”,可得到A相信事实()有效的结论从而可推断“A说事实()”。
这样的信任和委托断言可以是(i)无边界的且是传递的以许可下游委托,或者(ii)有边界的以阻止下游委托。尽管可对“能够断言”类型事实应用限定词,但对这些“能够断言”类型事实省略对限定词的支持可显著地简化给定安全方案的语义和求值安全性质。
在所述实现中,可陈述具体的事实,或可使用变量写出策略表达式。变量是类型化的,且可以是无限制的(例如,允许匹配正确类型的任何具体值)或有限制的(例如,要求基于指定的模式匹配具体值的子集)。
安全授权决策基于针对来自适用的安全策略(例如,安全策略220)和安全令牌(例如,一个或多个安全令牌204)的断言集合(例如,断言上下文)的授权查询的求值算法(例如,可在授权引擎218处进行的那些算法)。授权查询是组合事实和/或条件的逻辑表达式,其可能会变得相当复杂。这些逻辑表达式例如包括对事实的与、或和/或非逻辑运算,带有或不带有伴随的条件和/或约束。
该对授权查询的方法提供用于定义在对给定动作授权之前什么是必须已知且有效的灵活机制。查询模板(例如来自授权查询表224)形成总的安全方案的一部分,且允许对不同类型的访问请求和其他操作/动作声明性地陈述适当的授权查询。
安全授权查询的示例实现
现有的安全策略语言遵循两种方法之一。某些阻止以任何方式在任何时间使用否定。该方法的确减少了可能因否定而引起的伴随的不一致性和不确定性。然而,它由于呈现了众多太难以处理的安全情形且某些安全情形根本无法处理而也有局限性。另一方法对否定的使用没有施加限制。尽管该方法更为灵活,但它呈现了建立难解甚至非确定性的安全策略的可能性。
相比,所述实现创建了具有多层的安全方案。在一分支安全方案实现中,例如有两层。第一层禁止使用否定。这可例如使用对句法的确认来实施。第二层允许使用否定。该分支安全方案将确保安全断言易处理且可确定的安全性和确定性与处理排他安全规则的灵活性组合在一起。
图6是示出具有第一层和第二层的示例分支安全方案600的框图。如图所示,第一层包括断言层602,第二层包括查询层604。断言层602包括多个断言606和句法确认器614。查询层604包括具有多个部分的示例授权查询616。这多个部分的示例包括但不限于:所断言的事实608以及逻辑运算符610和612。
在所述实现中,断言层602以断言606填充。断言606可以是断言层处任何类型的声明性安全陈述。断言606的示例包括但不限于:令牌断言和策略断言。(这两个断言类型在图7中分开且明确地示出。)在安全断言606内不允许否定。句法确认器614分析每一断言606以检查是否存在否定。如果在给定断言606内存在否定,则拒绝或不允许给定断言606。
查询层604以诸如示例授权查询616等授权查询填充。查询层606的授权查询被允许包括否定,诸如非运算符612。授权查询可按照任何方式结构化。尽管未在图6中明确示出,但授权查询一般可包括一个或多个逻辑约束。
在示例授权查询616中,查询被结构化成布尔逻辑运算。这样的布尔逻辑运算可包括任何数目的所断言的事实608、任何数目的逻辑运算符等。这些所断言的事实、逻辑运算符等可按照任何方式组合。示例逻辑运算符包括但不限于:与、或、非等。如图所示,示例授权查询616包括:三个所断言的事实608、两个与运算符610、一个非运算符612。
所断言的事实608是否为真取决于是否可推断出有效的匹配断言606。当该匹配判断过程完成之后,即对得到的逻辑布尔运算求值。在示例授权查询616的情况中,在应用与运算符610之前,对最右端的所断言的事实608的真/假判定应用非运算符612。如果整个布尔运算求值为真,则授权决策是肯定的。如果布尔运算的总的求值为假,则授权决策是否定的。
断言606和授权查询(例如,示例授权查询616)之间的示例相互关系以下在图7-10的描述中呈现。响应于请求来查明授权查询,该请求可包括一个或多个断言606或以其他方式与这些断言相关联。然后结合包括断言606在内的总的断言上下文对授权查询求值。断言上下文一般包括令牌断言和策略断言。
图7是示出示例授权查询查明和示例授权查询求值的一般框图700。框图700包括来自图2和3的多个安全相关组件。如图所示,它包括授权上下文212、资源保卫214、授权引擎218以及安全策略220。安全策略220包含授权查询表224。授权引擎218包括求值算法708。
在所述实现中,授权上下文212包括断言上下文702。断言上下文702是断言606的集合。具体地,断言上下文702包括令牌断言606T和策略断言606P。令牌断言606T从安全令牌(例如,图2和3的安全令牌204)得到。安全令牌可作为资源访问请求的一部分和/或随之一起传递。策略断言606P从信任和授权策略(例如,安全策略220(图2)的信任和授权策略222模块)得到。
断言上下文702被转发到资源保卫214。向资源保卫214呈现请求704。请求704是访问某一资源的请求。资源保卫214将请求转换成操作。该操作被提供给授权查询表224。授权查询表224将资源专用操作映射到授权查询。在一示例实现中,每一操作与单个授权查询相关联。响应于所提供的操作,安全策略220查明相关联的授权查询706,并将授权查询706返回到资源保卫214。使用授权查询表224查明授权查询706在本文中以下具体参考图8进一步描述。
因此,资源保卫214包括断言上下文702和授权查询706两者。资源保卫214将断言上下文702和授权查询706转发到授权引擎218的求值算法708。求值算法708包括能够结合断言上下文702对授权查询706求值的逻辑。该逻辑可用硬件、软件、固件、其某种组合等实现。
因此,断言上下文702在求值算法708中应用于授权查询706。在逻辑分析之后,求值算法708产生授权决策710。结合断言上下文702对授权查询706求值在本文中以下具体参考图9进一步描述。
一般而言,具有如本文所述的特征的安全语言使得复杂的访问控制准则能以声明性的方式编写起来相对简单且理解起来相对简单。它与展示基于输入策略和经认证的请求者数据推断的有效事实集的任何授权算法兼容。如本文中进一步描述的,它基于结合断言上下文与授权决策算法组合的授权查询的概念。
在所述实现中,一般,授权查询包括所断言的事实集以及约束。所断言的事实是“A说事实”形式的。它们表达可以(例如,从断言上下文)推断匹配的有效断言的要求。如果这一匹配的有效断言已知,则所断言的事实得到满足,且求值为布尔值真;否则,它求值为假。(在某些实现中,事实的断言者可基于求值上下文隐含地已知。在这些情况中,它可被略去。)约束是返回布尔值的表达式。它可包括在所断言的事实以及对环境值(例如,时间、位置等)的引用中使用的变量。约束一般用于表达变量等同性和不等同性。
每一查询中存在至少一个所断言的事实。如果存在多个所断言的事实,则它们可使用诸如与、或和非等逻辑运算符组合。可任选的约束与所断言的事实进行逻辑与。
该方法的结果是基本访问控制策略可按照关于每一主体被授权的访问的肯定陈述来写出,而不顾及较高层的结构要求。因此,在多主体策略中,可编写陈述每一主体对资源应潜在具有何种权限的每一策略。这样的安全策略就添加新策略陈述不会移除任何现有的访问权限而言是单调的。而且,可编写指示主体对资源集具有何种权限的肯定访问策略而不必顾虑潜在的冲突或不一致性。授权查询提供用于组合这些访问控制规则的较高层语义。
例如,如果为对“Foo”准许读访问而要求(i)用户具有电子邮件地址“fabrikam.com”,以及(ii)应用程序具有代码摘要值“ABC”,则访问控制规则可写为如下:
A说如果p拥有r{(电子邮件名,*@fabrikam.com)}则p读Foo
A说如果p拥有r{摘要,ABC}则p读Foo
为确保用户和应用程序均是经认证的请求者,一个示例授权查询为:
A说v1读Foo与A说v1拥有r{(电子邮件名,*)}与A说v2读Foo与A说v2拥有{(摘要,*)}
类似地,为要求具有电子邮件地址“fabrikam.com”的两个授权的主体请求访问“Foo”,可写出以下安全策略:
A说如果p拥有r{(电子邮件名,*@fabrikam.com)}则p读Foo,
且它可与以下授权查询组合:
A说p1读Foo与A说p2读Foo与(p1!=p2)。
在以上授权查询中,指示“p1”变量不等于“p2”变量的部分是约束。
拒绝或排除可使用该方法来适当处理。例如,如果给定组A的成员能读访问Foo,且组B的成员能读访问Bar,但不允许同时访问。可用带有如下的两个策略断言的安全策略启用所需访问:
A说如果p拥有r{组,A}则p读Foo
A说如果p拥有r{组,B}则p读Bar。
然后可使用以下授权查询实施排除:
(A说v读Foo或A说v读BAR)与非(A说v读Foo与A说v读BAR)。
以类似方式,可排除同时承担两个角色、同时对给定资源具有多个访问权(例如,读和删除)等。
图8是示出响应于资源访问请求704的示例授权查询查明800的更具体的框图。如图所示,授权查询查明800包括具有所标识的资源802的请求704、转换功能804、操作806、授权查询表224和授权查询706。授权查询查明800涉及接收请求704作为输入,以及产生相关联的授权查询706作为输出。
在所述实现中,请求704是访问某一所标识的资源802的请求。请求704经由转换功能804被转换成资源专用操作806。该转换功能804例如可由资源保卫214(图7)执行。资源专用操作的示例作为示例而非限制包括:(i)对文件读和/或写,(ii)通过通信端口发送数据,(iii)利用处理器,(iv)执行应用程序等。
一般而言,操作806被提供给授权查询表224。例如,安全策略220可负责将操作806应用于授权查询表224并检索相关联的授权查询706。作为结果产生授权查询706,并将其返回给资源保卫214。
更具体地,授权查询表224包括多个字段808。每一字段808将资源专用操作映射到相关联的授权查询模板。如图所示,在授权查询表224中有“f”个字段808(1)、808(2)...808(f),f是某一整数。检索到的授权查询模板被返回给资源保卫214。资源保卫214然后执行代入过程以产生授权查询706。换言之,为创建授权查询706,资源保卫214将实际进行请求的主体、实际所请求的资源等代入相关联授权查询模板的预定的相应槽中。
图9是示出给定断言上下文702*情况下的示例授权查询求值708*的更具体的框图。如以上参考图7概括描述,求值算法708接收授权查询706和断言上下文702。在图9的具体示例授权求值708*中,结合具体示例断言上下文702*对具体示例授权查询706*求值。实际断言上下文702、授权查询706和求值算法708可与这些示例不同。
如图所示,示例授权查询求值708*包括示例断言上下文702*、示例授权查询706*、得到的布尔运算910和答案912。断言上下文702*包括(i)三个令牌断言606T-1、606T-2和606T-3,以及(ii)两个策略断言606P-1和606P-2。示例授权查询706*包括三个所断言的事实608-1、608-2和608-3;两个与运算符610;一个非运算符612;以及一个约束902。
在求值期间,授权引擎218(图7)试图确定是否可对授权查询706*的每一所断言的事实608推断有效的匹配断言606。该匹配判定过程可以是迭代的、递归的、和/或在一个有效断言导致另一可能有效的断言时为分叉的。在某一预定时间段之后,匹配判断过程收敛。
图9的示例授权查询求值708*示出了便于大体理解对授权查询求值的概念基础的简化的求值算法。更具体且技术上准确的说明以下在图9的描述之后呈现。而且,一个示例实现的相对严格的逻辑描述在本文中以下在图10的描述之后呈现。
在示例授权查询求值708*中,授权引擎208确定令牌断言606T-2是有效的且匹配904所断言的事实608-1。还确定策略断言606P-2是有效的且匹配906所断言的事实608-2,令牌断言606T-3是有效的且匹配908所断言的事实608-3。尽管令牌断言606T-1和策略断言606P-1未明确匹配特定的所断言的事实608,但它们可能已在匹配判定过程中使用了。另外,关于约束902作出真/假判断。
在匹配判断过程之后和/或期间,执行真/假替换过程以创建布尔运算910。如果特定的所断言的事实608具有匹配的有效断言606,则用“真”替换特定的所断言的事实608。如果不是,则用“假”替换该特定的所断言的事实608。同样地,用其确定的“真”或“假”状态替换任何约束902。尽管未对授权查询706*明确示出,但约束902与授权查询的其余部分进行逻辑与。
例如,授权查询求值708*、授权查询706*在文字上可如下表示:所断言的事实608-1,与运算符610,所断言的事实608-2,与运算符610,非运算符612,所断言的事实608-3,以及约束902。在替换过程之后,得到的布尔运算在文字上可如下表示:真与真与非真与真。这可缩减成:真与真与假与真,这是逻辑假。
结果,布尔运算910的答案912为“假”。因此,授权决策710是拒绝请求。另一方面,如果例如对所断言的事实608-3没有匹配908断言606,则布尔运算910将被缩减成:真与真与真与真,这是逻辑真。在这种情况中,答案912将为“真”,且授权决策710将是允许请求。尽管未明确示出或描述,但存在布尔运算910将求值为逻辑假的其他排列(例如,如果确定对所断言的事实608-2没有有效且匹配906的断言606)。
此处描述用于对授权查询求值的技术上更为准确的示例实现。首先,一次一个地对授权查询内的所断言的事实求值,而不必在完整的替换过程之前一次对所有事实进行。其次,授权查询内单个所断言的事实的求值返回使该所断言的事实为真的变量代入集。因此,一般而言,所返回的值不是立即为真/假状态,因为事实实际上被表示具有关于给定变量代入的真/假状态。
如果授权查询内的两个所断言的事实之间的连接词为与(如图9的示例中的情况),则左边事实所返回的值(即,该代入集)被应用于右边的事实。之后,按需对右边的事实求值。得到的代入集然后通过代入合成来组合。对整个授权查询求值的结果是代入集,代入集的每一代入能够使授权查询为真。
图10是示出用于查明授权查询并对其求值的方法的示例的流程图1000。流程图1000包括十一(11)个框1002-1022。尽管可在其他环境中以及采用各种硬件/软件/固件组合来执行流程图1000的动作,但使用图1-9的某些特征、组件和方面来示出该方法的示例。例如,资源保卫214、授权查询表224和/或授权引擎218可单独或共同实现流程图1000的动作。
在所述实现中,在框1002,接收访问资源的请求。例如,可接收标识资源802的请求704。在框1004,将请求转换成对资源的操作。例如,资源保卫214可将请求704转换804成资源专用操作806。
在框1006,操作被提供给授权查询表。例如,资源专用操作806可被提供给授权查询表224。在框1008,查明与该操作相关联的授权查询。例如,可定位包括资源专用操作806的字段808。然后可从所定位的字段806检索相关联的授权查询。
更具体地,检索到的授权查询可包括授权查询模板。基于由请求者提供的安全令牌,相关联的授权查询模板通过将实际的主体、资源等代入到授权查询模板的预定相应槽中而被转化成授权查询。在一示例实现中,了解来自请求704的实际变量信息的资源保卫214通过代入执行该转化。
在框1010,在求值算法中组合断言上下文和授权查询。例如,断言上下文702和授权查询706可被共同提交给求值算法708。
在框1012,在匹配判定过程中,断言上下文的有效断言被匹配到授权查询的所断言的事实。例如,在匹配判定过程中,被发现为有效的、可从断言上下文702推断(即,原始存在于其中和/或以其他方式从其得到)的一个或多个令牌断言606T和/或策略断言606P可试图匹配904/906/908到所断言的事实608。还分析授权查询706的任何约束部分902以确定它们是真还是假。如以上在技术描述中所述,可单独和/或顺序分析每一断言。
在框1014,响应于匹配判定过程执行对授权查询的真/假替换。例如,在布尔运算910中,被确定为具有有效匹配断言606的所断言的事实608可用真替换,而未被确定为具有有效匹配断言606的所断言的事实608可用假替换。应理解,框1014的动作可按照与框1012的动作的执行全部或部分重叠的方式执行。
在框1016,对授权查询逻辑求值。例如,可作为求值算法708的一部分对布尔运算910逻辑求值,以确定其答案为真还是假。应理解,布尔运算910的结果无需用真或假状态替换每一所断言的事实608和/或约束902就可被确定,而且确实被确定。
在框1018,确定授权查询逻辑求值是否为“真”。如果是,则框1020处的授权决策是该请求被准许。另一方面,如果确定授权查询逻辑求值为“假”,则框1022处的授权决策是请求被拒绝。应理解,可能具有“真”状态的授权查询的算法求值可返回使授权查询为“真”的一组变量。
也可从相对严格的逻辑观点描述安全授权查询。在安全授权查询的所述逻辑实现中,通过查询包含本地以及导入的断言的断言上下文来决定授权请求。在一示例实现中,授权可包括A说事实形式的原子查询和约束c的集合。这些原子查询和约束由包括否定在内的逻辑连接词组合。示例逻辑连接词包括以下:
q::=e说事实
| q1,q2
| q1或q2
| 非(q)
| c
得到的查询语言比其中仅考虑原子查询的其他基于逻辑的语言表达力更强。例如,可通过将原子查询与否定和约束组合来表达责任的分离、阈值和拒绝策略。在语言的断言层不允许否定,因为将否定和递归语言耦合会导致语义的歧义,且通常导致计算更为复杂甚至不可判定。通过将否定的使用限于授权查询层(而非将这些特征添加到断言语言本身),将否定与递归有效地分开,从而绕开了与否定通常相关联的问题。
查询的语义由关系限定。以下,令AC为断言上下文。而且,令θ为代入,令ε为空代入。令Dom(θ)为代入θ的域。如果X是句法短语,则令Vars(X)为X中出现的变量集。授权查询的示例形式语义如下:
给定查询q和授权上下文AC,授权算法返回代入θ的集合,使得
如果查询不包含变量(ground),则答案集或者为空(意味着“不”,请求被拒绝)或包含空代入ε的单元素集(意味着“是”,请求被准许)。如果查询包含变量,则答案集中的代入是使查询为真的变量赋值。
关于授权查询表,它们可以是本地安全策略的一部分,且可与命令性代码保持分开。该表通过将参数化的方法名映射到查询而提供对授权查询的接口。在请求时,资源保卫调用由该表映射到授权查询的方法(例如,代替直接发出查询),该查询然后用于查询断言上下文。
例如,授权查询表可包含以下示例映射:
canAuthorizePayment(请求者,支付):
管理员说请求者拥有BankManagerID id,
非(管理员说请求者已启动支付)。
如果Alice试图对支付Payment47授权,则资源保卫调用canAuthorizePayment(Alice,Payment47),这触发以下查询:
管理员说Alice拥有BankManagerID id,
非(管理员说Alice已启动Payment47)。
得到的答案集(例如,或者是请求应被拒绝的情况下的空集,或者是id的变量赋值)被返回给资源保卫,后者然后可实施策略。
也可从相对严格的逻辑观点描述安全授权查询的形式求值。以下描述假定存在另一算法,该算法返回对其从授权上下文AC可推断出“e说事实”形式的给定陈述的代入集。这样的算法例如可依赖于将AC转换成诸如Datalog等另一逻辑语言。对授权查询定义函数AuthAnsAC,如下:
AuthAnsAC(e说fact)={θ|eθ说事实θ可从AC推断
且
AuthAnsAC(q1,q2)={θ1,θ2|θ1∈AuthAnsAC(q1)且θ2∈AuthAnsAC(q2θ1)}
AuthAnsAC(q1或q2)=AuthAnsAC(q2)∪AuthAnsAC(q2)
以下定理示出AuthAnsAC是用于对安全授权查询求值的算法。该定理表示授权查询求值的有限性、可靠性和完全性:对所有安全断言上下文AC和安全授权查询q,
1.AuthAnsAC(q)被定义且是有限的,且
2.当且仅当θ∈AuthAnsAC(q)。
图1-10中的设备、动作、方面、特征、功能、过程、模块、数据结构、协议、组件等都在分为多个框的示意图中得到阐明。然而,描述和/或示出图1-10的次序、互连、相互关系、布局等不旨在被解释为限制,任何数目的这些框可按照任何方式被修改、组合、重新排列、增加、省略等,以实现用于安全授权查询的一个或多个***、方法、设备、过程、介质、装置、API、协议、安排等。
尽管***、介质、设备、方法、过程、装置、机制、方案、途径、进程、安排、以及其它实现都用专用于结构、逻辑、算法、以及功能特征和/或示意图的语言加以描述,但是应该理解在所附权利要求中定义的本发明不必限于以上描述的具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。