劉國萍,劉建峰,譚國權(quán)
(1.中國電信股份有限公司北京研究院 北京 100035;2.北京市交通信息中心 北京 100073)
互聯(lián)網(wǎng)技術(shù)的發(fā)展,企業(yè)客戶對低成本、快速獲取企業(yè)應(yīng)用需求的快速增長,應(yīng)用軟件開發(fā)技術(shù)的成熟,催生了一種基于互聯(lián)網(wǎng)提供軟件服務(wù)的應(yīng)用新模式——SaaS(software as a service,軟件即服務(wù))。
SaaS作為一種基于互聯(lián)網(wǎng)的軟件交付模式,軟件在規(guī)模應(yīng)用后的性能與運(yùn)營成本是軟件開發(fā)商和服務(wù)運(yùn)營商共同關(guān)心的重點(diǎn)。成熟的SaaS軟件開發(fā)商多采用一對多的軟件交付模式,也就是一套軟件供多個(gè)客戶使用,此種方式稱為單應(yīng)用多重租賃 (single instance multitenancy)。相對于為單一企業(yè)提供的一對一軟件交付模式(如早期的ASP模式和單租賃SaaS),多重租賃大大降低了軟件的維護(hù)和升級成本,同時(shí)也增強(qiáng)了軟件的可靠性和可擴(kuò)展性。
多重租賃的SaaS服務(wù)通?;谝惶讟?biāo)準(zhǔn)軟件向成百上千個(gè)不同租戶提供服務(wù),這要求SaaS服務(wù)在滿足不同租戶對諸如界面、業(yè)務(wù)邏輯、數(shù)據(jù)結(jié)構(gòu)等的個(gè)性化需求的同時(shí),還能夠支持不同租戶之間的數(shù)據(jù)和配置的隔離,從而保證每個(gè)租戶數(shù)據(jù)的安全與隱私。即多重租賃SaaS在滿足多租戶間最大程度共享資源的同時(shí),嚴(yán)格區(qū)分和隔離屬于不同用戶的數(shù)據(jù),這不僅對SaaS應(yīng)用平臺在性能、穩(wěn)定性、擴(kuò)展性上提出了更高的要求,更對SaaS應(yīng)用運(yùn)營管理、服務(wù)接入、應(yīng)用設(shè)計(jì)、數(shù)據(jù)存儲、基礎(chǔ)設(shè)施等每個(gè)層面的安全提出了更大的挑戰(zhàn)。
SaaS服務(wù)的安全不僅與SaaS應(yīng)用的部署、邏輯體系架構(gòu)密切相關(guān),還與SaaS應(yīng)用運(yùn)營管理架構(gòu)密切相關(guān)。本文在分析構(gòu)建SaaS服務(wù)體系架構(gòu)鏈的基礎(chǔ)上,提出多重租賃的SaaS服務(wù)分層二維安全模型,并針對分層模型探討每個(gè)層面可能涉及的安全技術(shù)與策略。
在Philippe Kruchten提出的4+1軟件架構(gòu)視圖[1]中,邏輯視圖和部署視圖是軟件架構(gòu)設(shè)計(jì)的兩個(gè)重要視圖[2],分別從功能設(shè)計(jì)和部署實(shí)施層面決定了SaaS系統(tǒng)的安全性。此外,對于SaaS應(yīng)用,系統(tǒng)的運(yùn)營維護(hù)對其安全性也有重要影響。圖1從SaaS安全性角度出發(fā),給出了以邏輯視圖、部署視圖、運(yùn)營視圖共同構(gòu)建的SaaS應(yīng)用服務(wù)體系架構(gòu)鏈。
為了突出SaaS系統(tǒng)的多租戶可配置與可擴(kuò)展性,同時(shí)也為了更好地分析并構(gòu)建SaaS系統(tǒng)的安全模型,邏輯視圖采用了6層模型,與傳統(tǒng)的4層模型相比,增加了配置管理層和數(shù)據(jù)模式選擇層。配置管理層提供多租戶靈活的配置管理能力,包括自定義表單、自定義工作流程、自定義數(shù)據(jù)結(jié)構(gòu)和自定義報(bào)表及個(gè)性化界面等。數(shù)據(jù)模式選擇層提供了多租戶環(huán)境下對不同數(shù)據(jù)庫類型和共享結(jié)構(gòu)的適配和支持能力,提高了系統(tǒng)的可擴(kuò)展性。SaaS邏輯視圖從系統(tǒng)分層設(shè)計(jì)的角度,反映了SaaS系統(tǒng)每個(gè)層面上需要考慮的安全因素。
考慮到服務(wù)提供商的經(jīng)濟(jì)效益與客戶的多樣化需求,與傳統(tǒng)系統(tǒng)相比,SaaS部署視圖中增加了虛擬化抽象層。SaaS部署視圖從系統(tǒng)部署的角度,反映了SaaS系統(tǒng)需要考慮的安全因素。
SaaS服務(wù)與傳統(tǒng)的駐留于企業(yè)內(nèi)部的應(yīng)用有很大不同,以集中的離站式方式提供,因此在圖1中,更強(qiáng)調(diào)行業(yè)監(jiān)管、運(yùn)維架構(gòu)和服務(wù)流程對SaaS服務(wù)安全的影響。
SaaS服務(wù)安全包含SaaS應(yīng)用系統(tǒng)自身安全 (包括基礎(chǔ)設(shè)施、數(shù)據(jù)和應(yīng)用軟件)以及與SaaS應(yīng)用相關(guān)的運(yùn)營服務(wù)的安全(運(yùn)營管理)。SaaS服務(wù)安全在服務(wù)的不同階段,關(guān)注的重點(diǎn)不同,規(guī)劃建設(shè)階段側(cè)重于對已知、常見的安全風(fēng)險(xiǎn)的檢測與防護(hù),而運(yùn)行維護(hù)階段則側(cè)重于動(dòng)態(tài)或未知安全風(fēng)險(xiǎn)的監(jiān)測、預(yù)防與補(bǔ)救。
根據(jù)上述的SaaS服務(wù)體系架構(gòu)鏈,給出如圖2所示的SaaS服務(wù)安全二維模型。在該模型中,橫軸給出了安全實(shí)施的重點(diǎn)階段,縱軸給出了SaaS應(yīng)用的安全層次劃分。該模型便于分層次、分階段地對SaaS服務(wù)的安全性進(jìn)行分析研究。
SaaS服務(wù)安全模型的最底層是基礎(chǔ)安全層,主要是機(jī)房、網(wǎng)絡(luò)和硬件及操作系統(tǒng)層面的安全,這個(gè)層面除增加虛擬機(jī)安全隔離外,其他與傳統(tǒng)應(yīng)用的安全實(shí)施內(nèi)容基本相同?;A(chǔ)設(shè)施層面的安全分兩個(gè)階段:一是服務(wù)規(guī)劃部署階段,如機(jī)房安全;二是服務(wù)運(yùn)行階段,如網(wǎng)絡(luò)安全和主機(jī)安全等。
SaaS服務(wù)安全模型的第2層是數(shù)據(jù)安全,包含數(shù)據(jù)庫自身及其他應(yīng)用數(shù)據(jù)的安全,是SaaS服務(wù)安全的重點(diǎn)部分。這個(gè)層面的安全包括設(shè)計(jì)建設(shè)層面的數(shù)據(jù)庫組件服務(wù)安全以及數(shù)據(jù)庫訪問安全等,在運(yùn)行階段主要考慮數(shù)據(jù)存儲安全和數(shù)據(jù)傳輸安全。
SaaS服務(wù)安全模型的第3層是應(yīng)用安全,主要是指應(yīng)用程序自身及客戶端訪問安全。該層面的安全實(shí)施與傳統(tǒng)的應(yīng)用相比,沒有增加更多新的內(nèi)容。但由于SaaS服務(wù)用戶數(shù)量龐大、租戶情況各異,每一項(xiàng)安全內(nèi)容都需要更加嚴(yán)密的設(shè)計(jì)與實(shí)施,尤其在運(yùn)行階段,服務(wù)提供商應(yīng)加強(qiáng)對Web型SaaS應(yīng)用的掛馬監(jiān)測,避免造成大范圍的客戶受損;同時(shí)客戶側(cè)也應(yīng)加強(qiáng)自身安全意識,及時(shí)對瀏覽器漏洞進(jìn)行修補(bǔ)。
SaaS服務(wù)安全模型的最上層是運(yùn)營管理安全,該層在安全模型中是重要的一層,因?yàn)閷τ谝苑?wù)為交付模式的SaaS服務(wù)而言,客戶的隱私信息及重點(diǎn)數(shù)據(jù)均由服務(wù)提供商所掌握。服務(wù)提供商的運(yùn)維體系是否健全、運(yùn)維流程是否規(guī)范、行業(yè)監(jiān)管政策是否完備以及服務(wù)審計(jì)是否有效等,都將影響到客戶的合法利益及客戶使用SaaS服務(wù)的積極性,從而影響了服務(wù)提供商的利益。
在上述SaaS服務(wù)分層二維安全模型中,涉及的安全內(nèi)容較多,包括技術(shù)實(shí)施和運(yùn)營管理,技術(shù)實(shí)施是基礎(chǔ),運(yùn)營管理是重要保障。本文限于篇幅,僅從技術(shù)層面對SaaS服務(wù)涉及的安全內(nèi)容進(jìn)行分析探討,包括基礎(chǔ)安全、數(shù)據(jù)安全和應(yīng)用安全3個(gè)層面。
在SaaS服務(wù)中,用戶的數(shù)據(jù)和資料等都保存在SaaS服務(wù)器端,服務(wù)器端機(jī)房、傳送服務(wù)的網(wǎng)絡(luò)及存儲數(shù)據(jù)的服務(wù)器安全技術(shù)實(shí)施不夠嚴(yán)密,很容易遭到人為泄密或黑客攻擊,租戶隱私及數(shù)據(jù)安全就會受到威脅,所以SaaS服務(wù)的軟硬件基礎(chǔ)設(shè)施的安全是保證SaaS服務(wù)安全的基礎(chǔ)。
(1)機(jī)房安全
SaaS服務(wù)的安全始于機(jī)房。機(jī)房的安全性包括氣體滅火、聯(lián)網(wǎng)電子鎖防盜、24 h專人和錄像監(jiān)控、口令/門禁進(jìn)入機(jī)房等。
(2)網(wǎng)絡(luò)安全
SaaS服務(wù)的基礎(chǔ)是網(wǎng)絡(luò)。SaaS網(wǎng)絡(luò)的安全性包括內(nèi)外網(wǎng)隔離與訪問控制(網(wǎng)絡(luò)防火墻)、網(wǎng)絡(luò)入侵檢測、應(yīng)用入侵防御(應(yīng)用防火墻)、網(wǎng)絡(luò)流量監(jiān)測管理、安全審計(jì)、網(wǎng)絡(luò)出口冗余備份等技術(shù)。
(3)主機(jī)安全
部署SaaS應(yīng)用的主機(jī)包括Web服務(wù)器、數(shù)據(jù)服務(wù)器、應(yīng)用服務(wù)器等,主機(jī)安全技術(shù)主要指主機(jī)系統(tǒng)與服務(wù)安全,如系統(tǒng)病毒防護(hù)、系統(tǒng)漏洞修復(fù)、主機(jī)防火墻、虛擬交換機(jī)、虛擬防火墻等技術(shù)。針對Web服務(wù)器,還需要利用主機(jī)入侵檢測及主機(jī)審計(jì)技術(shù)提高其安全性。通過對數(shù)據(jù)庫服務(wù)器的集群和備份,在保證服務(wù)高可用性的同時(shí),也使得數(shù)據(jù)在遭到破壞的情況下,可通過備份信息得以恢復(fù)。
任何企業(yè)應(yīng)用的數(shù)據(jù)對于用戶來說都是一筆重要資產(chǎn),SaaS服務(wù)使得用戶通過網(wǎng)絡(luò)集中存取數(shù)據(jù),因此數(shù)據(jù)的丟失將導(dǎo)致用戶資產(chǎn)遭受重大損失,同時(shí)也會對SaaS服務(wù)提供商失去信任,因此數(shù)據(jù)安全對用戶和服務(wù)提供商至關(guān)重要。
(1)數(shù)據(jù)庫服務(wù)安全
面向廣大租戶的SaaS服務(wù),SaaS應(yīng)用一般采用大型商用關(guān)系型數(shù)據(jù)庫,如Oracle、SQL Server和 DB2等,相對MySQL等開源數(shù)據(jù)庫,更加成熟、安全。
在數(shù)據(jù)庫的設(shè)計(jì)上,多重租賃的軟件有3種設(shè)計(jì),每個(gè)客戶公司獨(dú)享一個(gè)數(shù)據(jù)庫實(shí)例,或獨(dú)享其中的一個(gè)模式,或多客戶公司以隔離和保密技術(shù)原理共享一個(gè)數(shù)據(jù)庫實(shí)例的一個(gè)模式。SaaS服務(wù)提供一般為最大化效益,一般采用后兩種,應(yīng)用設(shè)計(jì)時(shí)可通過諸如權(quán)限管理、SQL視圖以及加密等“虛擬隔離”機(jī)制滿足用戶安全性需求。
(2)數(shù)據(jù)庫訪問安全
數(shù)據(jù)庫安全依賴于數(shù)據(jù)庫系統(tǒng)的訪問控制。目前對數(shù)據(jù)庫進(jìn)行訪問控制有3種機(jī)制:基于強(qiáng)制訪問控制(MAC)的、基于自主訪問控制 (DAC)的和基于角色訪問控制(RBAC)[3]的機(jī)制。從安全性角度來說,在對 SaaS應(yīng)用的數(shù)據(jù)庫進(jìn)行訪問控制時(shí),采用基于MAC和基于RBAC的方式,相對于基于DAC的方式安全性更高。
(3)數(shù)據(jù)存儲安全
SaaS應(yīng)用數(shù)據(jù)都存儲在服務(wù)提供商側(cè)的數(shù)據(jù)庫管理系統(tǒng)中,而每個(gè)數(shù)據(jù)庫系統(tǒng)中都存在一個(gè)超級用戶,通常這個(gè)超級用戶是軟件運(yùn)營商內(nèi)部人員,因此對于擔(dān)心企業(yè)應(yīng)用數(shù)據(jù)會被運(yùn)營商看到的租戶來說,可以采用數(shù)據(jù)存儲加密的方式,確保其數(shù)據(jù)的安全性,同時(shí)也可以避免由于數(shù)據(jù)庫受到攻擊導(dǎo)致的機(jī)密數(shù)據(jù)被竊。
傳統(tǒng)的加密以報(bào)文為單位,加密解密都是從頭至尾順序進(jìn)行。數(shù)據(jù)庫數(shù)據(jù)的使用方法決定了它不可能以整個(gè)數(shù)據(jù)庫文件為單位進(jìn)行加密。數(shù)據(jù)庫加密通?;谧用荑€加密技術(shù)和秘密同態(tài)技術(shù)對數(shù)據(jù)庫字段和記錄進(jìn)行加解密[4]。
數(shù)據(jù)存儲安全除包括上述用戶機(jī)密數(shù)據(jù)存儲安全外,還應(yīng)包括對退租用戶的殘留數(shù)據(jù)進(jìn)行徹底清除。
對于多租戶按需租用的SaaS服務(wù),客戶對服務(wù)的租用與退租行為將變得相對頻繁,如何確保退租用戶存儲在服務(wù)器中的數(shù)據(jù)在重新租給新的用戶之前能被徹底銷毀,以防止機(jī)密信息的外泄,也是擺在租戶和服務(wù)提供商面前的一個(gè)重要安全問題。目前通用的刪除、格式化、重新分區(qū)、反復(fù)填寫等技術(shù)并不能保證信息的徹底銷毀,徹底的銷毀需要首先對電子數(shù)據(jù)存儲介質(zhì)的底層進(jìn)行分析,在分析其結(jié)構(gòu)的基礎(chǔ)上進(jìn)行底層的覆蓋寫入,從而確保數(shù)據(jù)擦除后的電子數(shù)據(jù)具有不可恢復(fù)性。
(4)數(shù)據(jù)傳輸安全
對于B/S架構(gòu)的SaaS服務(wù),用戶通常采用瀏覽器且通過互聯(lián)網(wǎng)訪問部署在軟件運(yùn)營商端的SaaS服務(wù),這對于需要傳輸一些機(jī)密數(shù)據(jù)(如客戶資料、財(cái)務(wù)資料)且對安全性要求較高的用戶來講,保證其在互聯(lián)網(wǎng)上傳輸數(shù)據(jù)的安全可靠是一項(xiàng)非常重要的需求。
目前有兩類技術(shù)可解決傳輸中的數(shù)據(jù)安全問題,第一類是基于隧道技術(shù)、加解密技術(shù)、密鑰管理技術(shù)和使用者與設(shè)備身份認(rèn)證技術(shù),組建VPN,實(shí)現(xiàn)租戶在公用互聯(lián)網(wǎng)上建立一個(gè)臨時(shí)的、安全的連接隧道,確保信息的安全傳輸;第二類是基于HTTP SSL實(shí)現(xiàn)客戶端與服務(wù)器端通信數(shù)據(jù)的安全傳輸,在實(shí)際的數(shù)據(jù)傳輸前,通信雙方進(jìn)行身份認(rèn)證、協(xié)商加密算法、交換加密密鑰等。在數(shù)據(jù)的傳輸過程中,密鑰應(yīng)該定期更換。
(1)應(yīng)用服務(wù)安全
在分層安全模型里,應(yīng)用服務(wù)安全包括應(yīng)用服務(wù)器安全和Web服務(wù)器安全。
應(yīng)用服務(wù)器是指通過多種協(xié)議為客戶端提供商業(yè)邏輯的服務(wù)組件技術(shù),為應(yīng)用程序的執(zhí)行提供核心服務(wù),如對CORBA的支持以及EJB容器等,并提供系統(tǒng)級的服務(wù),如事務(wù)處理、安全服務(wù)、緩存服務(wù)、負(fù)載平衡、系統(tǒng)管理以及災(zāi)難恢復(fù)等功能。由于越來越多的用戶使用各種設(shè)備,通過各種方式訪問系統(tǒng),這要求應(yīng)用服務(wù)器不僅能提供良好的技術(shù)兼容性、擴(kuò)展性、開放性和可靠性,還能提供足夠高的安全性,應(yīng)能確保應(yīng)用數(shù)據(jù)的機(jī)密性、完整性和可用性,不讓攻擊者訪問任何機(jī)密信息。SaaS服務(wù)提供商應(yīng)選擇一些主流商用應(yīng)用服務(wù)器平臺,如Weblogic Server、Websphere Application Server、Oracle9i Application Server等,它們均可提供較高的安全性服務(wù),如用戶和應(yīng)用程序的認(rèn)證、加密授權(quán)、審計(jì)、訪問控制和會話管理等。
在B/S架構(gòu)的 SaaS服務(wù)中,Web服務(wù)器 (即 B/S的服務(wù)端)用于接收用戶HTTP服務(wù)請求,并作出響應(yīng)。Web服務(wù)器作為直接面向客戶端提供網(wǎng)頁解析服務(wù)的組件,最容易成為外部攻擊的目標(biāo),攻擊者利用各種系統(tǒng)漏洞、口令破解等途徑實(shí)施攻擊,進(jìn)行內(nèi)容篡改、盜取管理員密碼、數(shù)據(jù)庫注入、網(wǎng)站掛馬、木馬植入、竊取數(shù)據(jù)等破壞活動(dòng)。
為保證網(wǎng)站免受攻擊、篡改,一方面需要SaaS應(yīng)用的開發(fā)商在選擇Web服務(wù)器時(shí)選擇安全性相對較高的服務(wù)器組件,如IIS 7、Apache、OpenAngel等服務(wù)器;另一方面還需要在Web代碼設(shè)計(jì)時(shí)充分考慮代碼的安全性,開發(fā)時(shí)加強(qiáng)代碼安全性檢查與測試,如在保存通過文本框輸入的數(shù)據(jù)之前進(jìn)行必要的字符長度、數(shù)據(jù)類型、字符格式、特殊字符等嚴(yán)格檢測,以避免緩沖溢出漏洞和SQL注入式漏洞。
(2)站點(diǎn)安全
對于B/S架構(gòu)的SaaS服務(wù),網(wǎng)站系統(tǒng)在運(yùn)行時(shí)還需要利用數(shù)字水印技術(shù)、應(yīng)用防護(hù)技術(shù)及增強(qiáng)型事件觸發(fā)檢測技術(shù)實(shí)現(xiàn)頁面防篡改、防注入攻擊,對網(wǎng)頁內(nèi)容進(jìn)行實(shí)時(shí)監(jiān)控,并在必要時(shí)進(jìn)行網(wǎng)頁自動(dòng)恢復(fù)。
(3)身份認(rèn)證
認(rèn)證是指驗(yàn)證提供服務(wù)的服務(wù)器或訪問服務(wù)的用戶身份合法性的過程,授權(quán)是指對通過認(rèn)證的對象授予訪問特定服務(wù)或操作特定功能的權(quán)限的過程。身份驗(yàn)證和授權(quán)服務(wù)是保證SaaS應(yīng)用系統(tǒng)安全性的基礎(chǔ)。
SaaS應(yīng)用系統(tǒng)需要提供完整的身份管理和登錄服務(wù)。基于密碼的認(rèn)證在HTTP協(xié)議中是一種基本的認(rèn)證方法,它提供了有限的安全性。對于安全性要求較高的場合,采用數(shù)字簽名方式。使用SSL進(jìn)行數(shù)字簽名是安全認(rèn)證的有效方法,通過第三方信任的認(rèn)證機(jī)構(gòu)發(fā)放數(shù)字證書,可以用來確認(rèn)服務(wù)器或用戶的身份。通過多個(gè)證書鏈可以提供更加靈活、安全的B2B安全需求。
(4)客戶端安全
在上述安全分層模型里,SaaS應(yīng)用客戶端安全指客戶端瀏覽器安全。隨著B/S架構(gòu)的流行,將有越來越多的SaaS軟件采用瀏覽器方式提供訪問。對基于瀏覽器的訪問模式,普遍采用的安全技術(shù)包括Cookie加密、URL隨機(jī)碼、SQL等代碼的注入防范等技術(shù)。同時(shí),瀏覽器自身的及時(shí)升級及安全設(shè)置也是非常重要的。
SaaS服務(wù)安全涉及多個(gè)環(huán)節(jié),從應(yīng)用的設(shè)計(jì)、開發(fā)、部署到運(yùn)行,每一個(gè)環(huán)節(jié)都需要嚴(yán)密考慮。它不僅是技術(shù)實(shí)施問題,更重要的是,還需要SaaS服務(wù)提供商內(nèi)部健全而規(guī)范的信息安全管理流程和運(yùn)維組織體系保證,以減少SaaS應(yīng)用的數(shù)據(jù)及用戶隱私內(nèi)部人為破壞或泄露的概率。同時(shí),SaaS應(yīng)用安全還與社會整體安全環(huán)境相關(guān),SaaS服務(wù)的用戶應(yīng)增強(qiáng)到自身隱私信息、服務(wù)賬號和密碼的保護(hù)意識,國家監(jiān)管及執(zhí)法部門應(yīng)完善互聯(lián)網(wǎng)網(wǎng)絡(luò)攻擊及詐騙等犯罪行為的相關(guān)立法。
SaaS應(yīng)用的安全還來自客戶內(nèi)心的感知。服務(wù)提供商除從技術(shù)及運(yùn)營管理層面保障SaaS安全外,還需要從客戶安全感知方面加以增強(qiáng),如提供實(shí)體的USB加密,以增強(qiáng)客戶內(nèi)心對SaaS服務(wù)的安全“感知”,逐步提升對SaaS服務(wù)安全的信任度。
1 Philippe Kruchten.架構(gòu)藍(lán)圖——軟件架構(gòu) “4+1”視圖模型.https://www.ibm.com/developerworks/cn/rational/r-4p1-view
2 軟件架構(gòu)視圖.http://wenku.baidu.com/view/6f9c2b4ae45c3b3567 ec8bf1.html
3 趙勇,田茂.多用戶空間數(shù)據(jù)庫的安全訪問控制.計(jì)算機(jī)應(yīng)用研究,2004(11)
4 數(shù)據(jù)庫安全.蘭州理工大學(xué)計(jì)算機(jī)與通信學(xué)院數(shù)據(jù)庫原理與應(yīng)用課件,2009
5 王茂光,丁穎.應(yīng)用服務(wù)器的安全性研究.計(jì)算機(jī)工程與設(shè)計(jì),2004(11)