實現網格計算需要各種動態的資源和有效的通信,因此,對安全提出了更高的需求,網格安全問題是網格計算中的一個核心。正如電網的首要問題是安全一樣,網格計算的安全也是最為重要的。通俗地說,需要重視的安全問題主要來自兩個方面,一是身份驗證的問題,另一個是網格計算必須要受到有序的控制和管理。
形成網格計算環境的要求是不影響各節點本地的管理和自主性,不改變原有的操作系統、網絡協議和服務,但同時要保證遠程節點的安全性,允許遠程節點選擇加入或退出,盡量使用已存在的標準以便和已有應用兼容并能提供可靠的容錯機制。一個理想的網格計算應類似于目前的Web服務,可以構建在當前所有的硬件和軟件平臺上,給訪問者提供完全透明的計算環境。對用戶而言,它是把眾多異構的資源變成了同構的虛擬計算環境。
一、網格的特殊性
我們將通過一個例子分析網格的特殊性。設想一個科學家,在一個合作團體中進行科學研究,他從同事那里收到一封關于新數據集的電子郵件,然后啟動一個分析程序(站點A),該分析程序分配代碼到遠端數據存儲的位置(站點C)。開始后,分析程序決定要運行一個仿真程序,以便將實際結果和期望的結果相比較。因此,它與一個通過合作維持的資源代理服務器相聯系(站點D),用以查找能夠用于仿真的空閑資源。然后,資源代理在兩個站點(E和G)初始化計算,這些計算機(E和G)訪問存放在另一個站點(F)的文件系統中的參數值,進行彼此之間,或與代理、原始站點及用戶之間進行通信(可能使用特定的協議,例如多播)。
這個例子顯示了網格計算環境具有許多特殊屬性:
● 用戶數量龐大且為動態,參與者變化的頻率較高;
● 資源池龐大,且動態可變;
● 一個計算(由計算創建的過程)可能要求在執行期間動態地使用或釋放資源;
● 組成計算的進程可以用不同的機制進行通信,包括單播和多播,程序執行期間,低級別的通信連接(例如TCP/IP套接字)可能被動態地創建或撤銷;
● 資源可支持不同的認證和授權機制,這包括Kerberos、明文口令、安全套接協議(SSL)、Secure Shell(SSH);
● 用戶在不同的資源上可有不同的標識;
● 資源和用戶可屬于多個組織。
正是由于網格計算環境的特殊性,所以在設計網格安全機制中特別要考慮網格計算環境的動態主體特性,并要保證網格計算環境中不同主體間的相互鑒別和各主體間通信的保密性和完整性。
網格計算面臨的問題是提供安全解決方案,以使如上面的計算能調整不同的訪問控制策略并能在不同性質的環境中安全運行。
二、網格安全需求
網格系統及其應用需要全部的標準安全功能,包括認證、訪問控制、完整性、保密性和抗抵賴性。這里著重敘述認證和訪問控制問題。它致力于解決:(1)提供認證解決方案,允許用戶、組成計算的進程和這些進程使用的資源之間彼此相互驗證;(2)在任何時候都盡可能地不改變訪問控制機制。認證形成了安全政策的基礎,使得各個局部安全策略被集成為一個全局框架。
要開發一個滿足這些要求的安全體系結構,需要滿足以下的限制條件:
● 單點登錄:用戶只需認證一次就可獲取、利用和釋放資源;
● 認證保護:用戶認證(密碼、密鑰等)受到保護;
● 本地安全解決方案的互用性:當安全解決方案能提供域間訪問控制機制時,對局部資源的訪問應由本地安全機制決定。但是,改變每個局部資源來適應域間訪問是不現實的,這要求有一個或多個實體作為局部資源的遠程客戶/用戶代理;
● 可輸出性:希望代碼能在多國試驗平臺上輸出和執行;
● 統一的認證機構:域間訪問用最小的、通用的方法表示安全主體, 如用X.509v3作為標準;
● 支持安全組通信:通信可能包含許多需要作為一組協調活動的進程,當前還沒有安全解決方案支持該性質,即使是GSS-API也一樣;
● 對多項實施方案的支持:安全策略不能專為一項特殊的應用技術而制定。
三、網格安全定義
首先要定義安全術語。
● 主體(Subject): 它是安全操作中的一個參與者,在網格系統中,一個主體通常是一個用戶、一個代表用戶的過程操作、一個資源(例如:一臺計算機或一個文件),或者是一個代表資源的過程執行;
● 憑證(Credential): 它是用于證明主體身份的一條信息,口令和認證就是憑證的實例;
● 鑒別(Authentication): 是主體向請求者證明自己身份的過程,通常使用一個憑證; 兩方(請求者和被請求者)鑒別是彼此之間同時鑒定(鑒定別人時自己也被鑒定);
● 對象(Object): 是被安全策略保護的一個資源;
● 授權(Authorization): 是一個進程,由我們決定是否允許一個主體訪問或使用一個對象;
● 信任域(Trust Domain): 一個信任域就是一個被單一管理和單一安全策略支配的主體和客體的集合。
利用這些術語,可定義安全策略如下。
1.網格環境包括多個信任域
該策略元素說明網格安全策略必須集成一個局部可管理的用戶和資源,形成異構集合?傮w上,網格環境限制或者不影響局部安全策略。這樣,我們既不用代替局部安全策略,也不允許覆蓋局部策略。因此,網格安全策略必須集中于控制域間相互作用和映射域間操作為局部安全策略。
2.單一信任域內的操作僅受局部安全策略的影響
網格安全策略沒有在局部操作中額外增加安全操作和服務。局部安全策略可通過許多種方法來執行,包括防火墻、Kerberos和SSH。
3.對每個信任域都存在一個從全局到局部主體的映象
4.位于不同信任域的實體間的操作需要相互鑒別
5.一個映象為局部主體的被鑒別全局主體等同于局部主體的本地認證
6.所有訪問控制決定都由局部主體在本地做出
7.一個程序或過程可以代表用戶操作,從屬于用戶權利的子集
這里強調安全策略是體系結構化的,不需要任何原因的局部秘密(如密碼)。輸出控制法則考慮的加密技術是復雜的、動態的、并且是因國家而異的。因此,在設計時最好避開這些問題。我們還注意到,該策略的推動使網格計算環境中遇到的各種本地安全策略的統一成為可能。
四、典型網格安全實現
目前的Globus可以認為是網格技術的典型代表和事實上的規范。GSI是Globus的安全基礎構件工具包,是網格安全體系結構的一個實現。
GSI安全策略實現主要包含三部分內容:通用安全服務編程接口GSS-API(Generic Security Service API)、安全認證管理和用戶代理的實現。GSI著重解決認證問題。為了支持用戶認證,Globus的安全認證管理實現手段主要包括建立Globus安全認證中心、用TIS MOSS軟件生成使用證書、綁定本地名字和證書上的名字、撤回證書、從本地節點消除用戶等。有關用戶代理的實現可參見Globus中GSI相關資源代碼和文獻,在此不贅述。下面主要介紹GSS-API,如圖所示。
Globus的GSI安全策略沒有解決可移植性的問題,當然這也不是它主要關注的。如果提供一組通用安全編程接口實現和完成對上述Globus安全組成部分的訪問,則可解決可移植性問題,為此Globus采用GSS-API作為其安全編程接口。GSS-API定義提供了通用的安全服務,支持各種安全機制和技術,這樣可支持應用程序在源碼級的可移植性。GSS-API主要面向主體之間的安全鑒別和安全通信操作,提供的功能主要包括:獲得證書、執行安全鑒別、簽署消息和加密消息。
GSS-API在安全傳輸和安全機制上是獨立的,主要體現在兩個方面: (1)傳輸獨立性:GSS不依賴于特定的通信方法或通信庫,而且某個GSS調用會產生一系列的標記并進行通信,目前可支持TCP、UDP和Nexus等通信協議;(2)機制獨立性:指GSS不依賴于特定的安全算法,如Kerberos、SESAM、DES、RSA公鑰密碼等,GSS是根據安全操作過程定義相應的函數,每個操作可通過不同的安全機制實現。
GSS-API符合簡單公鑰機制SPKM(Simple Public Key Mechanism),而且SPKM的密鑰管理與X.509和PEM兼容。GSS-API支持在安全環境建立過程中的安全授權數據通信,當然,GSS-API也將支持其他的安全機制。而GSS-API中安全環境的建立與用戶本地的安全證書相關。用戶也可有多個安全環境,但這需要相同或不同的安全證書集合。
為了支持點到點的安全環境的建立,應用程序必須確定底層安全機制(如SPKM、Kerberos、SESAM等),并且交互雙方都要支持某種機制,這樣才能進行安全通信。為了保證對通信內容的保密性和高效性,GSS-API允許用戶選擇是否對通信內容進行加密,并提供某種程度的服務質量QoS。
直接使用GSS-API進行基于網格計算環境的安全編程比較復雜,而且GSS-API函數不支持I/O操作,主要由gss_init-sec_context和gss_accept-sec_context返回標記。為了進一步簡化Globus的安全編程,Globus提出了用于Globus環境的gss_assist庫,gss_assist庫封裝了GSS-API,并提供更簡單的編程接口來方便應用程序的開發。GSS-API主要包含兩大方面的控制: (1)安全證書的控制:每個進程一個證書,有本地用戶和服務器的標識,通過gss_cred_id_t結構來表示,這可能是一個靜態變量;(2)安全環境的控制:每個連接一個安全環境,在安全鑒別過程中建立,通過gss_cred_id_t結構來表示。
通過使用gss_assist庫可極大方便基于網格計算環境的安全編程。一般的客戶與服務器間的交互流程如下:
1. 在客戶端和服務器端獲得安全證書;
2. 在客戶端和服務器端建立安全環境;
3. 雙方進行安全鑒別;
4. 通過安全鑒別后,雙方可進行交互;
5. 交互完成后,雙方清除安全環境。
若還想進一步了解有關GSS-API的細節,可參考RFC 2744文檔。
總之,網格安全問題是網格計算中的一個核心問題,而Globus中的GSI是一個解決網格計算中安全問題的一個集成方案。其特點是在保證網格計算安全性的同時,盡量方便用戶和各種服務的交互(如提供單點登錄等手段)。GSI充分利用了現有的網絡安全技術(如X.509、Kerberos、SSL),并對某些功能進行擴展(如增加客戶服務器間的相互鑒別、支持對SSL和FTP的擴展),使得在網格計算環境下GSI具有一個一致安全性界面,極大方便了網格的開發和使用。
<