一文讀懂用戶權(quán)限設(shè)計
用戶權(quán)限管理是指在B端后臺中,需要給用戶賦予角色和訪問權(quán)限等,是很多后臺系統(tǒng)建設(shè)的基礎(chǔ)。那我們應如何入手進行搭建呢?作者結(jié)合實際工作中的經(jīng)驗,將這部分的理解梳理出來,希望能對你有所幫助。
一、為什么要進行用戶權(quán)限設(shè)計?
用戶權(quán)限設(shè)計的目的是對不同的人訪問資源進行權(quán)限的控制,避免因權(quán)限控制缺失或操作不當引發(fā)的風險問題,如操作錯誤,隱私數(shù)據(jù)泄露等問題。
在B端系統(tǒng)中,不同角色的用戶對于系統(tǒng)功能和數(shù)據(jù)的需求是不同的,因此需要對用戶進行分類,并為每個分類分配相應的角色和權(quán)限。
這里我們以O(shè)A系統(tǒng)為例,系統(tǒng)提供了100多個菜單頁面,但是有多種不同身份的使用者,這時,我們就需要對不同的員工,相同部門級別不同的員工分配權(quán)限,這就要求我們必須在后臺系統(tǒng)中引入用戶權(quán)限設(shè)計。
例如:
HR和行政人員可以看到【員工信息頁面】,但HR的頁面有【入職】按鈕,而行政卻沒有;
再比如:
財務部有2名員工,員工A負責研發(fā)部的財務預算支出,員工B負責銷售部的預算支出,雖然他們倆都能訪問【預算支出頁面】,但卻只能看到自己管轄的部門的,不能看到其他人的。而財務總監(jiān),可以看到全公司的預算數(shù)據(jù)。
二 、系統(tǒng)權(quán)限
在講完了為什么需要進行用戶權(quán)限設(shè)計之后,我們再來講下常見的權(quán)限。
1. 菜單權(quán)限
菜單權(quán)限是指用戶登錄系統(tǒng)后可以訪問的菜單項,我們可以將菜單授權(quán)給用戶,擁有該授權(quán)的用戶則可以使用該菜單下相關(guān)功能。菜單權(quán)限相較于其他權(quán)限而言,是最基礎(chǔ)的權(quán)限,其他權(quán)限基于菜單權(quán)限展開拓展。
常見的功能菜單以一級菜單 → 二級菜單 → 三級菜單依次排列,勾選上對應的菜單,即擁有該菜單的訪問權(quán)限。
2. 按鈕權(quán)限
按鈕權(quán)限一般也可理解為操作權(quán)限,是指用戶登錄系統(tǒng)后可以進行的操作,例如查看、編輯、刪除等。我們一般將操作權(quán)限賦予到按鈕上,當需要給某類用戶某種特定的按鈕權(quán)限時,將按鈕權(quán)限賦予用戶,那么用戶即擁有操作權(quán)限。例如銷售部門可以查看、編輯客戶信息、訂單信息,而運營部門只能查看。
以下是我們公司的一些常見的按鈕權(quán)限的配置樣式,我們一般喜歡將按鈕權(quán)限配置在某個菜單之下,當勾選中該按鈕時,則表示對應的角色有該按鈕權(quán)限。
3. 數(shù)據(jù)權(quán)限
數(shù)據(jù)展示權(quán)限是指用戶登錄系統(tǒng)后可以查看的數(shù)據(jù)范圍,即能查看多少數(shù)據(jù),什么類型的數(shù)據(jù)。例如,管理員能查看所有坐席人員的質(zhì)檢記錄,而坐席人員只能查看自己的質(zhì)檢記錄。
最常見的數(shù)據(jù)權(quán)限一般是基于“組織架構(gòu)樹”展開的,即可以設(shè)置該數(shù)據(jù)可以給組織結(jié)構(gòu)中的哪些人員可見,或者指定給某個組織可見。
數(shù)據(jù)權(quán)限的設(shè)置一般會根據(jù)公司規(guī)模,事業(yè)線的多少做區(qū)分,當公司規(guī)模比較小,沒有復雜的多事業(yè)線時,一般采用以下方式,決定用戶能看到是本人,還是本部門,還是本公司的數(shù)據(jù)。
當公司規(guī)模較大,且公司下有多個子事業(yè)部時,這時可以將數(shù)據(jù)權(quán)限按組織架構(gòu)進行指定,指定xx事業(yè)部下xx部門可進行查看該數(shù)據(jù)權(quán)限。
上述說的2種數(shù)據(jù)權(quán)限,一般更多指的是數(shù)據(jù)的查看權(quán)限,那如果想控制某些部門不僅可以查看,還可以擁有編輯的權(quán)限。除了可以通過按鈕權(quán)限實現(xiàn)以外,還可以將數(shù)據(jù)權(quán)限的增刪改權(quán)限賦予給某個某部門,那擁有該權(quán)限的部門則可進行編輯等權(quán)限。
參考以下示例(一般不建議這種數(shù)據(jù)權(quán)限控制)。
那除了對某個頁面進行整體的數(shù)據(jù)權(quán)限控制以外,我們還可以針對某一列某一行進行權(quán)限控制。例如【員工信息頁面】,人事可以身份證號列,而行政卻看不到。
4. 應用權(quán)限
應用權(quán)限是功能組的衍生,可以把應用權(quán)限理解功能模塊的集合,一般更多的用于saas產(chǎn)品上。例如,我們可以把功能合并一下:包含戰(zhàn)略管理、財務管理、人事管理、訂單管理幾個模塊整合成幾個大的應用,然后根據(jù)企業(yè)的需求,直接將該應用的權(quán)限分配到用戶上。
三、角色
講完了系統(tǒng)的角色,接下來需要解決用戶的問題。系統(tǒng)有很多用戶,那如何給每一個用戶分配合適的權(quán)限?一般有2種方式。
1. 直接分配
直接分配就是直接將權(quán)限分配給具體的某一個用戶。這種方式就是比較靈活,能最大化的滿足每個用戶的個性化需求。但這種方式的缺點也比較明顯,一旦用戶量多起來,這種工作量就很大,不適合于大規(guī)模的公司。
舉個簡單的例子:當公司入職了10名銷售部的新員工,需要給他們分配銷售專員的角色,那這時如果用直接分配的方式,那么就得重復操作10次,這種方式工作量太大,相信到時候分配權(quán)限的員工,肯定會吐槽你。
2. 基于角色RBAC模型進行分配
RBAC(Role-BasedAccess Control)基于角色的訪問控制方式:該模型首先定義一些組織內(nèi)的角色,如局長、科長、職員;再根據(jù)管理規(guī)定給這些角色分配相應的權(quán)限,最后對組織內(nèi)的每個人根據(jù)具體業(yè)務和職位分配一個或多個角色。
基于角色RBAC模型的分配方式,就是間接分配方式,這是將用戶跟權(quán)限之間建立一個集合,然后將用戶通過角色與權(quán)限進行管理,這就是我們傳說的用戶角色權(quán)限模型。
這種方式就只需要將用戶跟角色建立關(guān)聯(lián),在給用戶分配權(quán)限時,只需要給用戶關(guān)聯(lián)角色即可。當角色權(quán)限需要變更時,直接調(diào)整角色權(quán)限即可,擁有該角色的用戶權(quán)限也會同步進行動態(tài)調(diào)整。
RBAC模型可以分為:RBAC0、RBAC1、RBAC2、RBAC3 四種。
RBAC0:最基本模型,它包括用戶、角色和權(quán)限三個基礎(chǔ)組成部分,其中用戶和角色之間的關(guān)系是多對一的關(guān)系,而角色和權(quán)限之間的關(guān)系是多對多的關(guān)系(大部分后臺系統(tǒng)都采用了RBAC0這種方式),
- 多對一:即一個角色被多個用戶充當;
- 多對多:即一個角色可以擁有多種權(quán)限。
那么,什么時候該使用多對一的權(quán)限體系,什么時候又該使用多對多的權(quán)限體系呢?
如果系統(tǒng)功能比較單一,使用人員較少,崗位權(quán)限相對清晰且確保不會出現(xiàn)兼崗的情況,此時可以考慮用多對一的權(quán)限體系。其余情況盡量使用多對多的權(quán)限體系,保證系統(tǒng)的可擴展性。如:張三既是行政,也負責財務工作,那張三就同時擁有行政和財務兩個角色的權(quán)限。
RBAC1:角色分層模型,RBAC1是在RBAC0的基礎(chǔ)上增加了角色分層的概念,引入繼承概念,即高層級高的角色可以繼承低等級的角色的所有權(quán)限。
例如針對銷售部門,不同的區(qū)域銷售經(jīng)擁有不同的角色,顯然全國區(qū)經(jīng)理的權(quán)限是不能大于華南區(qū)經(jīng)理的,如果這時候采用RBAC0的方式的話,就有可能出現(xiàn)配置出錯的問題,會導致華南區(qū)經(jīng)理擁有了全股區(qū)經(jīng)理都沒有的權(quán)限。
那如果這時引入RBAC1角色分層,配置好廣東區(qū)經(jīng)理的角色外,華南區(qū)經(jīng)理的角色就自動繼承了廣東區(qū)經(jīng)理的角色,這時候再給華南區(qū)經(jīng)理分配該角色特有的權(quán)限就可。
RBAC2:角色限制模型,RBAC2是在RBAC0的基礎(chǔ)上增加了對角色的限制,包含基數(shù)約束、角色互斥、先決條件、運行互斥等。
- 基數(shù)約束:基數(shù)約束是指給一個角色被分配給多少個用戶是有上限的,不能無限制的添加,即如果創(chuàng)建了總經(jīng)理的角色,那這個角色被賦予的用戶數(shù)是有限的,當超過時,該角色將不能再分配給用戶。
- 角色互斥:角色互斥是指一個用戶不可能同時擁有多個互斥的角色,就像財務系統(tǒng)種,一個用戶不能同時擁有財務和會計的角色。
- 先決條件:先決條件是指用戶要想獲得高層級的權(quán)限,必須先擁有低層級的權(quán)限,好比如必須先擁有財務助理的權(quán)限,才能擁有財務經(jīng)理的權(quán)限。
- 運行互斥:運行互斥是指使用時只能選擇一個角色進行使用,好比如老師和家長,一個用戶即可能家長也可能是老師,那在使用時,只能選擇使用家長的角色或者時老師的角色,不能2個角色同時使用。
RBAC3:統(tǒng)一模型,基于RBAC0進行設(shè)計,同時包含了RBAC1和RBAC2模型的特點。但一般后臺系統(tǒng)中,使用RBAC3的情況很少,大部分公司都是采用了RBAC0。
四、用戶、角色、權(quán)限之間的關(guān)系
在講完了RBAC模型之后,再跟大家分享一下用戶、角色、權(quán)限以及他們對應的組別。
- 用戶:即系統(tǒng)訪問的操作者,可以理解為登錄系統(tǒng)的用戶;
- 權(quán)限:即被允許訪問或某種操作的授權(quán)資格,一般可以理解為對系統(tǒng)的增刪改查權(quán)限;
- 角色:即具有同類相同操作權(quán)限的用戶。
例如:用戶張三,他在OA系統(tǒng)中被賦予了HR的角色,那他則可以操作【員工入職】的權(quán)限。
在某些用戶數(shù)量或者系統(tǒng)功能復雜的后臺系統(tǒng)中,為了方便統(tǒng)一管理,還會引入組的概念,即用戶組,權(quán)限組,角色組。
- 用戶組:用戶的集合。當用戶數(shù)量較多時,可以給用戶進行分組。當公司有新員工入職或者需要給員工分配其他角色時,只需要將用戶加入用戶組,那么該用戶就自動擁有了該用戶組的權(quán)限,無需再一一設(shè)置了。
- 角色組:角色的集合,當多個角色均需擁有相同的權(quán)限時,可以采用角色組,例如行政人員,HR均需看到公司的員工信息,那么此時可以將HR、行政建立一個角色組,再將查看員工信息的權(quán)限賦予該用戶組,那么用戶組內(nèi)的角色就自動擁有了這些權(quán)限。
- 權(quán)限組:權(quán)限的集合,可以給權(quán)限設(shè)置一個權(quán)限組,例如可以將查看查看員工業(yè)績、查看客戶信息關(guān)聯(lián)成一個權(quán)限組,當下次需要給用戶賦予權(quán)限時,直接選擇該權(quán)限組即可,就不需要一一去設(shè)置多個權(quán)限了。
五、總結(jié)
1. 根據(jù)需要設(shè)計用戶權(quán)限體系
我們應根據(jù)公司的實際需要,設(shè)計最適合的用戶權(quán)限體系,不應過分的追求功能的大而全,最適合的才是最好的。
2. 需要考慮使用者的感受
在設(shè)計前端樣式及使用情況時,需考慮用戶的使用成本,應盡可能的確保設(shè)計的系統(tǒng)簡單通俗易用。
本文由 @Camisha 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務。
作者微信有嗎,希望能交流一下
角色管理菜單,數(shù)據(jù)權(quán)限單獨建一個權(quán)限組。用戶分別掛角色和數(shù)據(jù)權(quán)限組。這樣更加清晰。
不錯的建議,但我們公司規(guī)模沒那么多,可以不用考慮這個。
不錯??