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