SaaS系統(tǒng)用戶權(quán)限設(shè)計講解
隨著云計算的發(fā)展,越來越多企業(yè)產(chǎn)品業(yè)務(wù)向軟件服務(wù)平臺轉(zhuǎn)型。其中系統(tǒng)的權(quán)限設(shè)計是十分關(guān)鍵和重要的部分,本文以O(shè)2O業(yè)務(wù)為例講解SaaS系統(tǒng)權(quán)限設(shè)計。
1、系統(tǒng)需求
平臺管理員只能管理租戶的賬號和相關(guān)信息,不能操作租戶的內(nèi)部業(yè)務(wù)。各租戶擁有自己的角色和權(quán)限,相互不能影響。不同租戶的數(shù)據(jù)、服務(wù)在物理上共享,而在邏輯上完全隔離,對于每個租戶來說這個系統(tǒng)好像只為自己服務(wù)。為了確保系統(tǒng)數(shù)據(jù)的安全性,使用戶能放心地將商業(yè)數(shù)據(jù)放在系統(tǒng)上使用,SaaS系統(tǒng)的權(quán)限管理在系統(tǒng)設(shè)計中成為尤為重要的一環(huán)。
2、RBAC權(quán)限模型
訪問控制是針對越權(quán)使用資源的防御措施,目的是為了限制訪問主體(如用戶等) 對訪問客體(如數(shù)據(jù)庫資源等)的訪問權(quán)限。企業(yè)環(huán)境中的訪問控制策略一般有三種: 自主訪問控制(DAC)、強制訪問控制(MAC)和基于角色的訪問控制(RBAC)。其中,自主訪問、強制訪問的工作量大,不便于管理。基于角色的訪問控制是目前公認的解決大型企業(yè)的統(tǒng)一資源訪問控制的有效方法。
基于角色的訪問控制基本原理是在用戶和訪問權(quán)限之間加入角色這一層,實現(xiàn)用戶和權(quán)限的分離,用戶只有通過激活角色才能獲得訪問權(quán)限。通過角色對權(quán)限分組,大大簡化了用戶權(quán)限分配表,間接地實現(xiàn)了對用戶的分組,提高了權(quán)限的分配效率。且加入角色層后,訪問控制機制更接近真實世界中的職業(yè)分配,便于權(quán)限管理。
RBAC模型是典型的基于角色的訪問控制模型,包括RBAC0、RBAC1、RBAC2和RBAC3四個不同層次的模型。其中RBAC0是基礎(chǔ)模型,定義了支持RBAC的最小需求,如用戶、角色、權(quán)限、會話等概念,RBAC0模型圖解如圖2-1所示。RBAC1加入了角色繼承關(guān)系,可以根據(jù)組織內(nèi)部權(quán)力和責任的結(jié)構(gòu)來構(gòu)造角色與角色之間的層次關(guān)系; RBAC2加入了各種用戶與角色之間、權(quán)限與角色之間以及角色與角色之間的約束關(guān)系,如角色互斥、角色最大成員數(shù)等。RBAC3是對RBAC1和RBAC2的集成,它不僅包括角色的層次關(guān)系,還包括約束關(guān)系。
在RBAC模型中,角色是系統(tǒng)根據(jù)管理中相對穩(wěn)定的職權(quán)和責任來劃分,每種角色可以完成一定的職能。用戶通過飾演不同的角色獲得角色所擁有的權(quán)限,一旦某個用戶成為某角色的成員,則此用戶可以完成該角色所具有的職能。通過將權(quán)限指定給角色而不是用戶,在權(quán)限分派上提供了極大的靈活性和極細的權(quán)限指定粒度。
3、SaaS平臺用戶設(shè)計
一般SaaS平臺基本角色由平臺管理員、租戶用戶、租戶管理員、租戶其他角色組成。如圖2-2以O(shè)2O業(yè)務(wù)的企業(yè)架構(gòu)為例,圖解系統(tǒng)角色關(guān)系。
平臺管理員:負責平臺的日常維護和管理,包括用戶日志的管理、租戶賬號審核、租戶狀態(tài)管理、租戶費用的管理,租戶權(quán)限的管理,要注意的是平臺管理員不能對租戶的具體業(yè)務(wù)進行管理。如果租戶數(shù)量大,還可以對平臺管理員劃分角色,可以按地域劃分,比如西北地區(qū)、東北地區(qū)等,讓平臺管理員分別管理不同的租戶;也可以根據(jù)業(yè)務(wù)進行劃分,比如租戶管理員,租費管理員等。
租戶:指訪問SaaS平臺的用戶企業(yè),在SaaS平臺中各租戶之間信息是獨立的。租戶信息包括租戶的名稱、地址等租戶企業(yè)的相關(guān)信息,主要用來區(qū)別各租戶,并且由平臺管理員對租戶賬號狀態(tài)進行管理。各租戶可根據(jù)需要自行選擇SaaS平臺功能模塊并依此付費。
租戶管理員:為租戶角色分配權(quán)限和相關(guān)系統(tǒng)管理、維護。
租戶用戶:根據(jù)租戶管理員分配的權(quán)限以及自己的角色進行相關(guān)的業(yè)務(wù)管理。各租戶用戶只能訪問該租戶選擇的 SaaS 平臺的功能模塊。一個系統(tǒng)用戶如果有多個角色,則他只能看到當前角色下的數(shù)據(jù),通過角色切換,可以達到查看所屬其他角色下的數(shù)據(jù)信息。
租戶角色:根據(jù)業(yè)務(wù)功能分由租戶管理員進行角色劃分,劃分好角色后,租戶管理員可以對相應(yīng)的角色進行權(quán)限分配。角色有上下級關(guān)系,上級可以查看下級的數(shù)據(jù),下級不能訪問上級的數(shù)據(jù),平級之間不能相互訪問。角色上層可再加入分組層(如分部門或團隊等),不同組別的數(shù)據(jù)范圍不同,資源、操作可以共享也可以隔離。