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