用于在软件应用中设置安全参数的方法和系统的制作方法

文档序号:6608341阅读:224来源:国知局
专利名称:用于在软件应用中设置安全参数的方法和系统的制作方法
技术领域
本发明一般涉及计算机安全,并且更具体地涉及用于在计算机应用中定义安全许可的方法。
背景技术
随着因特网(有时称之为“网络”)的出现,企业和消费者具有了前所未有的用于开发和交付软件应用的多种渠道。贯穿商业实体的多个层面的应用的分布产生了实体之间的信任问题。例如,在商业中实现应用的部署者必须信任检验应用的完整性的签署者,而该签署者又必须信任编写应用的代码的开发者。诸如纽约Armonk的国际商业机器公司(IBM)的公司,已经开发了便于部署、集成、执行和管理软件应用的安全过程。
当前,对计算机安全问题的一种普遍方案是部署Java2安全模型,从而确保应用在运行时环境中的完整性。Java2安全的一个问题在于用来定义准确的安全许可的过程是麻烦的。
在由华盛顿Redmond的微软公司所发布的Windows中,应用许可是基于区域或组的。定义了不同的安全区域,并且在特定区域内的主要决定是是否基于应用的安全许可设置运行特定的应用。一旦做出决定允许应用运行,则运行的应用通常获得对应于该区域的所有许可。此外,在Java环境中安全区域并不实用,因为许可粒度太精细。换句话说,在这样精细的粒度下,非全即无方案(all or nothing approach)要求系统管理员或部署应用的其他用户访问详细的安全配置信息,并且阻止用户在特定区域内为不同的应用设置不同的安全级别。
Java2安全采用许可检查来加强安全策略。J2EE运行时环境缺省Java2安全策略允许J2EE应用非常有限的一组许可来确保运行时完整性。部署应用的用户必须为应用设置许可级别。如上所述,这种方案要求部署应用的用户具有关于如何使用应用以及由谁使用应用的详细信息。
所需要的是这样的系统,即该系统将安全策略的设置分布于负责开发、签署和部署应用的人之中。在每个层面,人们对于安全需要具有不同的观点,并且分布式方案将使每个层面的人都能够处理其特定的安全事务。

发明内容
所提供的是一种用于在计算机应用中定义安全许可的方法,所述方法采用将对安全许可的分派分布于软件开发和交付过程的多个层面之中的方式来定义所述安全许可。所述层面包括但不限于开发者、应用签署者以及部署应用的人员。通过创建许可文件,开发者可以指定可应用于特定应用的最大许可。取决于所述签署者对所述系统的知识,所述签署者然后可以进一步限制所述应用的许可。最后,部署所述应用的用户可以主张(assert)对分派给不同用户的特定许可的控制。
开发者将对特定应用的许可定义为所述应用中的元数据,并且将所述许可保存在连同所述应用所存储的许可元数据文件中。签署者检查所述应用和许可文件,并且如果满足已经适当地设置了所述文件中合适的许可级别,则批准或“签署”所述应用。一旦签署者已经批准或签署了所述应用和所述许可文件中的许可,就部署所述应用,或者将所述应用提供给以所述许可文件所允许的最大许可在计算系统上安装所述应用的用户。已部署的应用被给予所述元数据中所指定的许可,但其限于所述用户已经与所述签署者关联的并且在策略文件中定义的许可。换句话说,当执行所述应用时,基于部署所述应用的人已寄予所述签署者的最大信任,运行时检查确保所述应用仅可以进行这样的动作,即该动作既由所述许可文件许可(如所述签署者所担保的),又由所述策略文件许可(如部署所述应用的人所定义的)。
所公开的技术的一个优点在于所述签署者可以限制责任。例如,如果所述签署者确定特定的捆绑并不十分可信,则所述签署者可以仅在小的安全范围内签署所述捆绑。签署者还可以对不同的信任级别使用相同的证书,从而简化计算机管理。另外,系统管理员或其他用户可以在部署之前检查许可文件,从而确定执行所需要的许可。所要求的主题还使得所述系统管理员能够限制应用从特定的签署者接收的最大安全范围。
本概要并不旨在对所要求的主题进行全面的描述,但却旨在提供对与之关联的一些功能性的简要概括。在研究了以下附图和详细描述时,对本领域的技术人员来说,本发明的其它系统、方法、功能性、特征和优点会是或会变得显而易见。


当结合以下附图考虑所公开的实施例的以下详细描述时,可以获得对本发明的更好的理解,其中图1是具体表现所要求的主题的示例性计算系统的框图;图2是采用了所要求的主题的示例性应用开发体系结构的框图,其包括分发元件;图3描述了可以在所要求的主题的一个实施例中采用的示例性许可文件;图4是与所要求的主题相关联的应用开发和部署过程的流程图;图5是执行根据所要求的主题而开发的应用的运行时过程的流程图。
具体实施例方式
尽管特别参照Windows操作系统(OS)和Java开发环境进行描述,然而可以在具有值得期望的灵活的应用安全的任何信息技术(IT)系统中实现所要求的主题。计算领域的技术人员可以认识到,除了以下所描述的那些之外,所公开的实施例还与广泛的各种计算环境有关。另外,可以以软件、硬件或者软件与硬件的结合实现所公开的本发明的方法。硬件部分可以使用专门的逻辑来实现;软件部分可以存储于存储器中,并且由诸如微处理器、个人计算机(PC)或大型计算机的适当的指令执行系统执行。
在本文的上下文中,“存储器”或“记录介质”可以是容纳、存储、通信、传播或传送由指令执行系统、装置或设备使用的或者连同指令执行系统、装置或设备使用的程序和/或数据的任何装置。存储器和记录介质可以是但不限于电子、磁性、光学、电磁、红外或半导体系统、装置或设备。存储器和记录介质还包括但不限于例如以下便携式计算机磁盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪速存储器),以及便携式压缩磁盘只读存储器或者可以在其上存储程序和/或数据的另一适当的介质。
依照所要求的主题,一个实施例针对用于实现软件应用安全的程序化方法。如文中所使用的,定义术语“程序化方法”表示当前所实现的一个或多个过程步骤;或者可选地,表示可启用以在将来的时间点上实现的一个或多个过程步骤。术语程序化方法预计三种可选的形式。首先,程序化方法包括当前所实现的过程步骤。其次,程序化方法包括体现计算机指令的计算机可读介质,当计算机执行时,其实现一个或多个过程步骤。最后,程序化方法包括已由软件、硬件、固件或其任意组合程序化的计算机系统,从而实现一个或多个过程步骤。可以理解,并不将术语“程序化方法”解释为同时具有多于一个的可选形式,而是在可选形式的真正意义上对其进行诠释,其中在任何给定的时间点,仅出现多个可选形式之一。
现转向附图,图1是具体表现所要求的主题的示例性计算系统体系结构100的框图。客户系统102包括中央处理器(CPU)104,其耦合于监视器106、键盘108和鼠标110,它们一起促进人与计算系统100和客户系统102的交互。还包括于客户系统102并且连在CPU 104上的是数据存储组件112,其可以并入CPU 104,即内部设备,或者借助于诸如但不限于通用串行总线(USB)端口(未示出)的各种通常可用的连接设备从外部连在CPU 104上。数据存储器112被描述为存储具体表现所要求的主题的示例性计算机软件应用114。应用114包括若干组件,即代码116、许可元数据文件118、证书120和签名122。策略文件124也存储在数据存储器112上。尽管连同应用114而示出,然而策略文件124的部署分离于应用114,并且其对于应用114并不是特定的。换句话说,策略文件124通常为计算机系统而不是为特定的应用定义策略。应当注意,典型的计算系统会包括多于一个的应用,但是为了简单起见仅示出了一个。组件118、120、122和124表示为了处理以上在本发明的背景技术中所描述的安全问题而提供分布式和灵活的安全策略的安全系统的组件。下面结合图2-5更为详细地描述组件118、120、122和124。
客户系统102和CPU 104连接至因特网126,因特网126还连接至服务器计算机128。尽管在该例中,CPU 104和服务器128经由因特网126通信耦合,然而它们还可以通过诸如但不限于局域网(LAN)(未示出)的任意数目的通信介质而耦合。此外,应当注意,存在很多可能的计算系统配置,计算机系统100只是其中一个简单的例子。
图2是采用所要求的主题的解决方案,或者应用、开发系统130的框图。该图中包括了图1的客户系统102、代码116、服务器或“升级服务器(staging server)”128。如图1,应用114包括代码116、许可元数据118、证书120和签名122。该图描述了通过开发系统130对应用114的创建。
在该例中,开发者将定制的商业解决方案交付于特定的软件市场,将该过程分成四(4)个示例性阶段描述应用开发132、应用认证或签署134、应用升级136和应用部署138。
在应用开发132期间,开发者创建代码116,并且定义与代码116关联的许可元数据文件118。代码116包括示例性文件,即文件_1 140和文件_2 142。为了简单起见,仅在开发过程130的一个阶段期间的代码116中示出文件_1 140和文件_2 142,然而应当理解,文件140和142也是贯穿阶段134、136和138的代码116的一部分。
下面结合图3更为详细地描述示例性许可元数据文件118。下面结合图4和图5详细地描述采用许可元数据文件118的过程。代码116的开发可以包括但不限于编写定制的计算机代码以及结合第三方代码和软件产品。换句话说,代码116可以包括任何数目的单独的组件,其中的每一个均可以是非自身独有(off-the-self)的产品,其由技术专家创建,或者由第三方厂商开发。文件_1 140和文件_2 142是两(2)个这样的组件。应当注意,文件140和142仅仅用于说明的目的;典型的应用114和相应的代码116会包括很多文件和组件。为了简单起见,仅示出文件_1 140和文件_2 142。
在应用签署134期间,诸如系统管理员的受信任方检查代码116和许可元数据文件118,并且如果满足安全要求,则通过添加证书120和相应的签名122来认证代码116和文件118。在证书之前,可以随代码116和许可元数据文件118包括附加的文件(未示出)。一旦经过认证,代码116、许可元数据文件118、证书120和签名122就成为应用包144的一部分,并且不能够在未使证书120和签名122无效的情况下修改它。换句话说,如果修改了代码116或诸如文件140或142的任何组成部分,则必须通过插入新的证书120和签名122来重新认证代码116和许可元数据文件118。因而,应用包144的证书120和签名122使得系统管理员或其他授权用户能够在了解出于安全的目的已筛选应用包144的情况下部署应用包144。
证书120是通过其来识别系统管理员或者其他授权用户或“签署者”的装置。证书120含有对应于具有证书链(certificate chain)的签署者的公钥。在不同的应用中证书120可以作为签署者身份的证据而出现。基于诸如应用114的应用的内容,以及用于签署应用的证书120,每个已签署的应用具有不同的签名122。事实上,应用的不同版本因为版本的内容不同(即使很小)而具有不同的签名。因而签名122实现两(2)个功能,即其可以用于验证用于创建签名122的证书120,并且还可以用于检验应用114的以及与证书120相关联的任何其它的应用的内容。计算和密码领域的技术人员应当熟悉出于安全的目的而检查、认证和签署应用的过程。
应用升级136描述了将应用包144分发至最后的客户机或用户的一些方法。这样的分发技术的例子包括但不限于压缩磁盘(CD)146,通过邮寄或用其它方式将其交付于用户用于安装在用户系统上,例如客户系统102;以及升级服务器128,客户系统102可以从升级服务器128下载产品或解决方案,例如应用包144。计算领域的技术人员应当认识到,除了CD146和升级服务器128之外,还存在很多可能的交付选项。
在应用部署138期间,系统管理员或对客户系统102负责的其他人员将应用包144装载到数据存储器112上。一旦被部署,应用114最多获得许可元数据文件118中所指定的许可。在检查代码116和许可元数据文件118之后,系统管理员或部署应用114的其他用户添加策略文件124,从而处理管理员可能有的任何安全事务。在执行应用114时,运行时检查确保应用114仅可以实现由许可元数据文件118许可(如签署者所担保)的并且由策略文件124许可(如部署应用114的人员所定义)的动作。通过这种方式,在阶段132、134和138的人员基于其各自的需求和事务,全部都具有对与应用114相符的最终许可的控制。特别地,基于管理员对在应用签署阶段134期间创建证书120和签名122的签署者所寄予的最大信任,系统管理员在应用部署阶段138期间可以限制应用114。例如,如果管理员并不特别信任开发者或签署者,则应用仍然可以被授权非常有限的许可,并且被允许执行。
图3描述了以上结合图1和图2最初所介绍的示例性许可元数据文件118,其可以用于所要求的主题的一个实施例。许可元数据文件118包括“文件”条目150、“特性”条目152和“系统”条目154。文件条目150定义了与各种文件相关联的访问许可,其中各种文件与代码116(图1和图2)相关联,在该例中,文件条目150包括文件_1 140和文件_2 142,这二者都是以上结合图2所介绍的。特性条目152为可以与计算系统和应用114相关联的各种特性定义了访问权。系统条目154为各种远程计算设备定义了连同其它事务一道的访问参数,这些远程计算设备可以用于访问安装了应用114的系统。在下面的例子中,应用114安装在客户系统102上,并且允许从服务器128远程访问。
文件条目150包括两(2)行示例第一行“java.io.FilePermission“FILE_A”‘read,write’”,其涉及示例性文件_A(未示出),以及第二行‘java.io.FilePermission“FILE_B”“read,execute”’,其涉及示例性数据文件_B(未示出)。文件条目150中的语法行是第一项,例如“java.io.FilePermissions”,其指定了许可的类型,第二项,例如“FILE_A”,其是许可所应用于的实体的名称,以及第三项,例如“read,write”,其指定了关于相应的文件所许可的许可动作。例如,在第一行,短语“java.io.FilePermission”指定了该条目涉及java输入/输出(I/O)许可。项目“FILE_A”指定了相应的数据文件。短语“read,write”指示文件_A可以被用户或应用读取和写入。简单地说,将文件_A列为普通的文件,用户和应用可以对它读取和写入。
特性条目152包括一(1)行示例‘java.io.PropertyPermission“some.property.name”“read”’。如文件条目150中,第一短语,例如“java.io.PropertyPermission”,其指定了许可的类型,第二项,例如“some.property.name”,其是许可所应用于的实体的名称,以及第三项,例如“read”,其指定了关于相应的特性所许可的许可动作。换句话说,‘java.io.PropertyPermission“some.property.name”“read”’该行指定了该条目涉及对于特性的java输入/输出(I/O)许可。项目“some.property.name”指定了所定义的特性。短语“read”指示可以由用户或应用读取相应的特性。
系统条目154包括一(1)行示例‘java.net.SocketPermission“www.ibm.com80”“connect,accept”’。系统条目154中的语法行类似于文件条目150和特性条目152的语法。例如,在系统条目154的这个例子中的一行指示主机,在该例中,允许连接“www.ibm.com”的端口80并且接受连接。
应当理解,文件118只是可以用于实现所要求的主题的许可元数据文件的一个例子。计算领域的技术人员应当认识到,存在可以被并入本文所描述的系统的许多格式和类型的条目。条目150、152和154中的条目的格式和含义仅被用作例子。此外,计算领域的技术人员应当熟悉该语法和含义。
图4是与所要求的主题相关联的应用开发和部署(D&D)过程200的流程图。依照所公开的技术,将与过程200关联的动作分布于应用开发和部署过程130(图2)中的若干人员之中。例如,应用可以在传输之前由开发者签署,或者在传输之后由除了开发者之外的某人签署。在相关时,将描述通常对特定动作负责的当事人。
过程200开始于“开始开发和部署(D&D)应用包(AP)”块202,并且控制立即前进到“代码应用”块204。在块204期间,应用开发者针对特定的应用编写和/或汇编代码116(图1和图2)。如上文所述,代码116的开发可以包括但不限于编写定制的计算机代码和结合第三方代码与软件产品。换句话说,代码116可以包括任何数目的单独的组件,其中的每一个可以是非自身独有的产品,其由技术专家创建,或者由第三方厂商开发。文件_1 140(图2)和文件_2 142(图2)是两(2)个这样的组件。
当已经在块204期间产生代码之后,在“定义许可”块206期间,应用开发者产生诸如文件118(图1-3)的许可元数据文件。在“发送包”块208期间,开发者将代码116和文件118作为应用包交付给检验包的来源的签署者。块208对应于从应用开发132(图2)到应用签署134(图2)的过渡。
在“认证包”块210期间,签署者检查代码116和许可元数据文件118,并且如果满足已经适当地设置文件中合适的许可级别,例如以上结合图3所描述的那些,则批准或“签署”它们。通过将证书120和签名122与代码116和许可元数据文件118合并来产生应用包144(图2),从而实现对应用的签署。
一旦在块210期间签署者已批准或签署应用和许可文件,就在“交付包”块212期间将应用交付给终端用户。块212对应于从应用签署134通过应用升级136(图2)到应用部署138(图2)的过渡。在“定义策略”块214期间,系统管理员或者对计算系统102(图1和图2)负责的用户检查许可元数据文件118,并且确定所定义的许可是否合适。如果系统管理员确定需要修改,则修改策略文件124(图1和图2)。在“安装包”块216期间,将应用包144安装在计算系统102上,以便创建最终的应用114(图1和图2)。
最后,过程200前进到“结束D&D AP”块219,在此完成过程200。在该例中,尽管被描述为单个过程200,然而块204、206、208和210可以被特性化为开发过程220的一部分,并且块212、214和216可以作为部署过程230的一部分。换句话说,过程220和过程230是不同的过程,它们可以在不同的计算系统上由不同的实体执行,并且仅仅是为了方便而将其示为单个过程200的一部分。应当理解,在开发和部署过程200期间,可以多次进入块204、206、208、210、212、214和216中的每一个。例如,在块210期间,签署者可以确定许可元数据文件118是有所不足还是过于限制,并且可以将代码116和许可元数据文件118返回给开发者用于修改。
图5是执行应用114的运行时过程250的流程图。在该例中,过程250存储于数据存储器112(图1),并且在CPU 104(图1)上执行。在一个实施例和下面的例子中,过程250被合并到由加利福尼亚州Santa Clara的Sun微系统公司发布的Java运行时环境(JRE)(未示出)。
过程250开始于“开始执行应用”块252,并且控制立即前进到“装载应用”块254。在块254期间,过程250将应用114(图1和图2)装载到CPU 104中。在“检索指令”块256期间,过程250得到在应用114中第一未执行的指令。每次过程250进入块256,所检索到的指令在以下描述中均称作“当前”指令。
在“检查许可”块258期间,为了获得与在块256期间检索到的指令相关的信息,过程250扫描与应用114关联的许可元数据文件118。例如,如果当前指令要求写入数据存储器112的特定目录,则过程250为了参考特定目录以及启动应用114的用户而确定扫描文件条目150(图3)。在“许可允许?”块260期间,过程250确定许可文件118是否允许或不允许执行当前指令。如果文件118允许执行,则过程250前进到“检查策略”块262,在此期间,为了与当前指令相关的信息而扫描策略文件124。
在“策略允许?”块264期间,过程250确定策略文件124是否允许或不允许执行当前指令。如果文件124允许执行,则过程250前进到“执行指令”块266,在此期间,JRE执行指令。
在“许可允许?”块260期间或者在“策略允许?”块264期间,如果过程250确定当前指令的执行将相应地违犯文件118或124,则过程250前进到“抛出异常(Throw Exception)”块268。在块268期间,JRE采取合适的动作来从执行拒绝中恢复。取决于如何处理异常,这可以包括通知启动应用114的执行和/或应用114的终止的人。在该例中,当处理了在块268期间抛出的异常之后,JRE采取合适的动作,简单地检索下一指令并且继续处理。编程领域的技术人员应当熟悉编程和使用抛出的异常。
当在块266期间执行当前指令之后,或者在该例中,当在块268期间抛出异常之后,过程250前进到“更多的指令?”块270,在此期间,过程250确定在应用114中是否存在另外的未执行的指令。如果是的话,则过程250返回到块256,检索下一指令,并且如上所述继续处理。如果过程250确定没有未执行的指令,则控制前进到“结束执行应用”块279,在此完成过程250和应用114。
虽然已经针对其特定的实施例示出并且描述了本发明,但是本领域的技术人员可以理解到,在不背离本发明的精神和范围的情况下,可以在形式和细节上对其进行前述的和其它的改变,所述改变包括但不限于以相同的或不同的顺序所实现的附加的、更少的或修改的元素和/或附加的、更少的或修改的模块。
权利要求
1.一种用于在软件应用中设置安全参数的方法,所述方法包括设置对应于所述软件应用的元数据安全参数;依据对所述应用和所述元数据安全参数的验证,安全地签署所述应用和所述元数据安全参数;设置部署安全参数,所述部署安全参数对应于所述软件应用的部署者对于所述应用和所述元数据安全参数的签署者所具有的信任级别;以及在与所述元数据安全参数和所述部署安全参数所表示的安全级别中较小的安全级别相关联的安全级别上部署所述应用。
2.根据权利要求1的方法,其进一步包括设置签署者安全参数,其中所述部署的安全级别是所述元数据、签署者和部署安全参数所表示的安全级别中较大的安全级别。
3.根据权利要求1的方法,其中所述元数据和部署安全参数对应于用于计算机代码的安全级别。
4.根据权利要求1的方法,其进一步包括在所述软件应用的指令上执行运行时检查,从而确保所述指令所要求的安全级别不超过所部署的安全级别。
5.根据权利要求4的方法,其中由JAVA运行时引擎执行所述运行时检查。
6.根据权利要求1的方法,其中所述元数据安全参数和所述部署安全参数与Java安全策略一致。
7.根据权利要求1的方法,其中由所述软件应用的开发者定义所述元数据安全参数。
8.一种用于在软件应用中设置安全参数的系统,所述系统包括元数据安全参数,所述元数据安全参数对应于所述软件应用;证书和签名,所述证书和签名对应于检验所述软件应用和所述元数据安全参数的软件应用;部署安全参数,所述部署安全参数对应于所述软件应用的部署者对于产生所述证书和签名的签署者所具有的信任级别;以及用于部署的逻辑,所述用于部署的逻辑在与所述元数据安全参数和所述部署安全参数所表示的安全级别中较小的安全级别相关联的安全级别上部署所述应用。
9.根据权利要求8的系统,其进一步包括由所述签署者定义的签署者安全参数,其中所述用于部署的逻辑在所述元数据和部署安全参数所表示的安全级别中较小的安全级别上设置所述部署的安全级别。
10.根据权利要求8的系统,其中所述元数据和部署安全参数对应于用于计算机代码的安全级别。
11.根据权利要求8的系统,其进一步包括运行时检查,所述运行时检查实现于所述软件应用的正在执行的指令上,从而确保所述指令所要求的安全级别不超过所部署的安全级别。
12.根据权利要求11的系统,其中由JAVA运行时环境执行所述运行时检查。
13.根据权利要求8的系统,其中所述元数据安全参数和所述部署安全参数与Java安全策略一致。
14.根据权利要求8的系统,其中由所述软件应用的开发者定义所述元数据安全参数。
全文摘要
本发明提供了一种用于在计算机应用中定义安全许可的方法,该方法采用将对安全许可的分派分布于软件开发和交付过程的多个层面之中的方式来定义所述安全许可。开发者将对特定应用的许可定义为元数据,并且将所述许可保存在连同所述应用所存储的许可元数据文件中。签署者检查所述应用和许可文件,并且如果满足已经适当地设置了所述文件中合适的许可级别,则批准或“签署”所述应用。一旦所述签署者已经批准或签署了所述应用和所述许可文件中的许可,就部署所述应用,或者将所述应用提供给以所述许可文件所允许的最大许可在计算系统上安装所述应用的用户。通过向所述应用添加策略文件,所述用户可以进一步限制由所述开发者授权的许可的范围。
文档编号G06F21/22GK101046838SQ20071009155
公开日2007年10月3日 申请日期2007年3月27日 优先权日2006年3月28日
发明者B·J·哈格里夫, P·科恩斯, B·C·里德 申请人:国际商业机器公司, Osgi联合公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1