天天看點

部門角色權限rbac_如何設計産品中的角色權限子產品

今天要分享的是前雲天勵飛進階産品經理、現平安進階産品經理Joseph Liu的一篇文章。産品中的“角色權限”子產品幾乎是每一個産品經理繞不開的話題,無論平台級産品還是功能型産品,都會涉及到角色的功能權限。很多産品經理都知道角色和使用者的概念,實際産品設計中看着同行都這麼做,是以自己也這麼設計了。但本文中Joseph引入了RBAC模型,從底層闡述這一套設計邏輯,終于讓大家既知其然,也知其是以然。

部門角色權限rbac_如何設計産品中的角色權限子產品
部門角色權限rbac_如何設計産品中的角色權限子產品

01 “角色權限”的前世今生

角色權限是隐藏在一款産品背後的重要功能,可以說幾乎每一個産品都需要角色權限,尤其展現在企業管理、帶有流程審批的2B系統中,角色權限的使用則更加頻繁。

我們先從普通使用者和系統管理者兩個角度來看一看,他們對角色權限已有的認知和訴求都有什麼。

普通使用者既有的認知:

    知道自己有哪些權限【權限清單】

    我沒有這個權限,去找管理者開通

    知道自己所在的部門,公司各部門下有哪些同僚【組織架構】

    我知道前兩天的請假審批流程,今天上午11點,已經走到二上司了【流程審批】

再看看管理者的認知:

希望系統初始化時就和我公司的業務相比對了,減少工作量。

剩餘20%個性化角色權限,提供自定義功能。

公司部門多,我需要每個部門都有自己的幫手,也就是子管理者。

是以,總結看來,角色權限的流程其實很簡單清晰。

部門角色權限rbac_如何設計産品中的角色權限子產品
簡單來講,角色權限是将角色、權限、使用者群組織架構,進行歸屬和關聯的邏輯過程。

現以釘釘的角色權限管理為例,提供幾張頁面邏輯圖。

部門角色權限rbac_如何設計産品中的角色權限子產品

權限清單

部門角色權限rbac_如何設計産品中的角色權限子產品

角色管理

部門角色權限rbac_如何設計産品中的角色權限子產品

組織架構和使用者

部門角色權限rbac_如何設計産品中的角色權限子產品

02 角色權限的RBAC模型

從使用者的角度簡單的了解了角色權限,我們再來詳細的講講業内标準的RBAC模型。

一、RBAC模型是什麼?

RBAC是一套成熟的權限模型。在傳統權限模型中,我們直接把權限賦予使用者。而在RBAC中,增加了“角色”的概念,我們首先把權限賦予角色,再把角色賦予使用者。這樣,由于增加了角色,授權會更加靈活友善。在RBAC中,根據權限的複雜程度,又可分為RBAC0、RBAC1、RBAC2、RBAC3。其中,RBAC0是基礎,RBAC1、RBAC2、RBAC3都是以RBAC0為基礎的更新。我們可以根據自家産品權限的複雜程度,選取适合的權限模型。

部門角色權限rbac_如何設計産品中的角色權限子產品

RBAC權限模型

二、基本模型RBAC0

解析:

RBAC0是基礎,很多産品隻需基于RBAC0就可以搭建權限模型了。在這個模型中,我們把權限賦予角色,再把角色賦予使用者。使用者和角色,角色和權限都是多對多的關系。使用者擁有的權限等于他所有的角色持有權限之和。

部門角色權限rbac_如何設計産品中的角色權限子產品

RBAC0基本模型

舉例:

譬如我們做一款企業管理産品,如果按傳統權限模型,給每一個使用者賦予權限則會非常麻煩,并且做不到批量修改使用者權限。這時候,可以抽象出幾個角色,譬如銷售經理、财務經理、市場經理等,然後把權限配置設定給這些角色,再把角色賦予使用者。這樣無論是配置設定權限還是以後的修改權限,隻需要修改使用者和角色的關系,或角色和權限的關系即可,更加靈活友善。此外,如果一個使用者有多個角色,譬如王先生既負責銷售部也負責市場部,那麼可以給王先生賦予兩個角色,即銷售經理+市場經理,這樣他就擁有這兩個角色的所有權限。

三、角色分層模型RBAC1

解析:

RBAC1建立在RBAC0基礎之上,在角色中引入了繼承的概念。簡單了解就是,給角色可以分成幾個等級,每個等級權限不同,進而實作更細粒度的權限管理。

部門角色權限rbac_如何設計産品中的角色權限子產品

RBAC1基本模型

舉例:

基于之前RBAC0的例子,我們又發現一個公司的銷售經理可能是分幾個等級的,譬如除了銷售經理,還有銷售副經理,而銷售副經理隻有銷售經理的部分權限。這時候,我們就可以采用RBAC1的分級模型,把銷售經理這個角色分成多個等級,給銷售副經理賦予較低的等級即可。

四、角色限制模型RBAC2

解析:

RBAC2同樣建立在RBAC0基礎之上,僅是對使用者、角色和權限三者之間增加了一些限制。這些限制可以分成兩類,即靜态職責分離SSD(Static Separation of Duty)和動态職責分離DSD(Dynamic Separation of Duty)。具體限制如下圖:

部門角色權限rbac_如何設計産品中的角色權限子產品

RBAC2基本模型

舉例:

還是基于之前RBAC0的例子,我們又發現有些角色之間是需要互斥的,譬如給一個使用者配置設定了銷售經理的角色,就不能給他再賦予财務經理的角色了,否則他即可以錄入合同又能自己稽核合同;再譬如,有些公司對角色的更新十分看重,一個銷售員要想更新到銷售經理,必須先更新到銷售主管,這時候就要采用先決條件限制了。

五、統一模型RBAC3

解析:

RBAC3是RBAC1和RBAC2的合集,是以RBAC3既有角色分層,也包括可以增加各種限制。

部門角色權限rbac_如何設計産品中的角色權限子產品

RBAC3基本模型

六、基于RBAC的延展——使用者組

解析:

基于RBAC模型,還可以适當延展,使其更适合我們的産品。譬如增加使用者組概念,直接給使用者組配置設定角色,再把使用者加入使用者組。這樣使用者除了擁有自身的權限外,還擁有了所屬使用者組的所有權限。

部門角色權限rbac_如何設計産品中的角色權限子產品

使用者組對應關系

舉例:

譬如,我們可以把一個部門看成一個使用者組,如銷售部,财務部,再給這個部門直接賦予角色,使部門擁有部門權限,這樣這個部門的所有使用者都有了部門權限。使用者組概念可以更友善的給群體使用者授權,且不影響使用者本來就擁有的角色權限。

七、補充:組織架構

在企業中,一般是有組織架構的。使用者的邏輯展現形式就是基于組織架構呈現的,如果隐藏掉組織架構,使用者就按照拼音/入職時間等排序方式一字排開了。

一個使用者是可以屬于多個部門,那麼就擁有多部門權限的集合了。部門的主管人員,是與該部門平級的,換句話說,部門主管就代表着這個部門。

部門角色權限rbac_如何設計産品中的角色權限子產品

End

部門角色權限rbac_如何設計産品中的角色權限子產品
部門角色權限rbac_如何設計産品中的角色權限子產品