B端產(chǎn)品如何設(shè)計權(quán)限系統(tǒng)?4個要素,5個模型,2個行業(yè)案例

5 評論 14853 瀏覽 91 收藏 22 分鐘

編輯導(dǎo)語:B端產(chǎn)品的權(quán)限管理是衡量產(chǎn)品商業(yè)模式以及用戶價值高低的一桿標(biāo)尺,那么我們該如何進(jìn)行權(quán)限系統(tǒng)的設(shè)計呢?作者分享了一些自己的經(jīng)驗(yàn),我們一起來看看吧。

現(xiàn)代經(jīng)濟(jì)學(xué)理論認(rèn)為,企業(yè)本質(zhì)上是“一種資源配置的機(jī)制”,其能夠?qū)崿F(xiàn)整個社會經(jīng)濟(jì)資源的優(yōu)化配置,降低整個社會的“交易成本”。

權(quán)限管理系統(tǒng)的本質(zhì)是企業(yè)內(nèi)部或企業(yè)之間的資源在B端產(chǎn)品上以特定機(jī)制配置的映射;所以權(quán)限管理系統(tǒng)的貼身情況也是衡量產(chǎn)品商業(yè)模式好壞、用戶價值高低的一桿標(biāo)尺。

權(quán)限管理系統(tǒng)的設(shè)計中常遇到的問題有:

  • 配置不規(guī)范,系統(tǒng)基礎(chǔ)不穩(wěn),拓展性差;
  • 配置不靈活,用戶需求難滿足,體驗(yàn)差;
  • 配置太靈活,邏輯會復(fù)雜,實(shí)施成本高;

那么,如何設(shè)計一款貼身并能隨著產(chǎn)品一起生長的權(quán)限管理系統(tǒng)呢?

在古代,沒有互聯(lián)網(wǎng)、沒有軟件時,泱泱中華在中央集權(quán)的帝制制度、“君君臣臣、父父子子”的角色說明書等管理系統(tǒng)中正常運(yùn)轉(zhuǎn)。

皇帝把資源下發(fā)給特定的人、崗位角色、宦官集團(tuán)等以促進(jìn)農(nóng)業(yè)生產(chǎn)、稅收、戶籍管理、治安維護(hù)等。

資源包括權(quán)力、辦事流程等抽象資源,也包括錢財、糧食、鹽、礦等實(shí)物資源,同時包括印章、信紙、官服、轎子、馬等承載資源、象征權(quán)力、代表等級的工具。

而管理機(jī)制除了帝制和角色說明書,還有子承父業(yè)的繼承機(jī)制、藩王行為規(guī)范、文官武官的互斥監(jiān)督、官職逐級遞升約束、虎符口令雙向驗(yàn)證等等。

在盛世時期百姓人口增加、戰(zhàn)爭時期軍隊(duì)數(shù)量增加要在基礎(chǔ)機(jī)制上做適應(yīng)性的調(diào)整。

權(quán)限管理的本質(zhì)也大致如此,管理的是主體對客體遵循特定機(jī)制做出的行為。

  • 權(quán)限管理系統(tǒng)的組成要素有哪些?
  • 常見的權(quán)限模型有哪些?
  • Oracle和Salesforce的權(quán)限模型是啥樣的?
  • 實(shí)操案例中如何應(yīng)用的?
  • 有哪些經(jīng)驗(yàn)及建議?

一、4個基本要素

權(quán)限是主體對客體遵循特定機(jī)制做出的行為。所以,權(quán)限的4個基本要素就是主體、客體、行為、機(jī)制。

1. 主體

指行為的行使者,是操作的發(fā)起者。主體的類型有很多種,常見的有:

  • 用戶及用戶組。更準(zhǔn)確地術(shù)語應(yīng)是“系統(tǒng)使用者”,其與系統(tǒng)的賬號體系相對應(yīng),一個用戶對應(yīng)一個唯一賬號;多個用戶組成一個用戶組;
  • 角色及角色組。角色是權(quán)限分配的單位與載體,通常與組織架構(gòu)體系相對應(yīng)。Oracle產(chǎn)品中分為工作角色、職責(zé)角色、數(shù)據(jù)角色和抽象角色四類,后面我們會說到;
  • 用戶標(biāo)簽及用戶標(biāo)簽組;
  • 設(shè)備及設(shè)備組。HarmonyOS系統(tǒng)首期給Mate40系列開放使用;
  • IP地址。限制對IP地址的訪問;
  • 地理位置。如O2O生活平臺在不同位置展示的店鋪不同;
  • 局域網(wǎng)。如公司電腦在內(nèi)網(wǎng)和外網(wǎng)所訪問的資源不同。

2. 客體

指行為的承受者,是操作所針對的對象。主要有三大類:

(1)資源

  • 基本屬性的數(shù)據(jù)
  • 行數(shù)據(jù)
  • 個別的列數(shù)據(jù)(俗稱“某些字段”)

(2)資源的容器

  • 頁面
  • 目錄或菜單
  • Tab
  • 按鈕

(3)操作資源所必須的條件

  • 任務(wù)流,也稱工作流。某一資源在任務(wù)流中的狀態(tài)不同,不同狀態(tài)的資源可以分配給不同角色操作;
  • 所屬權(quán)。所屬權(quán)包括個人、個人及下屬、部門、部門及下屬、全部,通常與組織架構(gòu)體系的組織范圍相對應(yīng)。

3. 行為

指主體對客體的活動,包括主體在產(chǎn)品中對客體的一些操作,而我們常說的“權(quán)限”一詞則指代了這一操作,例如“查看朋友圈的權(quán)限”。常見的行為有:

  • 登入、登出
  • 改,包括讀寫
  • 查,包括不可見、只讀
  • 上傳、下載
  • 共享
  • ……

4. 機(jī)制

系統(tǒng)機(jī)制包括對主體、客體和主客體關(guān)系的認(rèn)證,對主體行為及行為運(yùn)行方式的授權(quán)。常見的機(jī)制有:

  • 繼承。父級可以擁有子級的權(quán)限,依托于組織架構(gòu)或角色層級結(jié)構(gòu);例如銷售部門負(fù)責(zé)人有所有下屬的權(quán)限;
  • 互斥。是對主體之間責(zé)任的強(qiáng)制性規(guī)定,防止同一主體擁有足夠權(quán)限進(jìn)行欺騙行為,防止即當(dāng)運(yùn)動員又當(dāng)裁判的行為。責(zé)任分離有靜態(tài)和動態(tài)之分:
  • 靜態(tài)互斥。一個用戶不能同時擁有兩個互斥的角色。例如銀行內(nèi)部的貸款申請者和貸款審批者不能讓同一個人承擔(dān);
  • 動態(tài)互斥。一個用戶可以擁有兩個角色,但在運(yùn)行時只能激活一個角色,也成為運(yùn)行互斥機(jī)制。例如銀行內(nèi)部為了靈活放貸,職員張三可以同時有貸款申請者角色和貸款審批者角色,但對于同一筆貸款,不能即申請又審批。
  • 先決條件。A想成為C,就必須先成為B,C只能從B中產(chǎn)生;
  • 基數(shù)限制。是主體與主體、主體與客體、主體與行為間數(shù)量關(guān)系的限制。例如一個用戶可擁有的角色數(shù)目受限;一個角色被分配的用戶數(shù)量受限;一個角色的權(quán)限數(shù)目受限;
  • 授予機(jī)制。是主體將自己的權(quán)限授予給其他主體的權(quán)限;
  • 雙向驗(yàn)證。系統(tǒng)即驗(yàn)證主體,也驗(yàn)證客體,雙方都通過驗(yàn)證時才能允許主體對客體的行為;
  • 共享機(jī)制。

訪問范圍限定機(jī)制。一般有三類依托:

  • 組織架構(gòu)
  • 角色層級結(jié)構(gòu)
  • 組織范圍/抽象關(guān)系

環(huán)境限制。分為三類:

  • 空間限制。例如針對地理位置、IP地址、局域網(wǎng)的限制;
  • 時間限制。例如考試時間到了之后,操作權(quán)限有所限制;
  • 頻度限制。例如對輸入密碼的頻率的限制;

二、5種常見的權(quán)限模型

2. ACL模型:訪問控制列表

Access Control List,ACL是最早的、最基本的一種訪問控制機(jī)制,是基于客體進(jìn)行控制的模型,在其他模型中也有ACL的身影。為了解決相同權(quán)限的用戶挨個配置的問題,后來也采用了用戶組的方式。

原理:每一個客體都有一個列表,列表中記錄的是哪些主體可以對這個客體做哪些行為,非常簡單。

例如:當(dāng)用戶A要對一篇文章進(jìn)行編輯時,ACL會先檢查一下文章編輯功能的控制列表中有沒有用戶A,有就可以編輯,無則不能編輯。再例如:不同等級的會員在產(chǎn)品中可使用的功能范圍不同。

缺點(diǎn):當(dāng)主體的數(shù)量較多時,配置和維護(hù)工作就會成本大、易出錯。

2. DAC模型:自主訪問控制

Discretionary Access Control,DAC是ACL的一種拓展。

原理:在ACL模型的基礎(chǔ)上,允許主體可以將自己擁有的權(quán)限自主地授予其他主體,所以權(quán)限可以任意傳遞。

例如:常見于文件系統(tǒng),LINUX,UNIX、WindowsNT版本的操作系統(tǒng)都提供DAC的支持。

缺點(diǎn):對權(quán)限控制比較分散,例如無法簡單地將一組文件設(shè)置統(tǒng)一的權(quán)限開放給指定的一群用戶。主體的權(quán)限太大,無意間就可能泄露信息。

3. MAC模型:強(qiáng)制訪問控制

Mandatory Access Control,MAC模型中主要的是雙向驗(yàn)證機(jī)制。常見于機(jī)密機(jī)構(gòu)或者其他等級觀念強(qiáng)烈的行業(yè),如軍用和市政安全領(lǐng)域的軟件。

原理:主體有一個權(quán)限標(biāo)識,客體也有一個權(quán)限標(biāo)識,而主體能否對該客體進(jìn)行操作取決于雙方的權(quán)限標(biāo)識的關(guān)系。

例如:將軍分為上將>中將>少將,軍事文件保密等級分為絕密>機(jī)密>秘密,規(guī)定不同軍銜僅能訪問不同保密等級的文件,如少將只能訪問秘密文件;當(dāng)某一賬號訪問某一文件時,系統(tǒng)會驗(yàn)證賬號的軍銜,也驗(yàn)證文件的保密等級,當(dāng)軍銜和保密等級相對應(yīng)時才可以訪問。

缺點(diǎn):控制太嚴(yán)格,實(shí)現(xiàn)工作量大,缺乏靈活性。

4. RBAC模型:基于角色的訪問控制

(Role-Based Access Control),RBAC模型在目前使用的最廣泛、最普遍。

原理:在主體和權(quán)限之間引入了“角色(Role)”的概念,角色解耦了主體和權(quán)限之間的關(guān)系。,有四個不同的層次:

  • RBAC0:基本模型,相當(dāng)于ACL+角色。權(quán)限被賦予角色,而不是用戶,當(dāng)一個角色被制定給一個用戶時,該用戶就擁有了該角色所包含的權(quán)限。所有的角色都是平級的,沒有制定角色層級關(guān)系;所有對象都沒有附加約束,沒有制定限制;
  • RBAC1:角色分級模型,相當(dāng)于RBAC0+繼承機(jī)制;
  • RBAC2:角色限制模型,相當(dāng)于RBAC0+互斥機(jī)制+先決條件機(jī)制+基數(shù)限制機(jī)制;
  • RBAC3:統(tǒng)一模型,相當(dāng)于RBAC1+RBAC2。

缺點(diǎn):需要將某個權(quán)限單獨(dú)設(shè)置給用戶時,如果用戶已有的角色中不包含該權(quán)限,就需要重新設(shè)置角色的權(quán)限或者重新創(chuàng)建一個新的角色,在業(yè)務(wù)和需求變更時需要維護(hù)大量的角色。

5. ABAC模型:基于屬性的訪問控制

(Attribute-Based Access Control),能很好地解決RBAC的缺點(diǎn),在新增資源時容易維護(hù)。

原理:通過動態(tài)計算一個或一組屬性是否滿足某種機(jī)制來授權(quán),是一種很靈活的權(quán)限模型,可以按需實(shí)現(xiàn)不同顆粒度的權(quán)限控制。

屬性通常有四類:

  • 一是主體屬性,如用戶年齡、性別等;
  • 二是客體屬性,如一篇文章等;
  • 三是環(huán)境屬性,即空間限制、時間限制、頻度限制;
  • 四是操作屬性,即行為類型,如讀寫、只讀等。

例如:早上9:00~11:00期間A、B兩個部門一起以考生的身份考試,下午14:00~17:00期間A、B兩個部門相互閱卷。

缺點(diǎn):規(guī)則復(fù)雜,不易看出主體與客體之間的關(guān)系,實(shí)現(xiàn)非常難,現(xiàn)在應(yīng)用的很少。

三、Oracle和Salesforce的權(quán)限模型是啥樣的?

1. Oracle

其權(quán)限管理系統(tǒng)基于RBAC模型的基礎(chǔ)發(fā)展,角色分為四類:

  • 工作角色:反映了工作頭銜并描述了責(zé)任職位。例如采購員;
  • 抽象角色:代表個人與企業(yè)或組織的一般關(guān)聯(lián),與該人的工作(職位)無關(guān)。例如臨時工、員工、直屬經(jīng)理等;
  • 職責(zé)角色:將必須在抽象角色或工作角色中執(zhí)行的任務(wù)分組,代表一項(xiàng)工作職責(zé)的一組功能和數(shù)據(jù)權(quán)限。例如文章的審核職責(zé);
  • 數(shù)據(jù)角色:是訪問特定數(shù)據(jù)的權(quán)利。例如HR中的薪資管理員可以看員工薪資,其他HR不能看。

這四種角色之間有什么樣的聯(lián)系呢?

抽象角色和工作角色必須繼承職責(zé)角色。工作角色可以繼承抽象角色和其他工作角色。數(shù)據(jù)角色可以繼承抽象、作業(yè)和其他數(shù)據(jù)角色。職責(zé)角色可以繼承其他職責(zé)角色。該圖顯示了角色類型之間的這些繼承關(guān)系。

不同角色之間如何訪問功能和數(shù)據(jù)呢?

這四類角色是如何配置在一個賬號上的呢?

注意的是數(shù)據(jù)角色、數(shù)據(jù)權(quán)限一般直接配置在用戶身上。

2. Salesforce

是通用型CRM系統(tǒng)中權(quán)限管理靈活配置的先進(jìn)案例。使用簡檔、權(quán)限集、權(quán)限集組,控制用戶可以訪問的對象和字段。使用組織范圍的共享設(shè)置、用戶角色和共享規(guī)則,以指定用戶可以查看并編輯的單個記錄。

簡檔定義了用戶訪問對象和數(shù)據(jù)的方式,以及在應(yīng)用程序內(nèi)部執(zhí)行的操作。簡檔是每個用戶指定的標(biāo)準(zhǔn)配置文件,在創(chuàng)建用戶時指定。一個用戶只能有一個簡檔,同一個簡檔可以配置給多個用戶。例如某公司的銷售人員的簡檔是一樣的。

權(quán)限集是授予用戶對各種工具和功能的訪問權(quán)限的設(shè)置和權(quán)限集合。無需更改用戶簡檔,權(quán)限集即可擴(kuò)展用戶的功能訪問權(quán)限。多個權(quán)限集可以構(gòu)成一個權(quán)限集組。一個用戶可以有多個權(quán)限集及多個權(quán)限集組,同一個權(quán)限集或權(quán)限集組可以配置給多個用戶。

角色旨在提高數(shù)據(jù)可見性,控制著用戶可以看到的內(nèi)容。角色并非對每個用戶都是強(qiáng)制性的。角色/角色層次結(jié)構(gòu)的主要功能是允許層次結(jié)構(gòu)中的較高級別的用戶訪問層次結(jié)構(gòu)中較低級別的用戶擁有的記錄。例如:上級見下級,平級之間不可見。

角色層級衍生于組織架構(gòu),定義了角色之間的層級結(jié)構(gòu),例如銷售副總裁在角色層次結(jié)構(gòu)中,分管不同地區(qū)的銷售經(jīng)理。

而組織范圍定義了數(shù)據(jù)的讀寫等操作所屬范圍,例如閱讀范圍有全部數(shù)據(jù)、本部全部數(shù)據(jù)、本部及子部全部數(shù)據(jù)、本人全部數(shù)據(jù)、本人及下屬全部數(shù)據(jù)等,操作范圍有個人操作、公共操作。

簡檔和角色之間的區(qū)別與聯(lián)系是什么?

簡檔和權(quán)限集之間的區(qū)別與聯(lián)系是什么?一般使用簡檔分配給用戶最低的權(quán)限集合,然后使用權(quán)限集補(bǔ)充配置的其他權(quán)限。

兩個聯(lián)合使用,提供了訪問的靈活性。兩者對權(quán)限點(diǎn)的控制范圍與設(shè)置方式是相同的,包括:

  • 用戶可以看到哪些對象;
  • 用戶可以看到哪些對象的哪些字段;
  • 用戶可以對哪些對象有什么行為;
  • 用戶可以看到哪些應(yīng)用;
  • 用戶可以看到對象在不同的應(yīng)用中的形態(tài)。

簡檔、權(quán)限集是如何配置在一個賬號上的呢?

對字段權(quán)限的設(shè)置如下:

數(shù)據(jù)共享規(guī)則的設(shè)置如下:

四、實(shí)操案例中如何應(yīng)用的?

將上文已講的所有機(jī)制及權(quán)限對應(yīng)的場景放入一個公司的管理系統(tǒng)中如下展示:

除此之外,也可以有一個賬號對應(yīng)多個企業(yè)角色,但在使用時需要選擇其中一個企業(yè)角色使用;例如我是浙江省銷售經(jīng)理,同時兼任門店一的店長,一般來說銷售經(jīng)理只需要查看三個門店的數(shù)據(jù)即可,而店長要管理門店的所有操作及數(shù)據(jù)輸入。

那么為了減少工作混亂及權(quán)限的耦合程度,可以給我配置兩個企業(yè)角色,一個浙江省銷售經(jīng)理,一個門店一的店長,登錄后必須選擇一個企業(yè)角色再進(jìn)入相應(yīng)產(chǎn)品界面,兩個企業(yè)角色可以隨時切換。

五、經(jīng)驗(yàn)及建議

1. 從產(chǎn)品開發(fā)商to企業(yè)客戶,再從企業(yè)客戶to 使用者的角度來看

一般產(chǎn)品開發(fā)商要根據(jù)客戶畫像、業(yè)務(wù)模式和行業(yè)標(biāo)準(zhǔn)將權(quán)限劃分,求同存異,相同部分默認(rèn)配置,不同部分根據(jù)業(yè)務(wù)粒度抽象為可配置項(xiàng)。

而企業(yè)內(nèi)部給使用者配置是也需要根據(jù)用戶習(xí)慣及標(biāo)準(zhǔn)化的操作進(jìn)行求同存異,因?yàn)榫€下的靈活性難以把控,所以盡可能將能在線上化的部分標(biāo)準(zhǔn)化,但保證使用者只能用到自己需要的功能和數(shù)據(jù)。

抽象程度越高,配置項(xiàng)越少,開發(fā)成本和實(shí)施成本越低,用戶體驗(yàn)越好,使用起來越貼身。否則隨著產(chǎn)品的生長會衍生出更多權(quán)限點(diǎn)、更多角色,維護(hù)性變差,也極易出錯,這也是筆者所親身經(jīng)歷的教訓(xùn)。

2. 從常說的功能權(quán)限、數(shù)據(jù)權(quán)限的角度來看

常說的功能權(quán)限也就是資源的容器(即頁面、目錄或菜單、Tab、按鈕)與行為(增刪改查等)的權(quán)限之和;數(shù)據(jù)權(quán)限及資源本身、行數(shù)據(jù)或個別列數(shù)據(jù)(字段)。

從各種權(quán)限模型及Oracle和Salesforce的經(jīng)驗(yàn)來看,更多情況下,功能權(quán)限配置在角色上,數(shù)據(jù)配置在用戶上。

在Oracle中有專門的數(shù)據(jù)角色,但數(shù)據(jù)角色是直接配置給用戶的。在Salesforce的簡檔將一個用戶更基礎(chǔ)的對象及數(shù)據(jù)權(quán)限預(yù)先設(shè)置給用戶。

功能權(quán)限和數(shù)據(jù)權(quán)限一般設(shè)置盡量不要太細(xì),能到菜單權(quán)限就不到頁面權(quán)限,能到頁面權(quán)限就不到按鈕權(quán)限;能到行數(shù)據(jù)權(quán)限就不到列數(shù)據(jù)權(quán)限;盡量避免不同用戶對相同字段有不同計算規(guī)則的情況。

 

本文由 @七牛 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載

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

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 總結(jié)的有深度,優(yōu)秀

    來自北京 回復(fù)
  2. 寫得有深度??

    來自重慶 回復(fù)
  3. 【補(bǔ)充內(nèi)容】:將功能權(quán)限和數(shù)據(jù)權(quán)限再定義明確一些

    1、功能權(quán)限:一般賦予角色

    a、資源的容器(即頁面、目錄或菜單、Tab、按鈕);
    b、行為(增刪改查等)
    c、注意的是有時候也可能包含少部分的字段權(quán)限(讀寫、只讀或不可見),如角色1能只讀ABC三個字段,角色2能只讀BC兩個字段,有明確的角色區(qū)分的話也可以歸屬在功能權(quán)限里。
    2、數(shù)據(jù)權(quán)限:一般賦予用戶

    a、資源數(shù)據(jù)權(quán)限:客戶表的信息規(guī)定你能看ABC字段,最多能看10條;(資源本身、行數(shù)據(jù)或個別列數(shù)據(jù))(私有、公開讀寫、公開讀寫刪)。
    b、共享數(shù)據(jù)權(quán)限:能共享給誰,對方能讀寫還是只讀
    c、團(tuán)隊(duì)數(shù)據(jù)權(quán)限:包括個人、個人及下屬、部門、部門及下屬、全部,通常與組織架構(gòu)體系的組織范圍相對應(yīng),且對他們有哪些行為限制。

    來自浙江 回復(fù)
  4. 文章很有深度,有幾個細(xì)節(jié)想請教一下,請問如何聯(lián)系您? 我的微信 hooray22,多謝

    來自廣東 回復(fù)
  5. 介紹的很系統(tǒng)

    回復(fù)