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