權限管理的作用
SaaS后臺系統(tǒng)中,數(shù)據(jù)具有敏感性此叠,由于工作職責不同,所以用戶擁有的權限也不同随珠。因此灭袁,系統(tǒng)需要給用戶分配權限猬错,使得用戶在規(guī)定范圍內(nèi)使用系統(tǒng)。
RBAC模型介紹
本文介紹的RBAC模型是一個模型族茸歧,它包含了RBAC0~RBAC3四個概念性模型倦炒。
- 基本模型RBAC0定義了完全支持RBAC概念的任何系統(tǒng)的最低需求。RBAC1和RBAC2兩者都包含RBAC0举娩,但各自都增加了獨立的特點析校,它們被稱為高級模型。
- RBAC1中增加了角色分級的概念铜涉,一個角色可以從另一個角色繼承許可權智玻。
- RBAC2中增加了一些限制,強調(diào)在RBAC的不同組件中在配置方面的一些限制芙代。
- RBAC3稱為統(tǒng)一模型吊奢,它包含了RBAC1和RBAC2,利用傳遞性纹烹,也把RBAC0包括在內(nèi)页滚。這些模型構成了RBAC模型族。
本文主要介紹RBAC0模型铺呵,雖然是最基礎裹驰、最核心的權限模型,但只要學習理解了其中的思想片挂,便可以設計RBAC1~3的模型了幻林;
RABC0的設計
RBAC(Role-Based Access Control )意為基于角色的訪問控制,角色是權限集合音念,通過給用戶分配權限達到控制訪問的目的沪饺。
RBAC認為權限的過程可以抽象概括為:判斷【W(wǎng)ho是否可以對What進行How的訪問操作(Operator)】這個邏輯表達式的值是否為True的求解過程。
即將權限問題轉(zhuǎn)換為Who闷愤、What整葡、How的問題,因此我們需要定義的是角色讥脐、資源和行為遭居。
比如我們需要考慮:
- 系統(tǒng)有哪些用戶,可以分為哪些角色攘烛;
- 系統(tǒng)有哪些功能(資源)需要按權限來劃分魏滚;
- 功能(資源)的拆分粒度,到頁面還是到具體按鈕操作坟漱;
- 新用戶的默認角色和權限鼠次;
- 用戶與角色是“多對一”還是“多對多”;
- 新增的功能是默認全部角色“可用”還是“不可用”;
- ......
這些都是比較細節(jié)的問題腥寇,我們在設計功能時需要考慮成翩。
下面主要說一下Who,What赦役,How的定義麻敌。
1.定義角色(Who)
前期需要進行用戶訪談,了解不同崗位的用戶的工作職責掂摔,并抽象出幾個角色术羔。
然后,用戶與角色之間的關系需要明確是“多對一”還是“多對多”乙漓。這個問題需要結合業(yè)務場景進行討論级历,如果用戶的工作職責界限分明、不同工作崗位都有專門員工叭披,那么此時可以設計成“多對一”寥殖,即用戶只有一個角色,一個角色可以對應多個用戶涩蜘;
如果某些用戶的工作內(nèi)容跨越幾個職能嚼贡,則可以設計成“多對多”,即一個用戶可擁有多個角色同诫,一個角色也可對應多個用戶粤策。
這里還需注意的是,為了系統(tǒng)的靈活性误窖,角色的權限應是可編輯的掐场,管理員可以創(chuàng)建角色,并對角色的權限進行修改以應對工作場景的變化贩猎。
2.定義資源(What)
資源包括功能和數(shù)據(jù)。
定義功能時需要明確萍膛,功能權限到頁面級別還是操作級別吭服。在一些權限嚴格的業(yè)務場景,比如電商ERP中蝗罗,則會要求定義到操作級別艇棕,比如銷售報表導出按鈕,計算毛利率按鈕等串塑;如果權限比較寬松的沼琉,則可能只到頁面級別,比如該角色是否能訪問訂單列表等等桩匪。這些都需要根據(jù)業(yè)務需求決定打瘪。
定義數(shù)據(jù)時則比較簡單,可以根據(jù)該角色綁定的店鋪或區(qū)域來限制用戶的數(shù)據(jù)權限,比如美國運營專員只綁定美國區(qū)的闺骚,則只能獲取美國區(qū)的數(shù)據(jù)彩扔。
3.定義行為(How)
行為包括增刪查改。不同的角色可根據(jù)需要設置不同的操作權限僻爽,比如對于同樣的成績管理頁面虫碉,學生只能查看成績,不能修改成績胸梆;但教師同時擁有修改成績和查看成績的功能敦捧。