对受保护存储系统中的服务的访问进行控制的许可的制作方法

文档序号:6416603阅读:200来源:国知局
专利名称:对受保护存储系统中的服务的访问进行控制的许可的制作方法
技术领域
本发明涉及计算机系统中的保护机制。具体地说,本发明涉及对受保护存储系统中由其它应用程序提供的服务的访问进行控制的方法及设备。
诸如JavaTM(由加利福尼亚Palo Alto市的SUN Microsystems,Inc.开发)之类的程序语言及相关的支持接口程序目前提供可靠、安全的基础结构,以支持通过计算机网络传递应用程序,并在各种各样的计算平台上运行该应用程序。由于诸如Java之类的发展,从远程服务器把应用程序,例如Java拼接程序(applet)装载到本地机,并在本地机上执行该应用程序正变得越来越平常。
但是,目前的计算系统未被设计成允许来自不同厂商的计算机应用程序以受控方式相互作用,以便这些应用程序能够共同工作,完成给定任务。这样做的一个问题是,应用程序的厂商一般想要控制这些相互作用的发生方式。例如,从主(home)经纪应用程序获取资金收益信息可用于税收应用程序。但是,主经纪应用程序需要保护客户的公文夹的秘密。因此,税收应用程序不能不受限制地从主经纪应用程序获取公文夹数据。
迄今为止,对计算机系统中的服务的访问进行控制的任务是借助硬件机制,例如硬件权能系统处理的。但是这种特殊目的的硬件并不存在于所有的计算平台上。于是,对于可移植的应用程序,例如设计成跨越各种各样的计算平台运行的JavaTM拼接程序,利用这种硬件控制对服务的访问是不切实际的。
本发明的一个实施例提供了对由其它应用程序提供的服务的访问进行控制的方法及设备。该方法利用了许可证(permit),该许可证包括驻留在避免许可证使用者访问的存储空间中的访问控制机制(access control mechanism)。该方法包括通过许可证接收服务提出的请求,许可证包括面向对象的编程系统内规定的对象。响应该请求,该方法启动许可证内的访问控制机制。访问控制机制控制对服务的访问,并驻留在避免许可证使用者访问的存储空间中,以便通过调用许可证上的方法触发该访问控制机制。如果访问被许可,则该方法通过对受控对象执行调用访问该服务。受控对象包括执行服务的方法,并且避免许可证使用者访问。上述实施例的另一个变化包括在许可证发布权限时,从要求访问服务的实体(例如个人、计算机程序或计算机进程)接收许可证请求。如果该请求包括有效的权限信息,则向该实体颁发许可证。上述实施例的又一个变化包括产生许可证的副本,并把该副本传送给要求访问服务的实体。
这样,本发明提供一种对由另一应用程序提供的服务的访问进行控制的方法。该方法不依赖于硬件访问控制机制,从而可由可移植的应用程序应用于各种各样的计算平台上。


图1A图解说明根据本发明实施例的在计算机系统内共同工作的代码模块。
图1B图解说明根据本发明实施例的通过网络联结到一起的若干计算机节点。
图2图解说明根据本发明实施例的访问服务的过程。
图3图解说明根据本发明实施例的许可对象及受控对象320的结构。
图4是说明根据本发明实施例的产生许可对象的过程的流程图。
图5是说明根据本发明实施例的利用许可对象访问服务的过程的流程图。
下面给出的说明使本领域的技术人员能够实现并利用本发明,并在一个特定应用及其要求方面进行了说明。公开的实施例的各种修改对本领域的技术人员来说是显而易见的,并且在不脱离本发明的精神和范围的情况下,这里确定的一般性原理可应用于其它实施例及应用。从而,本发明并不限于所表示的实施例,而是和符合这里公开的原理和特征的最宽广范围相一致。分布式计算机系统图1A图解说明了根据本发明实施例的在计算机系统100内共同工作的代码模块102和104。为了和代码模块104共同工作,代码模块102向代码模块104请求服务。同样地,为了和代码模块102共同工作,代码模块104向代码模块102请求服务。模块102和104之间的服务访问由许可证结构控制,许可证结构的更详细的描述参见下面的图3-5。
为便于详细说明,服务指的是能够由第一应用程序到其它应用程序产生的功能。该功能可使其它应用程序访问第一应用程序的数据或计算资源。受保护存储系统是便于保护存储器的选定区域,使之不被在该系统上运行的应用程序访问的系统。
图1B图解说明了本发明是如何可用于客户机-服务器计算机环境中的,根据本发明的一个实施例,在该客户机-服务器计算机环境中,若干计算机节点通过网络130相互联结。图1中,服务器110和120通过网络130和第三方系统140联结。网络130通常指的是计算机之间的任意有线或无线链接,包括(但不局限于)局域网、广域网、或者网络的组合。在本发明的一个实施例中,网络130包括互联网(Internet)。服务器110和120可以是计算机网络上包含对客户机提出的计算或数据存储资源请求进行服务的机制的任意节点。第三方系统140可以是计算机网络上和服务器110及120通信,并能够从服务器110及120下载代码和/或数据的任意节点。
在图1图解说明的实施例中,服务器110含有服务器代码模块112,服务器120含有客户机代码模块122。服务器代码模块112及客户机代码模块122包括可在第三方系统140上共同工作的模块化代码段。图1中的虚线表示服务器代码模块112及客户机代码模块122正通过网络130被下载到第三方系统140上。可以多种方式实现该下载过程。在本发明的一个实施例中,服务器110包括一个可被第三方系统140上的用户访问,把服务器代码模块112下载到第三方系统140的网站点(web site)。相应地,服务器120包括可被第三方系统140上的用户访问,把客户机代码模块122下载到第三方系统140的网站点。在另一个实施例中,服务器代码模块112及客户机代码模块122不是通过网络130下载,而是借助诸如计算机磁盘之类的计算机存储介质,分别把服务器代码模块112及客户机代码模块122从服务器110和120传送到第三方系统140。
一旦服务器代码模块112及客户机代码模块122位于第三方系统140上之后,如图1中所示,可把它们结合起来共同工作。例如,在向客户机代码模块122提供服务的情况下,服务器代码模块112可为客户机代码模块122从数据库中检索数据。要不然,服务器代码模块112可为客户机代码模块122执行计算操作。该集成过程可包括确定客户机代码模块122是否已被授予访问服务器代码模块112的服务的权利。在相反方向上,该过程可包括确定服务器代码模块112是否已被授予访问客户机代码模块122的服务的权利。
访问服务的过程图2图解说明了根据本发明的实施例的访问服务的过程。图2图解说明了服务器门(gate)202、系统204及客户机代码模块122(图1)之间的相互作用。注意图2中图解说明的访问服务的过程只表示获得对服务的访问的一种可能方法。概括地说,本发明适用于在计算机系统中共同工作的任意代码段。服务器门202是为正确授权的请求者提供许可证的机制。
为便于详细说明,许可证是由实体持有的,允许该实体访问服务的证明。在本发明的一个实施例中,许可证包括一个在面向对象的编程系统中规定的,便于访问一批服务的对象。
服务器门202包括对由服务器代码模块112(图1)提供的服务的访问进行控制的访问控制机制。该访问控制机制可向许可证的请求者要求各不相同的证明等级。在本发明的一个实施例中,服务器门202位于第三方系统140上的服务器代码模块112中。在另一个实施例中,服务器门202位于服务器110自身中,并通过网络130借助通信被访问。系统204包括用于确定客户机代码模块122被正确授权,以访问由服务器代码模块112提供的服务的机制。为此,以多种方式实现系统204。在一个实施例中,系统204由作为第三方系统140的一部分的代码实现。在另一个实施例中,系统204可被实现为第三方系统140内的服务器代码模块112的一部分。
图2中图解说明的过程按如下所述进行。假定客户机代码模块122已存在于第三方系统140中。为了访问要求的服务,客户机代码模块122向服务器代码模块112请求访问一批服务的“角色”的“入场券”。角色规定将由服务器代码模块112执行的一组操作。一些角色可能比其它角色更为受限。例如,如果服务器代码模块112保存有计算机文件系统,则一个角色可能只包括从文件系统读取文件的操作。而另一个功能更强的角色可能包括对文件系统中文件的读取、写入及删除操作。
响应该请求,系统204检查客户机代码模块122,以确定客户机代码模块122是否包括该角色的正确授权。在本发明的一个实施例中,该检查包括检查证明链。在同一发明人的与此相关的美国专利申请“Controlling Access to Services Between Modular Applications”(申请号09/XXXXXX)中详细地描述了该过程,为此把该专利申请作为参考包含在本发明中,以便描述该过程。
如果对于该角色,客户机代码模块122被正确授权,则系统204为该角色颁发入场券,并把该入场券给予客户机代码模块122。然后,客户机代码模块122把该入场券传给服务器门202。服务器门202检查该入场券以确保入场券有效。如果入场券有效,则服务器门202向客户机代码模块122发送服务许可证。该许可证允许客户机代码模块122访问由该角色规定的服务。在本发明的一个实施例中,许可证是一个在面向对象的编程系统中规定的对象。该对象允许客户机代码模块122执行构成该角色的一组方法。在发送许可证之后,服务器门202使入场券无效,以使该入场券不能被再次使用。由于客户机代码模块122继续拥有许可证,因此客户机代码模块122将能够利用该许可证访问服务,从而不再需要入场券。许可对象图3图解说明了根据本发明的实施例的许可对象300及受控对象320的结构。许可对象300通常由客户机代码模块,例如客户机代码模块122(图1)持有,要求访问由服务器代码模块,例如服务器代码模块112(图1)提供的服务。服务器代码模块112保存受控对象320,受控对象320含有用于实现服务的代码及数据。注意图3中图解说明的实施例是借助在面向对象的编程系统中规定的对象实现的。但是,本发明并不限于面向对象的编程系统。
许可对象300包括若干组成部分,这些组成部分包括受控对象指针302、布尔矢量304、方法-0指针306、方法-1指针308、方法-N指针310、许可证产生方法312、许可证期满信息314及许可记录316。
受控对象指针302指向由服务器代码模块112保存的受控对象320,从而允许许可对象300的持有者访问与服务器代码模块112内的受控对象320有关的服务。受控对象指针302存储在避免客户机代码模块122访问的存储区域中。客户机代码模块122不能直接读出或修改受控对象指针302。客户机代码模块122不能直接访问受控对象320。为了访问受控对象320,客户机代码模块122必须要求系统通过受控对象指针302访问受控对象320。类似地,许可对象300内的其它数据项受到保护,以使客户机代码模块122不能直接读出或修改这些数据项。这种存储区保护确保客户机代码模块122必须通过请求系统访问和受控对象320有关的服务才能访问这些服务。这样使系统能够以许可证指定的方式限制对这些服务的访问。
如前所述,这种类型的存储区保护可利用JavaTM编程语言及支持接口程序提供。JavaTM编程语言可支持下至对象级的存储区保护。在Java模型下,访问对象内的数据的唯一途径是调用该对象支持的方法。另外,借助,例如迷失指针使对象内的数据免受存储区查询。由于可跨越各种各样的计算平台移植JavaTM编程语言,因此可跨越各种各样的计算平台提供这种对象级存储区保护。但是,注意有可能通过攻击Java编程语言和特定计算平台上的操作系统之间的接口程序克服这种保护机制。为了防止这种类型的攻击,可把JavaTM存储区保护方案延伸到计算平台的硬件。
布尔矢量304含有对应于受控对象320提供的方法的条目。这些方法实现与受控对象320相关的服务。如果一个条目包括“许可(ALLOWED)”值,则表示允许许可对象300的持有者访问实现受控对象320的服务的相应方法。如果条目包括“不许可(NOT ALLOWED)”值,则表示不允许许可证的持有者访问该相应方法。以这种方式,许可对象300规定允许许可证持有者访问哪些服务。由于布尔矢量304位于受保护存储区中,因此许可对象300的持有者不能修改布尔矢量304,以获得对服务的越权访问。注意指示特定方法不被许可有多种可能方式。在另一实施例中,对许可对象300内的方法编码,以调用受控对象320中的相应方法。要不然,对许可对象300内的方法编码,以指示该方法不被许可。
借助许可对象300内的方法指针可访问受控对象320中规定的方法。这些方法指针包括方法-0指针306、方法-1指针308及方法-N指针310。客户机代码模块122必须借助这些方法指针306、308及310访问方法324、326及328。方法-0指针306指向受控对象320内的方法-0 324。方法-1指针308指向受控对象320内的方法-1 326。方法-N指针310指向受控对象320内的方法-N 328。这些方法指针驻留在受保护存储区中,以致客户机代码模块122必须通过系统才能访问这些方法。
在图解说明的实施例中,许可对象300还包括许可证产生方法312,该方法允许许可对象300的持有者产生许可对象300的副本,并向另一应用程序传送该副本。这使得客户机代码模块122可以向另一模块转交向受控对象320请求服务的子任务。注意许可证产生方法312只允许产生权限小于许可对象300的副本。换句话说,许可对象300的副本最多可向受控对象320访问相同数目的方法,或许只能访问较少的方法。
许可对象300还包括规定许可证的某些类型的寿命限制的许可证期满信息。在一个实施例中,这是通过指定某一段时间,在该段时间内许可证有效来实现的。在另一个实施例中,这是通过要求系统首先检查中央数据库,以查看该许可证是否仍然有效来实现的。
许可对象300还包括许可记录316,许可记录316记载了对许可证300的访问请求记录。该记录可用于安全目的,监视许可对象300是如何被使用的。另一方面,访问请求的记录也可保存在受控对象320内。
受控对象320含有由方法324、326及328使用,以实现和受控对象320有关的服务的数据322。例如,数据322可含有文件系统数据,方法324、326及328可指定文件系统操作。
许可证产生图4是说明根据本发明的实施例产生许可对象的过程的流程图。该流程图更详细地描述了服务器门202执行的操作,这些操作前面参考图2已作了说明。系统操作开始于状态400,并进行到状态402。在状态402,客户机代码模块122对服务器门202执行调用,产生新的许可证。如前所述,该调用包括作为一个参数的角色入场券。随后系统进到状态404。在状态404,服务器门202验证该入场券,如果该入场券有效,则服务器门202产生新的许可对象300。这一过程可包括查找受控对象320,以便和许可对象300联系起来,或者如果必要,在服务器代码模块112内产生新的受控对象320。然后,系统进到状态408。在状态408中,分配受控对象指针302(图3),使之指向受控对象320。接下来系统进行到状态410。在状态410中,系统设置访问控制标志(布尔矢量304中的条目),规定允许许可证持有者调用哪些方法。系统下一步进到状态410。在状态410,向客户机代码模块122返回许可对象300。然后系统进到结束状态414。许可对象的使用图5是说明根据本发明的实施例利用许可对象访问服务的过程的流程图。系统操作开始于状态500,并进行到状态502。在状态502,客户机代码模块122(图1)调用许可对象300(图3)上的一种方法。系统进到状态504。在状态504,系统检查对应于该方法的访问控制标志。这需要查找布尔矢量304中对应于调用方法的条目。如果该访问控制标志指示该方法被许可,则系统进到状态506。否则系统转到状态510。
在状态506,访问被许可,从而系统调用许可对象300上的适当方法,该方法使受控对象320上具有适当参数的相应方法被调用。然后系统进到状态508。在状态508,系统等待调用的完成。随后把结果返回客户机代码模块122。接下来系统进到结束状态512。
在状态510,方法不被许可。这种情况下,系统向客户机代码模块122指示该方法不被许可。这一步可以多种方式实现。在本发明的一个实施例中,系统使得在执行方法调用的处理器的执行流中产生异常。在另一个实施例中,系统设置全局变量以指示试图使用许可对象300的努力失败。在又一个实施例中,对许可对象300的调用返回NULL值。重复上述过程以便连续调用许可对象300。
上面描述的本发明实施例只是用于举例说明本发明。这些实施例并非穷举,也不用于把本发明限制于公开的形式。于是,对于本领域的技术人员来说,多种修改及变化是显而易见的。另外,上述公开内容并不用于限定本发明,本发明的范围只由附加的权利要求限定。
权利要求
1.一种对受保护存储系统中的服务的访问进行控制的方法,包括通过许可证接收服务请求,该许可证包括在面向对象的编程系统内规定的对象;响应该请求,启动许可证内的访问控制机制,该访问控制机制控制对服务的访问,并驻留在避免许可证使用者访问的存储空间中,以便通过调用许可证上的方法触发该访问控制机制;及如果访问被许可,通过对受控对象执行调用访问该服务,受控对象包括执行服务的方法,并且避免许可证使用者访问。
2.按照权利要求1所述的方法,其特征在于还包括如果访问不被许可,向请求该服务的实体指示对该服务的访问不被许可。
3.按照要求要求1所述的方法,其特征在于在JavaTM编程语言及支持接口程序内定义许可证。
4.按照权利要求1所述的方法,其特征在于只能借助许可证上被调用的方法访问受到许可证保护的数据。
5.按照权利要求1所述的方法,其特征在于还包括在许可证发布权限时,从要求访问服务的实体接收许可证请求;及如果该请求包括有效的权限信息,则向该实体颁发许可证。
6.按照权利要求1所述的方法,其特征在于还包括产生许可证的副本,并把该副本传送给要求访问服务的实体。
7.按照权利要求6所述的方法,其特征在于许可证的副本允许访问的服务少于许可证原件允许访问的服务。
8.按照权利要求1所述的方法,其特征在于还包括在访问服务之前,确定许可证是否已被撤消,并且如果许可证已被撤消,则指示访问不被许可。
9.按照权利要求1所述的方法,其特征在于还包括在和许可证有关的记录中记载访问请求。
10.按照权利要求1所述的方法,其特征在于启动访问控制机制包括确定许可证是否已无效。
11.按照权利要求1所述的方法,其特征在于访问控制机制包括指向受控对象的指针,该指针驻留在受到保护,避免许可证的持有者访问的存储空间中。
12.按照权利要求1所述的方法,其特征在于访问控制机制包括将被调用以执行服务的方法,其中如果访问不被许可,则该方法不执行该服务,而是指示对该服务的访问不被许可。
13.按照权利要求1所述的方法,其特征在于访问控制机制包括和将被调用以执行服务的方法有关的变量,其中该变量指示访问是否被许可。
14.一种对受保护存储系统中的服务的访问进行控制的方法,其特征在于包括通过许可证接收服务请求,该许可证包括在面向对象的编程系统内规定的对象;响应该请求,启动许可证内的访问控制机制,该访问控制机制控制对服务的访问,并驻留在避免许可证使用者访问的存储空间中,以便通过调用许可证上的方法触发该访问控制机制;如果访问被许可,通过对受控对象执行调用访问该服务,受控对象包括执行服务的方法,并且受到保护,避免许可证使用者访问;及如果访问不被许可,向请求该服务的实体指示对该服务的访问不被许可;其中访问控制机制包括将被调用以执行服务的方法,其中如果访问不被许可,则该方法不执行该服务,而是指示对该服务的访问不被许可。
15.一种存储指令的计算机可读存储介质,当所述指令被计算机执行时,将使该计算机执行对受保护存储系统中的服务的访问进行控制的方法,其特征在于包括通过许可证接收服务请求,该许可证包括在面向对象的编程系统内规定的对象;响应该请求,启动许可证内的访问控制机制,该访问控制机制控制对服务的访问,并驻留在避免许可证的使用者访问的存储空间中,以便通过调用许可证上的方法触发该访问控制机制;及如果访问被许可,通过对受控对象执行调用访问该服务,受控对象包括执行服务的方法,并且受到保护,避免许可证使用者访问。
16.一种对受保护存储系统中的服务的访问进行控制的设备,其特征在于包括用户用来访问服务的许可证,该许可证包括在面向对象的编程系统内规定的对象;许可证内的访问控制机制,该访问控制机制控制对服务的访问,并驻留在避免许可证的使用者访问的存储空间中,以便通过调用许可证上的方法触发该访问控制机制;及与许可证通信的请求处理机制,该请求处理机制被构造为通过许可证接收对服务的访问请求,并启动访问控制机制。
17.按照权利要求16所述的设备,其特征在于构成该访问控制机制,以便通过对受控对象执行调用,提供对该服务的访问,受控对象包括执行该服务的方法,并且受到保护,避免许可证使用者的访问。
18.按照权利要求16所述的设备,其特征在于请求处理机制被构造为当请求处理机制确定访问不被许可时,指示对该服务的访问不被许可。
19.按照权利要求16所述的设备,其特征在于访问控制机制包括至少一种将被调用以执行服务的方法。
20.按照权利要求16所述的设备,其特征在于在JavaTM编程语言及支持接口程序内规定许可证。
21.按照权利要求16所述的设备,其特征在于只能借助许可证上被调用的方法访问受到许可证保护的数据。
22.按照权利要求16所述的设备,其特征在于还包括从要求访问服务的实体接收许可证请求,并且如果该请求包括有效的的权限信息,则向该实体颁发许可证的许可证产生机制。
23.按照权利要求16所述的设备,其特征在于还包括许可证复制机制,该机制被构造为产生许可证的副本,并把许可证的副本传递给要求访问该服务的实体。
24.按照权利要求23所述的设备,其特征在于许可证复制机制被构造为产生允许访问的服务少于许可证原件允许访问的服务的许可证副本。
25.按照权利要求16所述的设备,其特征在于请求处理机制被构造为在访问服务之前,确定许可证是否已被撤消。
26.按照权利要求16所述的设备,其特征在于还包括和许可证有关的,记载访问请求的记录。
27.按照权利要求16所述的设备,其特征在于请求处理机制被构造为确定许可证是否已失效。
28.一种对受保护存储系统中的服务的访问进行控制的设备,其特征在于包括许可装置,通过该许可装置,用户可访问服务;在许可装置之内的访问控制装置,该访问控制装置控制对服务的访问,并驻留在避免许可装置的使用者访问的存储空间中,以便通过调用许可装置上的方法触发该访问控制装置;及和许可装置通信的请求处理装置,构成该请求处理装置以便通过许可装置接收对服务的访问请求,并启动访问控制装置。
29.一种含有对受保护存储系统中的服务的访问进行控制的数据结构的计算机可读存储介质,其特征在于该数据结构包括该数据结构内的访问控制机制,该访问控制机制控制对服务的访问,并驻留在避免许可证的使用者访问的存储空间中,以便通过调用许可证上的方法触发该访问控制机制;及该数据结构内的访问控制指示器,访问控制指示器指定用户能够访问的服务,访问控制指示器受到保护,避免被用户修改。
30.按照权利要求29所述的计算机可读存储介质,其特征在于访问控制机制包括指向实现服务的代码的指针,该指针驻留在受到保护,避免用户访问的存储空间中。
31.按照权利要求29所述的计算机可读存储介质,其特征在于访问控制指示器包括和服务有关的变量,其中该变量指示对相应服务的访问是否被许可。
32.一种对受保护存储系统中的服务的访问进行控制的方法,其特征在于包括通过许可证接收服务请求,该许可证包括在面向对象的编程系统内规定的对象;响应该请求,启动许可证内的访问控制机制,该访问控制机制控制对服务的访问,并驻留在避免许可证使用者访问的存储空间中,以便通过调用许可证上的方法触发该访问控制机制;及如果访问被许可,访问该服务。
全文摘要
本发明的一个实施例提供了一种对受保护存储系统中的服务的访问进行控制的方法及设备。该方法利用了许可证,该许可证包括驻留在避免许可证使用者访问的存储空间中的访问控制机制。该方法包括通过许可证接收服务请求,许可证包括在面向对象的编程系统内规定的对象。响应该请求,该方法启动许可证内的访问控制机制。访问控制机制控制对服务的访问,并驻留在避免许可证使用者访问的存储空间中,以便通过调用许可证上的方法触发该访问控制机制。如果访问被许可,则该方法通过对受控对象执行调用,访问该服务。
文档编号G06F9/46GK1239787SQ9910909
公开日1999年12月29日 申请日期1999年6月18日 优先权日1998年6月18日
发明者埃弗雷姆·利普金, 西奥多·C·高尔德斯坦 申请人:太阳微系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1