三個模塊,搭建后臺用戶角色權(quán)限管理系統(tǒng)

11 評論 129608 瀏覽 402 收藏 15 分鐘

一個后臺的用戶角色權(quán)限系統(tǒng)總是可以大概劃分為三個打的模塊的:用戶管理、角色管理、權(quán)限管理。本文作者將就此三個模塊展開敘述,enjoy~

一. 用戶角色權(quán)限系統(tǒng)說明

1. RBAC權(quán)限設(shè)計模型

(1)RBAC

(Role-Based Access Control,基于角色的訪問控制),就是用戶通過角色與權(quán)限進(jìn)行關(guān)聯(lián),從而獲得某些功能的使用權(quán)限。權(quán)限被賦予給角色,而不是用戶,但是一個用戶可以擁有若干個角色,當(dāng)一個角色被賦予給某一個用戶時,此用戶就擁有了該角色所包含的功能權(quán)限。簡單地說,一個用戶擁有若干角色,每一個角色擁有若干功能權(quán)限。這樣,就構(gòu)造成“用戶-角色-權(quán)限”的授權(quán)模型。在這種模型中,用戶與角色之間,角色與權(quán)限之間,一般者是多對多的關(guān)系。如下圖:

2. 三大模塊搭建后臺用戶角色權(quán)限系統(tǒng)

如上所述,一個后臺的用戶角色權(quán)限系統(tǒng)總是可以大概劃分為三個打的模塊的:用戶管理、角色管理、權(quán)限管理。用戶管理往往隨著行政部門劃分或者隨著業(yè)務(wù)線部門劃分,對應(yīng)部門或者小組內(nèi)的用戶有著基本相似的功能需求和權(quán)限等級;角色管理相對來講更加固定,它往往是基于業(yè)務(wù)管理需求而預(yù)先在系統(tǒng)中設(shè)定好的角色標(biāo)簽,一般不會隨意更改,更像是一個用戶分組標(biāo)簽;權(quán)限管理內(nèi)容相對更加龐雜和豐富,主要包含了目標(biāo)、操作和許可權(quán)三個部分,當(dāng)某一功能權(quán)限授權(quán)給用戶時,也就相當(dāng)于為該用戶開通了可以操作某個目標(biāo)功能的許可權(quán)。

角色權(quán)限系統(tǒng)屬于策略設(shè)計的范疇,它的設(shè)計非常考驗一個PM對業(yè)務(wù)的理解力以及對自己后臺所有功能的熟悉程度。做角色權(quán)限系統(tǒng)之前一定要先深度了解業(yè)務(wù)流程以及后臺的所有功能模塊,在不了解的情況下,多向相關(guān)同事請教,避免角色權(quán)限系統(tǒng)設(shè)計過程中出差錯和邏輯漏洞。

二. 用戶角色權(quán)限系統(tǒng)建設(shè)的三大模塊

1.? 用戶管理

用戶管理中的用戶主要是功能系統(tǒng)的使用者,這些用戶是一個一個的員工個體,這些個體往往從兩個維度來進(jìn)行劃分:行政關(guān)系(部門架構(gòu))、業(yè)務(wù)部門(業(yè)務(wù)架構(gòu))。用戶管理就是在此兩個維度來給員工個體進(jìn)行關(guān)聯(lián)性的初步分群或者分組。按照行政部門或者按照業(yè)務(wù)線部門劃分后,對應(yīng)部門或者小組內(nèi)的用戶有著基本相似的系統(tǒng)功能使用需求和權(quán)限等級;

注:上圖例為按照行政關(guān)系劃分的用戶管理模式

注:上圖例為按照業(yè)務(wù)線關(guān)系劃分的用戶管理模式

2. 角色管理

(1)角色管理

角色往往是基于業(yè)務(wù)管理需求而預(yù)先在系統(tǒng)中設(shè)定好的固定標(biāo)簽,每個角色對應(yīng)明確的系統(tǒng)權(quán)限,其所擁有的系統(tǒng)權(quán)限一般不會隨意更改,并且角色也不會隨著用戶的被添加和被移除而進(jìn)行改變,相較于用戶管理而言更加穩(wěn)定;

(2)自動賦權(quán):用戶自動進(jìn)入角色

如果角色與行政關(guān)系下的組織部門存在綁定關(guān)系,那么如果一個用戶進(jìn)入到該組織部門后,該用戶會自動被加入到對應(yīng)的角色中,并且擁有該角色所有的系統(tǒng)權(quán)限。如一個財務(wù)人員【小張】入職財務(wù)部后,那么該用戶無需進(jìn)行額外的授權(quán)即可在對應(yīng)財務(wù)報表系統(tǒng)查看該部門員工可查看的財務(wù)數(shù)據(jù)報表和對應(yīng)的操作權(quán)限(比如操作財務(wù)審批等);

(3)角色賦權(quán):用戶被添加進(jìn)角色

業(yè)務(wù)是不斷創(chuàng)新和發(fā)展的,隨著業(yè)務(wù)的發(fā)展,會有越來越多的新的角色被設(shè)置和創(chuàng)建,比如公司新啟動了一個企業(yè)團(tuán)餐項目,項目部橫向的從各個部門找了多個員工組建項目團(tuán)隊,并且該項目的業(yè)務(wù)權(quán)限也只是授權(quán)給這批員工可查看和操作,那么,在此項目中,會產(chǎn)生一個新的角色 “ 財務(wù)1 ”,系統(tǒng)高級管理員會把從財務(wù)部門選中的財務(wù)【小張】添加到“ 財務(wù)1 ”這個角色中,那么【小張】即可獲得查看企業(yè)團(tuán)餐項目業(yè)務(wù)數(shù)據(jù)報表和操作的權(quán)限。這種權(quán)限的授予無法通過用戶行政關(guān)系的自動綁定來實現(xiàn);

(4)角色繼承:角色權(quán)限的繼承

權(quán)限可以是獨有的,也可以是繼承的。每個角色都有自己的權(quán)限集,角色繼承其實也就是繼承父系角色的權(quán)限,一般角色在繼承其父系角色的全部權(quán)限的基礎(chǔ)上增加擁有一些自己的權(quán)限。而系統(tǒng)角色繼承往往存在于用戶分級管理比較明確的團(tuán)隊或者公司;

(5)角色互斥:角色包含的權(quán)限互斥

角色互斥的業(yè)務(wù)背景:當(dāng)一個業(yè)務(wù)流程由于風(fēng)控的原因,需要將其操作給劃分成分開的幾個步驟時,需要給這幾個不同的步驟授權(quán)不同的角色,并且這些角色之間需要進(jìn)行互斥。比如大額財務(wù)報銷審批流程,財務(wù)人員【小張】擁有了審批人權(quán)限后,就無法將審核確認(rèn)的權(quán)限再授予小張,以此來規(guī)避一個人完成大額報銷而帶來的財務(wù)風(fēng)險;

(6)臨時角色

臨時角色往往是針對特殊群體設(shè)置的,比如公司有特殊訪問團(tuán)隊蒞臨,需要給這些特殊的客戶一些臨時身份來體驗?zāi)承┕δ懿僮?。那么把這些人添加到部門的組織架構(gòu)中顯然是不合適的,因為這些人只是臨時的擺放者,不是企業(yè)員工;其次,這些客戶需要體驗的功能操作往往是橫跨多個業(yè)務(wù)模塊和產(chǎn)品線的(比較繁雜),一般公司并沒有現(xiàn)成的固定角色符合擁有客戶所需的全部操作權(quán)限,因此需要給這些客戶開設(shè)臨時角色,并且支持給臨時角色最大的權(quán)限選擇空間;

(7)黑白名單

3. 權(quán)限管理

(1)權(quán)限管理

權(quán)限管理更多是從功能菜單、功能操作、數(shù)據(jù)參數(shù)三個不同顆粒度等級來考量的。具體顆粒度的大小視公司結(jié)構(gòu)和團(tuán)隊規(guī)模而定,如果不是業(yè)務(wù)屬性一定要求將權(quán)限控制到非常精細(xì)的級別,其實就沒有必要將權(quán)限的顆粒度拆分到具體某一項操作或者某一個按鈕,畢竟后臺產(chǎn)品的核心是業(yè)務(wù)管理平臺,主要目標(biāo)是輔助業(yè)務(wù)的管理和推進(jìn)。

注:如圖為某一后臺產(chǎn)品的部分截圖,其中可見功能菜單頁、功能操作按鈕和數(shù)據(jù)字段。

(2)功能菜單權(quán)限

對于后臺產(chǎn)品來講,針對功能菜單來劃分用戶權(quán)限其實是比較粗顆粒度的一種管理方式,這種模式下用戶一旦獲得授權(quán)即可使用該菜單欄下的全部數(shù)據(jù)查看權(quán)限和功能操作權(quán)限;

(3)功能操作權(quán)限

功能操作層級的權(quán)限相對于功能菜單會更為深入,這種情況下,不同角色的用戶可以進(jìn)入同一菜單頁后臺查看相同的數(shù)據(jù)字段信息,但是他們可執(zhí)行的功能操作不同;

(4)數(shù)據(jù)字段權(quán)限

數(shù)據(jù)字段層面是較細(xì)顆粒度的拆分,他會實現(xiàn)不同角色用戶在進(jìn)入同一菜單頁后臺時,可見的數(shù)據(jù)字段都有差異。比如銷售人員進(jìn)入某銷售業(yè)績管理后臺時,可以看到自己的業(yè)績提升數(shù)據(jù),但是財務(wù)人員看到的是業(yè)務(wù)工單的費用字段,這些字段共存在一個菜單頁中,只是受限于不同的角色權(quán)限而已。

三. 案例分析

1. 促銷活動權(quán)限系統(tǒng)權(quán)限對接

以某一促銷活動的后臺從無權(quán)限限制到接入用戶角色權(quán)限管理系統(tǒng)為例,詳情如下:

注:以上為某產(chǎn)品的促銷活動管理后臺截圖

2. 促銷活動后臺接入權(quán)限系統(tǒng)前

在促銷活動后臺接入權(quán)限系統(tǒng)之前,幾乎全部的系統(tǒng)權(quán)限都處于裸奔的狀態(tài),所有人業(yè)務(wù)線成員都可以查看該后臺的運營活動內(nèi)容和運營結(jié)果數(shù)據(jù),并且可以執(zhí)行相對敏感的操作。這種情況顯然是存在一定的管理風(fēng)險的,因此該后臺系統(tǒng)需要對接權(quán)限管理系統(tǒng)進(jìn)行系統(tǒng)化管理和風(fēng)險控制;

3. 促銷活動后臺接入權(quán)限系統(tǒng)時

促銷活動在接入權(quán)限管理系統(tǒng)過程中,需要拆解該功能模塊的權(quán)限元素(到一定顆粒度),因此需要根據(jù)業(yè)務(wù)特征來判斷需要拆分的顆粒度,是到功能菜單、功能操作還是數(shù)據(jù)字段的級別,明確拆分顆粒度之后,權(quán)限管理系統(tǒng)才可以給不同角色按照顆粒度授予權(quán)限;

4. 促銷活動后臺接入權(quán)限系統(tǒng)后

促銷活動在接入權(quán)限管理系統(tǒng)過程后,當(dāng)對應(yīng)角色的用戶再次登錄這個后臺時,首先后臺會校驗該用戶的角色是否擁有該功能模塊的權(quán)限,以及該角色權(quán)限對應(yīng)的操作權(quán)限和數(shù)據(jù)字段權(quán)限,校驗結(jié)果經(jīng)服務(wù)端處理會在產(chǎn)品端展示給用戶可見。這個時候,同一用戶再該后臺可見和可執(zhí)行的操作與接入權(quán)限管理系統(tǒng)之前可能有很大的不同,這就是基于用戶角色的權(quán)限管理系統(tǒng)帶來的改變。

四. Q&A

1. 一個用戶擁有多個角色,多角色之間如果存在互斥關(guān)系如何處理?

如果一個用戶已經(jīng)被添加到某一角色范圍下,那么,當(dāng)給該用戶添加一個與當(dāng)前角色存在權(quán)限互斥關(guān)系的角色時,系統(tǒng)會進(jìn)行互斥性判斷,后面的角色就無法給該用戶添加成功;

2. 業(yè)務(wù)發(fā)展過程中,如何保證不同角色之間權(quán)限拆分清晰?

隨著業(yè)務(wù)的快速發(fā)展,一定會不斷新增不同的角色和更多的功能模塊,而且這些角色和功能權(quán)限之間的關(guān)系也會日益混亂,這個時候需要產(chǎn)品經(jīng)理和業(yè)務(wù)方一起,及時的面對業(yè)務(wù)的發(fā)展變化,及時、快速的梳理業(yè)務(wù)調(diào)整范圍,作出對應(yīng)的改變;

3. 用戶權(quán)限管理系統(tǒng)核心難點是前期的產(chǎn)品設(shè)計嗎?

用戶權(quán)限管理系統(tǒng)核最難的不是前期的產(chǎn)品設(shè)計,而是后續(xù)的運營維護(hù),因為權(quán)限系統(tǒng)的結(jié)構(gòu)往往不會隨意變更,但是隨著業(yè)務(wù)發(fā)展快速出現(xiàn)的角色和功能模塊,為了防止角色和功能權(quán)限之間的關(guān)系變得混亂,在建立新的角色和分配權(quán)限的時候需要思路清晰且慎重調(diào)整。

完結(jié)~

 

本文由 @陽明(劉同) & @云殊(張俊恒)原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自 unsplash,基于 CC0 協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 反復(fù)研讀多遍

    來自廣東 回復(fù)
  2. 很受用,原來對于角色橋梁的作用理解不深,本文中關(guān)于角色的自動賦權(quán)、角色繼承、角色互斥的功能加深了我對角色的理解,對現(xiàn)有工作也有所啟發(fā)。感謝分享。
    針對權(quán)限管理這塊有沒有更深入介紹的文章可以學(xué)習(xí),求推薦

    來自福建 回復(fù)
  3. 請教下大佬類似下面問題如何設(shè)計:
    x公司銷售部門,分a、b兩組
    1.a組長可以查看、修改、審批a員工表單,
    2.a組成員可以查看b組表單
    3.b組長在a組長授權(quán)的情況下可以代為審批a組成員表單
    4.a組、b組成員只能查看管理a組,無法看到b組表單(這種同部門的銷售訂單用的相同頁面)

    回復(fù)
    1. 不是大佬,簡單說下
      1、補充一下前提信息,
      1.1先統(tǒng)一名詞,a/b員工表單,a/b組成員表單,a/b組皆統(tǒng)一為a/b成員表
      1.2假設(shè)a組長只能管(增刪改查)a成員表
      1.3假設(shè)b組成員只能看a成員表,看不到b成員表(1、4矛盾,1說a可以看,4又說可以管理,暫定為成員只有看的權(quán)限)
      1.4a員工,和a組長的可視范圍一致(能看的信息一樣)
      1.5員工表單,通常指的是展示員工信息的表,而審批的單,通常指的是一些工單的表,和員工信息表不同,暫時定為在員工信息上有個和修改類似的審批操作
      1.6假設(shè)b組長對b成員表也有查看、修改、審批權(quán)限
      2、入正題
      2.1建立一個成員表,記錄員工信息,包含兩個字段{所在組}和{職務(wù)}
      2.2當(dāng)發(fā)生操作行為時,比較動作【發(fā)起者】和【接受者】的信息
      2.3所在組為a的【接受者】信息可被所有人查看
      2.4所在組一致,且【發(fā)起者】職務(wù)為組長
      則可進(jìn)行增刪改查
      2.5所在組為b,且職務(wù)為組長的【發(fā)起者】,可對所在組為a,且已被a組長授權(quán)的【接受者】信息進(jìn)行審批。
      2.5.1至于這個a組長授權(quán)又有多種情況:
      2.5.1.1如a組長提前授權(quán)了一批員工,此時b組長才能看到對其審批的功能,不然就只能看不能審批
      2.5.1.2又或者b組長一直都能看到審批功能,但是他點了之后,需要經(jīng)過a組長授權(quán)(二次確認(rèn))
      信息不全,先說到這,有興趣(或者工作機會)可以加微信(用比較多),同號QQ:493412629聯(lián)系一下●v●

      來自廣東 回復(fù)
    2. 第1.3點說錯了,矛盾的不是1、4,是2、4.。。。

      來自廣東 回復(fù)
    3. 好久沒登錄這個網(wǎng)站,回答了這么多,感謝!

      來自安徽 回復(fù)
  4. 角色創(chuàng)建和編輯操作權(quán)限、數(shù)據(jù)權(quán)限是靈活的,但是有些功能需要把角色寫進(jìn)代碼,怎么處理這種事件?
    比如我把角色1寫進(jìn)代碼,角色1有某些操作和數(shù)據(jù)權(quán)限,但是在后臺編輯角色時又重新編輯了,導(dǎo)致功能實現(xiàn)層面發(fā)生了變化。

    來自上海 回復(fù)
  5. 02功能操作權(quán)限和03功能操作權(quán)限許可,有什么區(qū)別?需要分拆分出來?原因: 在賦予角色操作某某的權(quán)限時,同時也就被許可了。

    來自四川 回復(fù)
  6. 在這種模型中,用戶與角色之間,角色與權(quán)限之間,一般者是“多對多”的關(guān)系 這里應(yīng)該是 “一對多” 關(guān)系;

    來自廣東 回復(fù)
    1. 一個用戶有多個角色;一個角色賦予多個用戶。 權(quán)限就不說了,更是了。。。。

      來自四川 回復(fù)
  7. 這不是基于資源的RBAC系統(tǒng)嗎?

    來自浙江 回復(fù)