在线工博会

网格计算面临的安全问题和解决方案
上海超级计算中心 徐德发
为节省流量,手机版未显示文章中的图片,请点击此处浏览网页版
摘要: 本文论述了网格计算环境下的安全问题及安全策略并介绍了国际上最新的网格安全体系结构。这个结构已被实验证明是可用的,而且还为更多先进机制的发展提供了坚实的基础。最后介绍了Globus的网格安全解决方案,并对我国网格安全的研究提出了建议。
一、引言
人类的应用需求正迅速朝着高性能、多样性、多功能发展,许多大规模科学计算应用不仅仅需要一台高性能计算机,它还更需要由多种机器组成、多个系统合作、多台科学仪器相连的网络虚拟超级计算机。这些应用要求将地理上分布的、异构的多种计算资源通过高速网络连接起来,共同完成计算问题。网格计算(Grid Computing)就是在这种背景下诞生的。网格计算虽然出现只有短短几年,但近来对网格计算的研究却有明显加快的趋势。国外的一些政府部门、研究机构、大学和企业加大了投资力度,纷纷启动了新一轮的研究计划和项目,力图在这一研究领域保持领先地位和抢得未来应用市场的先机。我国也出现了类似的研究热潮,国家将投入大量人力、财力从事网格计算研究。
网格计算的最大优点之一是有利于地理上分布的各种计算资源和数据资源的共享,但这些共享必须建立在安全访问的基础上。本文将对网格计算所涉及到的安全问题、安全要求、安全策略、安全体系结构及安全解决方案等方面逐一进行介绍。
二、网格计算面临的安全问题
网格计算的应用与传统的客户/服务器应用的不同在于:它要求同时使用大量的资源、动态的资源请求、对多个管理域中资源的使用、复杂的通信结构,以及严格的性能要求等。
由于可扩展性的要求,性能和异构是任何分布式系统的奋斗目标,但网格计算的特点导致了在分布式系统中已有的安全技术尚不能解决的问题。例如:由多个可计算资源组成的并行计算要求建立的安全关系要比客户/服务器模式复杂得多,涉及多个管理域;网格计算的动态特征使得应用在执行前不可能在站点之间建立信任关系;网格所使用的域间安全解决方案必须能与不同的域内访问控制技术协同工作,甚至代替其工作。
具体地说,网格计算所面临的安全问题可以分为三类:现有系统和技术的集成;不同主机环境协同工作的能力;相互影响的主机环境之间的信任关系。
技术集成
不论是出于技术原因还是其他原因,期望某一种安全技术来解决所有网格计算的安全问题是不现实的。现有的安全架构不可能在一夜之间被取代。例如:网格环境中的每一个域可能有一个或多个用来存放用户帐户的寄存器(如: LDAP 目录),这些寄存器是不可能与其他组织或域共享的。同样,现有环境中被认为安全可靠的认证机制也会继续使用。因此,这些倾向于使用单一模式或机制的技术不大可能轻易被取代。
为了获得成功,网格安全体系结构需要过渡到对现有安全体系结构和跨平台、跨主机模式的集成。这意味着该体系结构可由现有的安全机制(如:Kerberos,PKI)来实现,同时,要有可扩展性和可集成性。
协同工作的能力
穿越多个域和主机环境的服务需要能够互相影响,协同工作。协同工作能力主要表现在下面几个层面。
协议层:我们需要域间交换信息的机制,这可以通过SOAP/HTTP获得。
策略层:为了进行安全的会话,参与协同工作的每一方必须能够详细说明它想要的任何策略,同时这些策略也要能容易地被其它方所理解。这样,各方才能尝试建立安全的通信信道和有关互相认证、信任关系的安全语义。
身份鉴定层:我们需要有从一个域中可以鉴定另一个域中用户身份的机制。这种要求超过了定义信任关系和在安全机制间(如:从Kerberos 票据到X.509证书)获得联盟的需要。如果一种确定的身份可以被预先定义成跨越多个域,这当然最好,但实际上往往做不到。为了在安全环境中成功实现跨越多个域,必须要实现身份和信任的映射,这可以通过代理服务器或信任代理来完成。
信任关系
网格服务需要跨越多个安全域,这些域中的信任关系在点对点的跨越中起着重要的作用。每一种服务要将它的访问要求阐述清楚,这样,需要访问这些服务的实体就可以安全地访问。端点间的信任关系应该用策略来清楚地描述。信任的建立过程对每个会话来说或许是一次性的活动,也有可能对于每一次请求都要动态地进行评估。由于网格的动态特性,有些情况下不可能在应用程序执行前预先在这些域中建立信任关系。总之,网格环境中的信任关系非常复杂,它需要支持动态的、用户控制的配置和瞬间服务的管理。瞬间服务是用户为了执行特定请求任务而生成的,这些任务甚至包括用户代码的执行。
综上所述,解决网格环境的安全问题可分为以下三个研究领域:
(1) 集成解决方案
着重解决如何使用现有的服务以及接口应该被抽象成可扩展的体系结构。
(2) 协同工作能力解决方案
着重解决如何在有着不同安全机制和策略的虚拟组织中的服务的互相调用问题。
(3) 信任策略解决方案
着重解决如何在动态网格环境下定义、管理、执行信任策略。
三、网格计算的安全要求
网格系统和应用要求所有的标准安全功能,包括认证、访问控制、完整性、隐私权和抗抵赖性。这里主要讨论认证和访问控制。尤其是:(1)提供认证解决方案,允许用户,包含用户计算的过程以及该过程使用的资源来证明彼此的身份。(2)在任何时候都尽可能地不改变访问控制机制。认证形成了安全政策的基础,使得各个局部安全策略被集成为一个全局框架。
要开发一种满足这些要求的安全体系结构,需要满足以下的限制条件:
单一登陆点:用户只需要在开始计算时进行一次认证;在获得资源、使用资源、释放资源、内部通信时不用对用户进行再次的认证。
信用凭证保护:用户的凭证(密码,密钥等)必须受到保护。
局部安全方案的互用性:当安全解决方案能提供域间访问控制机制时,对局部资源的访问应由本地安全机制决定。但是,改变局部资源来适应域间访问是不现实的,这要求有一个或多个实体作为局部资源的远程客户/用户代理。
可公开性:要求代码在多个测试床上是可公开的和可执行的。
统一的认证结构:域间访问要求用最小的、通用的方法来表示安全主体(如一个用户或一个资源)。因此必须使用标准的认证标准(如X.509)。
支持安全组通信:通信可能包括许多过程,这些过程需要一个组来协调它们的活动。因此,需要支持动态组的安全通信。
支持多项实施方案:安全策略不能是专为一项特定的应用技术而定。它应该可以应用于大量的基于公钥和密码的系统中。
四、网格计算的安全策略
在下面的讨论中,首先定义相关的安全术语:
主体(Subject):它是安全操作中的一个参与者,在网格系统中一个主体通常是一个用户、一个代表用户的过程操作、一个资源(例如:一台计算机或一个文件),或者是一个代表资源的过程执行。
凭证(Credential):它是用于证明主体身份的一条消息。口令和认证就是凭证的例子。
鉴别(Authentication):是主体向请求者证明自己身份的过程,通常使用一个凭证。两方(请求者和被请求者)鉴别是彼此之间同时鉴定的相互鉴别(鉴定别人时,自己也被鉴定)。
对象(Object):是被安全策略保护的一个资源。
授权(Authorization):是一个过程,由我们决定是否允许一个主体访问或使用一个对象。
信任域(Trust domain):一个信任域,就是一个被单一管理和单一安全策略支配的主体和客体的集合。
利用这些术语,定义安全策略如下:
网格环境包括多个信任域。
该策略元素说明网格安全策略必须集成一个局部可管理的用户和资源的异构集合。总体上,网格环境将限制或不影响局部安全策略。这样,我们既不用代替局部安全策略,也不能覆盖局部策略决定。因此,网格安全策略必须集中于域间相互作用和映射域间操作为局部安全策略。
单一信任域内的操作仅受局部安全策略的影响。
网格安全策略没有在局部操作中额外增加安全操作和服务。局部安全策略可通过许多种方法来执行,包括防火墙、Kerberos 和SSH。
对每个信任域,都存在一个从全局到局部主体的映像。
实际上,每个资源用户将有两个名字,一个全局名字和一个局部资源名字。全局名字到局部名字的映像是特定的位置说明。
位于不同信任域的实体间的操作要求相互鉴别。
一个被鉴别的全局主体映像为一个局部主体被看作等同于局部主体的本地认证。
换言之,在一个信任域内,网格鉴别策略和局部映像的结合满足于主机域内的安全对象。
所有访问控制决定都由局部主体在本地做出。
该策略组成部分要求访问控制决定权保留在局部系统管理员手中。
一个程序或过程可以代表用户操作,从属于用户权利的子集。
该策略对支持长生命周期程序的执行是必须的,这些程序可以获得动态资源而无需额外的用户相互作用。它也要求支持过程的创建。
代表同一信任域内同一主体的过程可以共享一个单一的信用集。
网格计算可能包含一个单一资源上的上百个进程。该策略组成部分通过避免为每个过程创建一个唯一凭证,使安全结构可扩展到大规模的并行应用。
五、网格安全体系结构
前面定义的安全策略为我们构建一个明确的安全体系结构提供了基础。图一给出了安全体系结构的概况。

(图片)

图一 网格计算的安全体系结构

上图中,我们感兴趣的是计算环境,体系结构中的主体和对象必须包含组成计算的实体。一个计算包括许多过程,每个过程代表一个用户。这样,主体是用户和过程。该体系结构中的对象包括可用于网格环境中的大范围的资源:计算机、数据仓库、网络、显示设备等。
网格计算可能动态地缩放,在需要解决问题的时候得到资源,在不需要的时候释放资源。每次计算得到资源,它就代表一个特定的用户。由于涉及的资源数量可能很多,并且一些应用程序可能运行很长时间(几天或几周),用户可能就希望计算执行过程中能够不需要干预。因此我们引入了用户代理的概念,在没有用户干预的情况下代替用户的行为。
由于该体系结构侧重于用户、资源和过程的鉴别,因此支持用户到资源、资源到用户、过程到资源、过程到过程的鉴别。除此以外,它还提供与本地策略的相互协作及对不同资源的动态请求等。
六、网格安全的一种具体解决方案
Globus是目前国际上最具有影响的网格计算项目之一,它是由多个机构联合开发的项目,力图不仅在科学计算领域,而且在商业领域对各种应用进行广泛的、基础性的网格环境支持,实现更方便的信息共享和互操作。
GSI(Grid Security Infrastructure)是Globus的安全基础构件包,是保证网格计算安全性的核心。GSI支持用户代理、资源代理、认证机构和协议的实现。

(图片)

图二 GSS—API在Globus中的使用

为了对协议和机制进行隔离(如图二),GSI采用GSS-API(Generic Security Service application programming interface) 作为其安全编程接口。GSS-API定义提供了通用的安全服务,支持各种安全机制和技术,还支持应用程序在源码级的可移植性。GSS-API主要面向主体之间的安全鉴别和安全通信操作,它提供的功能包括:获得证书、执行安全鉴别、签署消息和加密消息等。
GSS-API在安全传输和安全机制上是独立的,这体现在两个方面:(1)传输独立性:GSS不依赖于特定的通信方法或通信库,而且某个GSS调用会产生一系列的标记并进行通信,目前可支持 TCP、UDP等通信协议;(2)机制独立性:GSS不依赖于特定的安全算法,如 Kerberos、DES、RSA公钥密码等。GSS是根据安全操作过程定义相应的函数,每个操作可通过不同的安全机制进行实现。
GSS-API符合简单公钥体制SPKM(Simple Public Key Mechanism),而SPKM的密钥管理与 X.509兼容。GSS-API支持在安全上下文建立过程中的安全授权数据通信,当然,GSS-API也支持其它的安全机制。为了保证对通信内容的保密性和高效性,可对通信内容进行加密,并提供某种程度的服务质量(QoS)。
Globus项目的GSI 是解决网格计算中安全问题的一个集成方案,已经成功应用于一个连接4个国家近20家机构的实验网。GSI的特点在于在保证网格计算安全性的同时,尽量方便用户和各种服务的交互。GSI还充分利用了现有的网络安全技术并对其中某些部分进行了扩充,使得在网格计算环境下 GSI拥有一个一致的安全性界面,极大地方便了网格应用的开发和使用。
七、结束语
不可否认,网格安全问题是网格计算中的一个核心问题。网格计算研究的特点之一是网格计算会将现有的各种标准协议有机地融合在一起,从而可无缝地将这些协议和技术集成到网格计算的环境中。因此,根据我国的国情,我们建议我国网格安全的研究要着重于以下几个方面:
1. 网格安全解决方案要充分利用现有的网络安全技术并对其进行扩充、融合。
2. 由于目前网格安全的国际标准还处在制定阶段,我们要尽早地积极研究这些标准并在此基础上提出更符合实际的标准建议,掌握核心技术,为国内厂商在与国外厂商的竞争中争取主动权。
3. 为了国家安全的需要,在与国际标准等同、等效和参照的原则下,制订我国自己的网格安全标准,积极推动国内的安全技术开发和安全产品研制,掌握网格安全产品的自控权和自主权。
参考文献
1.I. Foster , C. Kesselman, G. Tsudik, S. Tuechk : A Security Architecture for Computational Grids,5th ACM Conference on Computer and Communication Security Conference, 1998
2.N. Nagaratnam, P. Janson, J. Dayka, A. Nadalin, F. Siebenlist,V. Welch,I. Foster,S. Tuecke : The Security Architecture for Open Grid Services , 2002
3.都志辉 陈渝 刘鹏 :网格计算,清华大学出版社 , 2002
9/14/2004


电脑版 客户端 关于我们
佳工机电网 - 机电行业首选网站