王豐錦 王角鳳
摘要: SaaS作為一種通過互聯(lián)網(wǎng)向公眾特別是中小企業(yè)提供應(yīng)用軟件的模式,其突出特點(diǎn)就是可擴(kuò)展性、多用戶、高效性、可配置性。文章基于SaaS第四級(jí)成熟度“可擴(kuò)展的多實(shí)例可配置級(jí)”要求,設(shè)計(jì)和實(shí)現(xiàn)了一個(gè)可以支持多租戶、多服務(wù)的SaaS系統(tǒng)架構(gòu)和一個(gè)統(tǒng)一的安全認(rèn)證與權(quán)限管理系統(tǒng)。其中所采用的存儲(chǔ)模型和安全管理模型可適應(yīng)于大規(guī)模租戶的需要,可在滿足系統(tǒng)性能要求下的架構(gòu)靈活性和可擴(kuò)展性,并滿足多租戶的定制化需求。
關(guān)鍵詞: saas; 安全權(quán)限管理; 多服務(wù); 多租戶
中圖分類號(hào):TP319文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-8228(2012)04-01-03
A SaaS-supported access control system
Wang Fengjin1, Wang Jiaofeng2
(1. Beijing Tongfang Corporation Limited, Bejing 100080, China; 2. Quzhou college)
Abstract: SaaS is a new software service mode for Internet users especially enterprises of small and medium size. It has the characteristics of flexibility, multi-tenant, high performance and configurability. Based on the demand of SaaS fourth Maturity Model, the author of this article has designed and implemented a new kind of security authentication and access control system which supports multi-tenant and multi-service. Their storage mode and security management mode can match the demand of the large scale tenants, the structure flexibility and customized requests.
Key words: SaaS; access control system; multi-service; multi-tenant
1 SaaS概述和成熟度模型
1.1 SaaS概述
SaaS是Software as a Service(軟件即服務(wù))的簡稱,是一種通過互聯(lián)網(wǎng)向公眾特別是中小企業(yè)提供應(yīng)用軟件的模式。SaaS軟件廠商將應(yīng)用軟件統(tǒng)一部署在中心服務(wù)器上,租戶可以根據(jù)自己實(shí)際需求,通過互聯(lián)網(wǎng)向廠商定購所需的應(yīng)用軟件服務(wù),按定購的服務(wù)多少和時(shí)間長短向廠商支付費(fèi)用,并通過互聯(lián)網(wǎng)獲得廠商提供的服務(wù)和技術(shù)支持。SaaS本質(zhì)就是以在線租賃的方式替代傳統(tǒng)的信息化建設(shè)投資,并保證租戶充分享有信息化技術(shù)的便利、效率和專業(yè)的信息化服務(wù)。
SaaS服務(wù)模式在給社會(huì)公眾特別是中小企業(yè)帶來極大便利和經(jīng)濟(jì)效益的同時(shí),也帶來了很多的安全隱患。首先,SaaS面向眾多企業(yè)級(jí)用戶,用戶數(shù)量多,角色繁雜,給身份認(rèn)證和訪問控制造成了很大的困難,服務(wù)需要支持多種角色和多類用戶的資源訪問控制[1,2];其次,SaaS軟件生產(chǎn)商向租戶提供的服務(wù)功能模塊眾多,不同租戶對(duì)不同服務(wù)功能模塊的訪問控制權(quán)限并不完全相同。為了能夠使租戶方便地使用SaaS服務(wù)功能模塊,對(duì)于SaaS軟件廠商來講也需要將應(yīng)用服務(wù)功能發(fā)布出去供多租戶訪問和使用。
1.2 SaaS成熟度模型
SaaS模式應(yīng)用的成熟度可以從低到高分成四個(gè)級(jí)別,每一級(jí)別都比前一級(jí)增加了新的成熟特性,從而最終達(dá)到成熟SaaS模式要求具備的可擴(kuò)展性、多用戶、高效性、可配置等特性。
第一級(jí):定制級(jí)。
每個(gè)租戶使用一個(gè)獨(dú)立的數(shù)據(jù)庫實(shí)例和應(yīng)用服務(wù)器實(shí)例,數(shù)據(jù)結(jié)構(gòu)和應(yīng)用程序的代碼根據(jù)租戶需求進(jìn)行定制化修改來滿足不同租戶的個(gè)性化需求。
第二級(jí):簡單多實(shí)例可配置級(jí)。
每個(gè)租戶依然使用一個(gè)獨(dú)立的數(shù)據(jù)庫實(shí)例和應(yīng)用服務(wù)器實(shí)例,但是不同租戶使用的實(shí)例都是基于相同的應(yīng)用程序代碼進(jìn)行實(shí)施的。應(yīng)用程序已經(jīng)考慮到了可定制和可配置性,針對(duì)每個(gè)租戶的定制工作可通過配置的方式實(shí)現(xiàn)來滿足租戶的定制化要求。
第三級(jí):單實(shí)例可配置級(jí)。
所有租戶共享一個(gè)數(shù)據(jù)庫實(shí)例和一個(gè)應(yīng)用服務(wù)器實(shí)例,數(shù)據(jù)庫通過增加租戶表和TENANT_ID字段來解決識(shí)別多個(gè)租戶的問題,并采用可配置的方式支持租戶的定制化需求。通過授權(quán)與安全性策略可確保不同租戶的數(shù)據(jù)彼此區(qū)分開,因此從最終用戶的角度來看,不會(huì)察覺到應(yīng)用是與多個(gè)用戶共享的。第三級(jí)SaaS從計(jì)算資源的利用效率而言是大大提高了,從而直接降低了成本,但是對(duì)于租戶的安全控制和數(shù)據(jù)權(quán)限控制的隔離級(jí)別而言是最低的,開發(fā)時(shí)需加大對(duì)數(shù)據(jù)安全的控制,同時(shí)也難以消除租戶的數(shù)據(jù)安全性顧慮。
第四級(jí):可擴(kuò)展的多實(shí)例可配置級(jí)。
通過在負(fù)載平衡的服務(wù)器群上為不同租戶提供服務(wù),系統(tǒng)有多個(gè)應(yīng)用服務(wù)器實(shí)例,但運(yùn)行相同的應(yīng)用程序代碼實(shí)例,最終租戶通過負(fù)載均衡被分配到不同的應(yīng)用服務(wù)器實(shí)例,不同租戶的數(shù)據(jù)彼此分開,同時(shí)采用可配置的方式支持租戶的定制化需求。第四級(jí)的SaaS系統(tǒng)具備良好的可擴(kuò)展性,可輕松適應(yīng)大規(guī)模租戶的需要,可根據(jù)需求靈活地增減后端服務(wù)器的數(shù)量而無需對(duì)應(yīng)用進(jìn)行額外架構(gòu)設(shè)計(jì),并滿足多租戶的定制化需求。
本文主要基于SaaS第四級(jí)成熟度—“可擴(kuò)展的多實(shí)例可配置級(jí)”要求,設(shè)計(jì)和實(shí)現(xiàn)了一個(gè)可以支持多租戶且支持多服務(wù)的SaaS系統(tǒng)架構(gòu)和統(tǒng)一的安全認(rèn)證與權(quán)限管理系統(tǒng)。
2 系統(tǒng)總體設(shè)計(jì)
2.1 總體架構(gòu)
為了滿足SaaS應(yīng)用服務(wù)要求的支持多租戶、多服務(wù)功能的特點(diǎn),在總體技術(shù)架構(gòu)上得滿足兩方面要求:一方面,依照SaaS第四級(jí)成熟度的可擴(kuò)展的多實(shí)例可配置級(jí)要求,通過在后臺(tái)服務(wù)器上基于相同的應(yīng)用程序代碼運(yùn)行多個(gè)應(yīng)用服務(wù)器實(shí)例來滿足不同租戶的定制化需求,并可通過負(fù)載均衡實(shí)現(xiàn)租戶的服務(wù)器運(yùn)行示例的動(dòng)態(tài)分配;另一方面,在系統(tǒng)中要采用可配置的方式支持租戶的定制化需求,并通過統(tǒng)一的安全認(rèn)證和權(quán)限管理系統(tǒng)實(shí)現(xiàn)不同租戶對(duì)不同服務(wù)功能模塊的安全控制機(jī)制和權(quán)限管理要求。
SaaS系統(tǒng)架構(gòu)圖如圖1所示。
圖1SaaS系統(tǒng)結(jié)構(gòu)圖
2.2 存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)
在SaaS系統(tǒng)中,在滿足服務(wù)資源的共享與多租戶高效性的同時(shí),必須確保用戶數(shù)據(jù)的訪問控制和邏輯隔離。為了保證用戶數(shù)據(jù)的安全性要求,我們采用了“公有+私有”的數(shù)據(jù)庫存儲(chǔ)結(jié)構(gòu)。
首先,我們將存儲(chǔ)了SaaS系統(tǒng)的用戶認(rèn)證、功能訪問權(quán)限信息等數(shù)據(jù)結(jié)構(gòu)統(tǒng)一放在了“公有數(shù)據(jù)庫”中,以便于進(jìn)行統(tǒng)一的用戶認(rèn)證、功能權(quán)限控制等,即SaaS系統(tǒng)中的用戶認(rèn)證和功能權(quán)限控制信息存放在一起,共享一個(gè)公有數(shù)據(jù)庫schema;而對(duì)于各租戶的業(yè)務(wù)數(shù)據(jù)信息,由于需確保不同用戶只能訪問自己的數(shù)據(jù),并實(shí)現(xiàn)用戶業(yè)務(wù)數(shù)據(jù)的邏輯隔離,則存放在不同的“私有數(shù)據(jù)庫”中,即每個(gè)租戶的業(yè)務(wù)數(shù)據(jù)存放在各自的私有schema中,從而達(dá)到了業(yè)務(wù)數(shù)據(jù)邏輯隔離的需求,安全性可以得到保證,同時(shí)對(duì)于數(shù)據(jù)庫的備份、導(dǎo)入導(dǎo)出等運(yùn)行維護(hù)工作也提供了較好的便利性。
圖2數(shù)據(jù)庫存儲(chǔ)結(jié)構(gòu)示意圖
“公有+私有”數(shù)據(jù)庫存儲(chǔ)結(jié)構(gòu)的示意圖如圖2所示。由于在安全認(rèn)證與權(quán)限管理系統(tǒng)中需要統(tǒng)一進(jìn)行用戶身份認(rèn)證和操作權(quán)限管理與控制,因此將相關(guān)的用戶認(rèn)證信息和權(quán)限管理信息存放在統(tǒng)一的公有數(shù)據(jù)庫中,以支持用戶的身份認(rèn)證和服務(wù)功能權(quán)限管理,在用戶登錄時(shí)根據(jù)服務(wù)功能權(quán)限信息構(gòu)造用戶所能訪問的服務(wù)功能集合,并根據(jù)后臺(tái)服務(wù)器信息動(dòng)態(tài)分配相應(yīng)的應(yīng)用服務(wù)器實(shí)例。同時(shí)不同租戶的運(yùn)行實(shí)例根據(jù)用戶身份不同訪問各自的私有業(yè)務(wù)數(shù)據(jù)庫,每個(gè)租戶都擁有自己的業(yè)務(wù)數(shù)據(jù)庫,互相隔離,不能跨庫進(jìn)行非法訪問。
“公有+私有”數(shù)據(jù)庫能夠保證統(tǒng)一用戶認(rèn)證和權(quán)限管理需要,同時(shí)也能保證用戶數(shù)據(jù)的高安全性,確保業(yè)務(wù)數(shù)據(jù)的邏輯隔離性,并使每個(gè)數(shù)據(jù)庫資源得到了充分的利用。
2.3 統(tǒng)一的安全認(rèn)證與權(quán)限管理系統(tǒng)
安全認(rèn)證與權(quán)限管理系統(tǒng)是SaaS系統(tǒng)的重要部分,主要實(shí)現(xiàn)用戶身份認(rèn)證和服務(wù)權(quán)限管理與控制,在用戶登錄時(shí)驗(yàn)證用戶身份并根據(jù)服務(wù)功能權(quán)限信息構(gòu)造該用戶有權(quán)訪問的服務(wù)功能集合[3],并將該用戶的服務(wù)功能集合和身份信息傳入系統(tǒng)動(dòng)態(tài)分配的應(yīng)用服務(wù)器實(shí)例,再動(dòng)態(tài)鏈接到該租戶對(duì)應(yīng)的業(yè)務(wù)數(shù)據(jù)庫實(shí)例。
安全認(rèn)證與權(quán)限管理系統(tǒng)主要包括3個(gè)功能模塊:認(rèn)證、構(gòu)造權(quán)限清單和授權(quán)。
2.3.1 認(rèn)證
認(rèn)證主要實(shí)現(xiàn)用戶登錄時(shí)的身份認(rèn)證和安全驗(yàn)證。具體認(rèn)證過程為:
用戶登錄到Web頁面,輸入自己的聯(lián)合身份認(rèn)證信息,即用戶ID和密碼,或者提供CA證書。
身份認(rèn)證模塊通過聯(lián)合身份認(rèn)證信息,進(jìn)行認(rèn)證。
如果認(rèn)證失敗,則返回失敗信息;如果認(rèn)證成功,則為用戶重定向到登錄成功的頁面。
2.3.2 構(gòu)造權(quán)限清單
構(gòu)造權(quán)限清單過程是用戶通過了身份認(rèn)證后,系統(tǒng)根據(jù)服務(wù)功能權(quán)限配置信息,構(gòu)造符合租戶企業(yè)購買范圍和客戶權(quán)限范圍內(nèi)的服務(wù)功能清單。在SaaS系統(tǒng)中,軟件開發(fā)商會(huì)提供多個(gè)服務(wù)功能模塊,不同租戶根據(jù)自己需要可以購買不同的服務(wù)功能,形成本企業(yè)租戶的服務(wù)功能集合;同時(shí),不同租戶內(nèi)部也會(huì)劃分不同角色,不同角色用戶可以使用本企業(yè)所購買服務(wù)功能集合中不同的服務(wù)功能,從而形成本企業(yè)租戶的不同角色客戶的具體服務(wù)功能清單。因此,構(gòu)造權(quán)限清單過程就是根據(jù)租戶企業(yè)的購買信息和角色權(quán)限信息,動(dòng)態(tài)構(gòu)造客戶的服務(wù)功能清單并形成具體的應(yīng)用系統(tǒng)功能主界面,每個(gè)服務(wù)功能對(duì)應(yīng)不同的菜單項(xiàng)或模板區(qū)。如果某客戶的界面跟其余客戶的界面不同,則新增一個(gè)菜單,把這個(gè)菜單加載到界面上,而這個(gè)菜單對(duì)應(yīng)了后臺(tái)一個(gè)服務(wù)功能。這樣就實(shí)現(xiàn)了不同客戶可以有自己完全不同的服務(wù)功能集合和應(yīng)用系統(tǒng)界面,如圖3所示。
圖3構(gòu)造權(quán)限清單流程示意圖
具體構(gòu)造權(quán)限清單過程為:
⑴ 根據(jù)用戶身份信息,獲取該用戶對(duì)應(yīng)的企業(yè)租戶購買的服務(wù)功能清單信息;
⑵ 根據(jù)用戶的具體角色權(quán)限信息,從服務(wù)功能集合中抽取形成該用戶有權(quán)使用的服務(wù)功能清單;
⑶ 依據(jù)服務(wù)功能清單和個(gè)性化配置信息,動(dòng)態(tài)構(gòu)造并形成具體的應(yīng)用系統(tǒng)功能主界面;
⑷ 將應(yīng)用系統(tǒng)功能主界面返回給用戶;
⑸ 建立用戶與系統(tǒng)動(dòng)態(tài)分配的應(yīng)用服務(wù)器實(shí)例獨(dú)立的通道,用戶可選擇具體功能進(jìn)行相應(yīng)的服務(wù)訪問和使用。
2.3.3 授權(quán)
授權(quán)過程分為兩類:一類是針對(duì)具體角色進(jìn)行服務(wù)功能授權(quán)[4];另一類是針對(duì)具體角色在企業(yè)租戶服務(wù)功能集合內(nèi)進(jìn)行權(quán)限提升[5]。
對(duì)具體角色進(jìn)行服務(wù)功能授權(quán)的過程如下。
⑴ 用戶查詢具體角色擁有的服務(wù)功能權(quán)限信息。
⑵ 用戶一方面可以查詢?cè)撚脩魧?duì)應(yīng)的企業(yè)租戶所擁有的服務(wù)功能集合信息,再在對(duì)應(yīng)的服務(wù)功能集合內(nèi),選擇對(duì)具體角色進(jìn)行服務(wù)功能的授權(quán),并提交請(qǐng)求。
⑶ 另一方面,用戶也可以查詢SaaS平臺(tái)中所有可提供的服務(wù)功能集合,在平臺(tái)所有可提供的服務(wù)功能集合內(nèi),修改所對(duì)應(yīng)企業(yè)租戶的服務(wù)功能集合內(nèi)的信息,再選擇對(duì)具體角色進(jìn)行服務(wù)功能的授權(quán),并提交請(qǐng)求。
⑷ 權(quán)限管理模塊調(diào)用相應(yīng)的方法修改具體角色對(duì)應(yīng)的服務(wù)功能權(quán)限配置信息。如果授權(quán)所請(qǐng)求的服務(wù)功能涉及修改該用戶對(duì)應(yīng)的企業(yè)租戶服務(wù)功能集合的,則同時(shí)修改企業(yè)租戶的服務(wù)功能集合信息。
⑸ 權(quán)限管理模塊返回修改結(jié)果。
對(duì)具體角色進(jìn)行權(quán)限提升的過程如下。
⑴ 用戶查詢具體角色擁有的服務(wù)功能權(quán)限信息,并得到該用戶對(duì)應(yīng)的企業(yè)租戶所擁有的服務(wù)功能集合信息。
⑵ 用戶在對(duì)應(yīng)的企業(yè)租戶所擁有的服務(wù)功能集合內(nèi),選擇對(duì)具體角色進(jìn)行服務(wù)功能的授權(quán),并提交請(qǐng)求。
⑶ 權(quán)限管理模塊調(diào)用相應(yīng)的方法修改具體角色對(duì)應(yīng)的服務(wù)功能權(quán)限配置信息。
⑷ 權(quán)限管理模塊返回修改結(jié)果。
3 結(jié)束語
本文基于SaaS第四級(jí)成熟度—“可擴(kuò)展的多實(shí)例可配置級(jí)”要求,設(shè)計(jì)和實(shí)現(xiàn)了一個(gè)可以支持多租戶且支持多服務(wù)的SaaS系統(tǒng)架構(gòu),并從系統(tǒng)結(jié)構(gòu)和安全認(rèn)證及權(quán)限管理的角度,提出了“公有+私有”的數(shù)據(jù)庫存儲(chǔ)模型和統(tǒng)一的安全認(rèn)證與權(quán)限管理系統(tǒng)模型。這兩個(gè)模型是SaaS應(yīng)用的關(guān)鍵技術(shù),也是實(shí)現(xiàn)的難點(diǎn)。當(dāng)然,動(dòng)態(tài)資源調(diào)度、負(fù)載均衡以及服務(wù)水平協(xié)議等也是SaaS應(yīng)用實(shí)施的難點(diǎn)。
參考文獻(xiàn):
[1] 薛偉,懷進(jìn)鵬.基于角色的訪問控制模型的擴(kuò)充和實(shí)現(xiàn)機(jī)制研究[J]. 計(jì)算機(jī)研究與發(fā)展,2003.40(11):1635~1641
[2] 周文峰,尤軍考,何基香. 基于RBAC 模型的權(quán)限管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2006.22(5):35~36
[3]吳耀華,李寧. 適用于B /S 結(jié)構(gòu)的RBAC 模型研究及實(shí)現(xiàn)[J]. 計(jì)算機(jī)應(yīng)用,2004.24(12):8~87
[3] 韓若飛,汪厚祥.基于任務(wù)·角色的訪問控制模型研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2007.28(4):800~803
[4] 田敬東,何再朗,王向東,等. 基于角色的強(qiáng)制訪問控制模型研究[J].電子科技大學(xué)學(xué)報(bào),2006.35(6):950~952
[5] 喬穎,須德,戴國忠. 一種基于角色訪問控制(RBAC) 的新模型及其實(shí)現(xiàn)機(jī)制[J].計(jì)算機(jī)研究與發(fā)展,2000.37(1):37~44