《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于Java安全體系結(jié)構(gòu)的托管PaaS平臺(tái)安全容器
基于Java安全體系結(jié)構(gòu)的托管PaaS平臺(tái)安全容器
來源:電子技術(shù)應(yīng)用2013年第1期
楊莎莎1,楊放春1, 王 蔚2
1. 北京郵電大學(xué) 網(wǎng)絡(luò)與交換技術(shù)國家重點(diǎn)實(shí)驗(yàn)室, 北京 100876; 2. 中興通訊股份有限公司, 江蘇 南京210000
摘要: 分析了PaaS云平臺(tái)的特征及其面臨的一些安全問題,及現(xiàn)有解決方案存在的不足,在此基礎(chǔ)上提出新的解決方案——基于Java安全體系結(jié)構(gòu)的托管PaaS平臺(tái)安全容器。
中圖分類號: TP311
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2013)01-0132-04
A novel secure servlet container in PaaS based on the Java security architecture
Yang Shasha1, Yang Fangchun1, Wang Wei2
1. State Key Laboratory of Networking and Switching Technology, Beijing University of Posts and Telecommunications, Beijing 100876, China; 2. ZTE Corporation, Nanjing 210000, China
Abstract: This paper analyzed the security challenges of PaaS and propose a secure servlet container which is designed based on the Java security architecture to deal with the security problems in PaaS.
Key words : Cloud Computing; PaaS; secure servlet container; Java security architecture

    云計(jì)算是一種新興的商業(yè)計(jì)算模式,它將計(jì)算任務(wù)分布在大量計(jì)算機(jī)構(gòu)成的資源池上,使各種應(yīng)用系統(tǒng)能夠根據(jù)需要獲取計(jì)算能力、存儲(chǔ)空間和各種軟件服務(wù)[1]。云計(jì)算代表了IT領(lǐng)域向集約化、規(guī)?;c專業(yè)化道路發(fā)展的趨勢,是IT領(lǐng)域正在發(fā)生的深刻變革,但它在提高使用效率的同時(shí),為實(shí)現(xiàn)用戶信息資產(chǎn)安全與隱私保護(hù)帶來極大的沖擊與挑戰(zhàn)[2]。當(dāng)前,安全問題已成為云計(jì)算推廣應(yīng)用的最主要的制約因素,因此,云安全問題成為必須解決的問題之一[4]。

   平臺(tái)即服務(wù)PaaS(Platform-as-a-Service)作為云計(jì)算的一種,是將基礎(chǔ)設(shè)施平臺(tái)作為一種服務(wù)呈現(xiàn)給用戶的商業(yè)模式,方案成本比較低。對那些資金有限、IT服務(wù)資源有限,并且急需擴(kuò)展IT基礎(chǔ)支撐的企業(yè)有著巨大的吸引力[3]。同時(shí),PaaS也是SaaS模式的一種應(yīng)用,它降低了SaaS開發(fā)應(yīng)用的門檻,提高了開發(fā)效率,充分體現(xiàn)了互聯(lián)網(wǎng)低成本、高效率、規(guī)?;瘧?yīng)用的特性,是一場互聯(lián)網(wǎng)應(yīng)用軟件開發(fā)的革命。
    本文首先分析了現(xiàn)有PaaS平臺(tái)的特征及其面臨的安全問題,然后介紹了現(xiàn)有解決方案及其不足,最后提出了一種基于Java安全體系結(jié)構(gòu)的托管PaaS平臺(tái)安全容器解決方案。
1 托管PaaS平臺(tái)及其安全問題
1.1 托管PaaS平臺(tái)

    PaaS提供基于基礎(chǔ)設(shè)施(即IaaS)上的軟件、中間件和應(yīng)用開發(fā)工具[8]。不同的PaaS提供不同組合的服務(wù),綜合的PaaS是一個(gè)集開發(fā)、測試、部署、托管和應(yīng)用維護(hù)為一體的集成運(yùn)維環(huán)境,有的PaaS還提供源代碼和版本控制等應(yīng)用軟件開發(fā)的過程管理[6]。從PaaS環(huán)境的應(yīng)用支撐環(huán)境出發(fā),典型的PaaS系統(tǒng)分為兩類:開放PaaS平臺(tái)和托管PaaS平臺(tái)。其中托管PaaS平臺(tái)只提供包含安全和可伸縮性等基本功能的托管服務(wù),不提供開發(fā)和測試環(huán)境。
1.2 托管PaaS平臺(tái)的安全問題
    托管PaaS平臺(tái)為了實(shí)現(xiàn)可擴(kuò)展、可用性、管理以及運(yùn)行效率等方面的“經(jīng)濟(jì)性”,基本都采用多租戶模式。多租戶PaaS服務(wù)模式的應(yīng)用面臨著一些安全隔離問題[9]。
    (1)云計(jì)算應(yīng)用所用的數(shù)據(jù)會(huì)和其他用戶的數(shù)據(jù)混合存儲(chǔ),惡意的云服務(wù)提供商、惡意的鄰居“租戶”以及某些類型應(yīng)用的濫用會(huì)造成用戶數(shù)據(jù)安全問題;
    (2)不同用戶的應(yīng)用共同運(yùn)行在一個(gè)JVM之上,對JVM的非法操作會(huì)造成鄰居租戶的應(yīng)用安全問題,例如惡意應(yīng)用通過系統(tǒng)調(diào)用使JVM退出;
    (3) 不同用戶的應(yīng)用在運(yùn)行過程中共享系統(tǒng)資源,如CPU、內(nèi)存、網(wǎng)絡(luò)資源等。惡意應(yīng)用對共享資源過多的非法占用將會(huì)造成鄰居租戶應(yīng)用無法正常運(yùn)行。
1.3 PaaS平臺(tái)安全問題一般解決方案
   在多租戶PaaS模式中,最核心的安全原則就是多租戶應(yīng)用隔離[7]。云用戶確保自己的數(shù)據(jù)只能被自己的企業(yè)用戶和應(yīng)用程序訪問。為了實(shí)現(xiàn)多租戶應(yīng)用隔離,云提供商必須提供“沙盒”架構(gòu),通過平臺(tái)的“沙盒”性實(shí)現(xiàn)集中維護(hù)客戶部署在PaaS平臺(tái)上應(yīng)用的保密性和完整性。為了提供“沙盒”架構(gòu),現(xiàn)有云提供商通過為每一個(gè)用戶應(yīng)用提供一個(gè)Servlet容器的方法來實(shí)現(xiàn)邏輯上的隔離,例如Google App Engine為每一個(gè)應(yīng)用運(yùn)行一個(gè)獨(dú)有的Jetty容器。
    現(xiàn)有解決方案能有效提供平臺(tái)的“沙盒”架構(gòu),實(shí)現(xiàn)多租戶應(yīng)用隔離,但是同時(shí),多租戶模式下運(yùn)行多個(gè)Servlet容器的模式會(huì)帶來較大的系統(tǒng)開銷。本文在現(xiàn)有解決方案的基礎(chǔ)上,提出了一種由一個(gè)Servlet容器承載不同應(yīng)用的解決方案,在實(shí)現(xiàn)多租戶應(yīng)用隔離的同時(shí)保證系統(tǒng)性能。
2 托管PaaS平臺(tái)安全容器設(shè)計(jì)
    本研究中,基于Java實(shí)現(xiàn)托管PaaS平臺(tái),采用Jetty作為Servlet容器,實(shí)現(xiàn)對Java Web應(yīng)用的托管服務(wù)。
    自Java技術(shù)出現(xiàn)以來,Java平臺(tái)的安全問題以及應(yīng)用Java技術(shù)而產(chǎn)生的安全問題引起了廣泛的關(guān)注,并從JDK1.0以來,Java的安全體系結(jié)構(gòu)不斷演變,安全也不斷得到加強(qiáng),如今Java技術(shù)已能提供對安全的良好支持。本文提出的PaaS平臺(tái)安全容器,就是利用Java技術(shù)提供的安全性,并在此基礎(chǔ)上結(jié)合托管PaaS平臺(tái)特點(diǎn)進(jìn)行定制而實(shí)現(xiàn)的。
2.1 Java安全體系結(jié)構(gòu)
    Java技術(shù)從多個(gè)方面提供了對安全性的支持:Java語言本身安全性;虛擬機(jī)的雙親委托類加載機(jī)制;安全管理器和Java API。這些共同構(gòu)成了Java安全體系結(jié)構(gòu),即沙盒模型:一個(gè)支持靈活的細(xì)粒度訪問控制安全策略,并且具有可擴(kuò)充性和伸縮性的安全體系結(jié)構(gòu)。 Java沙盒采用了靈活的保護(hù)域安全模型, 由安全策略來決定代碼具有的訪問許可,對被保護(hù)資源的訪問會(huì)激發(fā)安全檢查,這些檢查會(huì)將授權(quán)的許可和其試圖訪問所需要的權(quán)限進(jìn)行比較。這些激發(fā)安全檢查的訪問包括文件系統(tǒng)訪問、JNI訪問本地代碼和創(chuàng)建Socket連接等。
2.2 托管PaaS安全容器
    利用Java沙盒模型提供的訪問控制功能,可以將同一JVM中運(yùn)行的代碼從邏輯上分開:分別運(yùn)行于不同的沙盒中。在本研究中,托管PaaS平臺(tái)安全容器,即基于Java沙盒模型實(shí)現(xiàn)應(yīng)用隔離。
    利用Java沙盒模型可以實(shí)現(xiàn)PaaS平臺(tái)應(yīng)用的訪問控制功能,但同時(shí)也存在一些不足:
    (1) Java安全策略文件實(shí)現(xiàn)代碼和權(quán)限映射,在托管PaaS平臺(tái)上,系統(tǒng)運(yùn)行過程中,用戶不斷上傳新應(yīng)用,這就使得安全策略文件需要不斷修改并生效。
    (2) 用戶上傳Web應(yīng)用多采用war包的形式,Jetty部署應(yīng)用時(shí)會(huì)將其自動(dòng)解壓至臨時(shí)文件夾,這為在安全策略文件中指定該應(yīng)用的代碼位置帶來了困難。
    (3) 在PaaS平臺(tái)中,多租戶應(yīng)用共同運(yùn)行在一個(gè)Jetty容器中。為避免相互影響,這些應(yīng)用只能擁有有限并且相同的資源訪問權(quán)限,通過安全策略文件的形式存在很大的重復(fù),并且JVM實(shí)現(xiàn)安全策略文件到應(yīng)用權(quán)限的映射也會(huì)降低系統(tǒng)性能。
    因此,本研究中,基于托管PaaS平臺(tái)及Jetty和用戶應(yīng)用的特點(diǎn),在Java沙盒模型的基礎(chǔ)上進(jìn)行了擴(kuò)展和定制。其體系結(jié)構(gòu)如圖1所示。

    在托管PaaS平臺(tái)運(yùn)行環(huán)境中,安全容器提供應(yīng)用運(yùn)行受限的環(huán)境,即沙盒環(huán)境。沙盒環(huán)境實(shí)現(xiàn)應(yīng)用運(yùn)行時(shí)5個(gè)方面的訪問控制:文件訪問控制、網(wǎng)絡(luò)訪問控制、多線程控制、JNI訪問控制和System.exit()方法訪問控制。在托管PaaS平臺(tái)運(yùn)行環(huán)境中,安全容器在Java安全體系結(jié)構(gòu)基礎(chǔ)上進(jìn)行擴(kuò)展,實(shí)現(xiàn)了兩套邏輯沙盒模型,在邏輯上把系統(tǒng)代碼和應(yīng)用代碼分開處理,實(shí)現(xiàn)簡化安全策略文件的配置,提高系統(tǒng)性能。
    在托管PaaS平臺(tái)運(yùn)行環(huán)境中,兩套邏輯沙盒模型(默認(rèn)沙盒、應(yīng)用沙盒)分別提供系統(tǒng)代碼和應(yīng)用代碼的運(yùn)行環(huán)境,并實(shí)現(xiàn)相應(yīng)的訪問控制。托管PaaS平臺(tái)運(yùn)行環(huán)境安全模型主要通過保護(hù)域模塊、類加載模塊、安全策略模塊、訪問控制模塊4個(gè)邏輯模塊來實(shí)現(xiàn)。
    (1) 保護(hù)域模塊
    在Java安全體系結(jié)構(gòu)中,域在邏輯上封裝了一組類,并根據(jù)當(dāng)前有效的安全策略,將這組類的實(shí)例賦予一組相同的許可權(quán)限。當(dāng)類加載器將類型裝入Java虛擬機(jī)時(shí),它們將為每個(gè)類型指派一個(gè)保護(hù)域, Java應(yīng)用環(huán)境通過維持代碼到它們的保護(hù)域,再到它們的許可權(quán)限的映射來實(shí)現(xiàn)沙盒。
    在PaaS系統(tǒng)中,定義了兩種安全域:系統(tǒng)保護(hù)域和應(yīng)用保護(hù)域。系統(tǒng)保護(hù)域使用Java安全體系結(jié)構(gòu)中默認(rèn)的域模型,即通過代碼位置及簽名指定保護(hù)域,并通過安全策略文件為其指定權(quán)限。
    類似地,應(yīng)用保護(hù)域由每個(gè)應(yīng)用的AppContext來指定,邏輯上與一個(gè)Web應(yīng)用相對應(yīng)。同時(shí),由于安全容器中所有應(yīng)用擁有特定的有限權(quán)限,可以通過應(yīng)用類加載器直接為應(yīng)用指定權(quán)限集,從而避免安全策略文件到權(quán)限的映射。
    (2) 類加載模塊
    在Java安全體系結(jié)構(gòu)中,由類加載器根據(jù)所加載的所有類或接口的代碼庫和簽名,以及系統(tǒng)的安全策略創(chuàng)建保護(hù)域的實(shí)例,并為每個(gè)類型指派到相應(yīng)的保護(hù)域。
    PaaS平臺(tái)運(yùn)行環(huán)境中實(shí)現(xiàn)了兩套保護(hù)域模型,相應(yīng)地實(shí)現(xiàn)了兩套類加載策略:系統(tǒng)類(Jetty代碼和服務(wù)端代碼)和應(yīng)用類分別由系統(tǒng)類加載器和WebApp類加載器加載。系統(tǒng)類加載器加載代碼時(shí),使用Java安全體系結(jié)構(gòu)默認(rèn)的方式(即代碼位置)為每個(gè)類型指派保護(hù)域。WebApp類加載器加載應(yīng)用類時(shí),根據(jù)該應(yīng)用的AppContext為其指派保護(hù)域,并為此保護(hù)域賦予默認(rèn)應(yīng)用權(quán)限集。
     在Jetty中,應(yīng)用類的加載利用ContextClssLoader的方法,為每一個(gè)應(yīng)用起一個(gè)線程,通過該線程的ContextClassLoader屬性保存一個(gè)ClassLoader實(shí)例的引用,使得此線程的任何語句都可以得到此ClassLoader,然后用來加載類。即在Jetty中,每一個(gè)應(yīng)用由一個(gè)WebAppClassLoader實(shí)例進(jìn)行加載。
    (3) 安全策略模塊
  在Java安全體系結(jié)構(gòu)中,沙盒模型中類和權(quán)限的映射由類加載器加載類時(shí)實(shí)現(xiàn):類加載器創(chuàng)建一個(gè)保護(hù)域的實(shí)例,并根據(jù)當(dāng)前安全策略為該保護(hù)域內(nèi)代碼創(chuàng)建權(quán)限集。
  默認(rèn)沙盒采用Java安全體系結(jié)構(gòu)默認(rèn)的安全策略文件來實(shí)現(xiàn)安全策略,即JVM實(shí)現(xiàn)安全策略文件到保護(hù)域權(quán)限集的映射。應(yīng)用沙盒采用PaaS系統(tǒng)默認(rèn)應(yīng)用安全策略,該策略指定了PaaS系統(tǒng)中應(yīng)用的默認(rèn)權(quán)限集,由WebAppClassLoader加載應(yīng)用類型時(shí)直接指定。
    (4) 訪問控制模塊
  Java安全體系結(jié)構(gòu)中,運(yùn)行于沙盒中的代碼訪問被保護(hù)資源時(shí),由安全管理器進(jìn)行安全檢查,最終實(shí)現(xiàn)對沙盒中代碼的訪問控制。由PaaS平臺(tái)運(yùn)行環(huán)境體系結(jié)構(gòu)圖可知,在PaaS中,為了更好地進(jìn)行應(yīng)用的訪問控制,系統(tǒng)代碼和應(yīng)用代碼分別運(yùn)行于兩套沙盒模型中,并且這兩套沙盒分別采用各自的域模型和安全策略模型。因此,為了實(shí)現(xiàn)訪問控制,需要分別按照兩套邏輯分別進(jìn)行權(quán)限檢查。同時(shí),出于安全的考慮,Java安全體系結(jié)構(gòu)中,JVM實(shí)例某一時(shí)刻最多只能指定一個(gè)安全管理器實(shí)例,因此在PaaS平臺(tái)運(yùn)行托管環(huán)境中,安全管理器需要同時(shí)處理兩套訪問控制邏輯。其訪問控制流程如圖2所示。

    PaaS云平臺(tái)中邏輯結(jié)點(diǎn)均為虛擬機(jī),包括一個(gè)PaaS Manager、一個(gè)FTP服務(wù)器以及若干PaaS Container結(jié)點(diǎn)。測試中,所有虛擬機(jī)性能均相同,CPU個(gè)數(shù)為1,內(nèi)存為1 024 MB。
3.2 安全容器系統(tǒng)開銷測試
    在此測試階段,3臺(tái)Container結(jié)點(diǎn)分別使用以下方式托管應(yīng)用:運(yùn)行一個(gè)Servlet容器,托管一個(gè)用戶應(yīng)用;運(yùn)行一個(gè)Servlet容器,托管3個(gè)不同用戶應(yīng)用;運(yùn)行3個(gè)Servlet容器,分別托管一個(gè)用戶應(yīng)用。系統(tǒng)啟動(dòng)并運(yùn)行穩(wěn)定后,每5 s記錄一次Container占用CPU及內(nèi)存的情況。測試結(jié)果分別如圖4、圖5所示。

    由測試結(jié)果可知,運(yùn)行Servlet容器將會(huì)帶來較大的系統(tǒng)開銷,而一個(gè)Servlet容器中托管應(yīng)用數(shù)的增加并不會(huì)帶來較明顯的CPU及內(nèi)存的消耗。因此,與現(xiàn)有PaaS使用一個(gè)容器托管一個(gè)應(yīng)用的方式相比,本文中PaaS安全容器解決方案將會(huì)帶來明顯的系統(tǒng)性能提升。
3.3 沙箱模型性能測試
  為了實(shí)現(xiàn)PaaS容器安全,通過Java沙箱機(jī)制實(shí)現(xiàn)應(yīng)用隔離。本文的PaaS安全解決方案中,結(jié)合Jetty托管應(yīng)用的特點(diǎn),在Java沙箱模型基礎(chǔ)上實(shí)現(xiàn)定制。本測試階段,3臺(tái)Container結(jié)點(diǎn)分別作如下實(shí)現(xiàn):無沙箱、默認(rèn)沙箱和定制沙箱。3臺(tái)Container分別托管相同應(yīng)用,該應(yīng)用無文件訪問權(quán)限,系統(tǒng)啟動(dòng)并運(yùn)行穩(wěn)定后,通過PC客戶端訪問應(yīng)用,進(jìn)行10次文件讀操作,記錄所需CPU時(shí)間。測試結(jié)果如圖6所示。

    無沙箱限制時(shí),應(yīng)用讀文件成功,沙箱環(huán)境下,應(yīng)用訪問失敗。同時(shí),由上述測試結(jié)果可知,沒有沙箱限制時(shí),應(yīng)用讀文件所需CPU時(shí)間最短。通過定制沙箱,減少從安全策略文件到沙箱權(quán)限集的映射,一定程序上提高了應(yīng)用運(yùn)行速度,提高系統(tǒng)性能。
    云計(jì)算是當(dāng)前發(fā)展迅速的新興產(chǎn)業(yè),其發(fā)展面臨著許多關(guān)鍵問題,其中安全問題成為制約其發(fā)展的最主要因素[7]。PaaS作為云計(jì)算的一種服務(wù)方式,具有廣闊的發(fā)展前景。本文研究了PaaS云平臺(tái)所面臨的一些安全問題,分析了現(xiàn)有解決方案及其存在的缺陷,并在此基礎(chǔ)上提出托管PaaS平臺(tái)安全容器解決方案。通過測試證明,本文所提出的解決方案在實(shí)現(xiàn)PaaS平臺(tái)應(yīng)用隔離的前提下,降低了系統(tǒng)開銷,保證了系統(tǒng)性能。
參考文獻(xiàn)
[1] 劉鵬.云計(jì)算的定義和特點(diǎn)[OL].(2009-02-05). http://www.chinaclold.cnlshow.aspx?id=741&eid=17.
[2]  CSA, Cloud Security Alliance[EB/OL].http://clandsecuring  aliance.org.
[3] LUIS M V, LUIS R M, JUAN C, et al. A break in the clouds: towards a cloud definition[J].ACM SIGCOMM Computer Communication Review, 2009, 39(1):50-55.
[4] BALACHANDRA R K, RAMAKRISHNA P V, ATANU R. Cloud security issues[C]. Proceedings of the 2009 IEEE  International Conference on Services Computing. 2009:517-520.
[5] 張?jiān)朴? 陳清金, 潘松柏,等. 云計(jì)算安全關(guān)鍵技術(shù)分析[J]. 電信科學(xué),2010,26(9):64-69.
[6] RAJU B P R, SWARNA P R, RAO M S. Privacy and security issues of Cloud Computing[J]. IJART, 2011,1(2):128-136.
[7] 馮登國,張敏,張妍,等.云計(jì)算安全研究[J]. 軟件學(xué)報(bào),2011,22(1):71-83.
[8] KUYORA S O, LBIKUNLE F, AWODELE O. Cloud computing security issues and challenges[J]. IJCN, 2011,3(5):344-349.
[9] 林兆驥,付雄,王汝傳,等. 云計(jì)算安全關(guān)鍵問題研究[J].信息化研究,2011,37(2):1-4.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。