熟悉這四種權(quán)限管理模型,產(chǎn)品迭代才能心里有數(shù)

17 評(píng)論 29159 瀏覽 243 收藏 11 分鐘

不管是2C產(chǎn)品經(jīng)理還是2B產(chǎn)品經(jīng)理,都要將權(quán)限管理法則爛熟于心。只有熟悉權(quán)限管理法則,才能更好地理解自己產(chǎn)品的架構(gòu),做到每次產(chǎn)品迭代都心里有數(shù)。

從本質(zhì)來(lái)說(shuō),無(wú)論何種類型的權(quán)限管理模型都可以抽象出三個(gè)基本的要素——即:用戶(user)、系統(tǒng)/應(yīng)用(system/application)、策略(policy)。

策略決定了用戶和不同功能應(yīng)用之間如何交互。反過(guò)來(lái),也就是說(shuō),無(wú)論設(shè)計(jì)何種權(quán)限管理的模型,都是基于這三個(gè)基本要素來(lái)展開(kāi)。

本文聚焦于目前應(yīng)用最廣的RBAC模型,但在這里提出三個(gè)基本要素,主要是為了幫助大家更好的理解權(quán)限管理,不至于在眾多權(quán)限模型中迷失。

不同的公司或軟件提供商,設(shè)計(jì)了無(wú)數(shù)種控制用戶訪問(wèn)功能或資源的方法。但無(wú)論哪種設(shè)計(jì),都可歸到四種經(jīng)典權(quán)限模型里——自主訪問(wèn)控制(DAC,Discretionary Access Control)、強(qiáng)制訪問(wèn)控制 (MAC,Mandatory Access Control)、基于角色訪問(wèn)控制 (RBAC,Role-based Access Control) 和基于屬性訪問(wèn)控制? (ABAC,Attribute-based Access Control).

(我覺(jué)得翻譯不好,但也找不到更貼切的。本文下面內(nèi)容均以英文首字母來(lái)代替:DAC,MAC,RBAC,ABAC)。

一、DAC,MAC

本文主要就RBAC展開(kāi)分析該模型的使用場(chǎng)景,以及如何基于該模型設(shè)計(jì)出合適的權(quán)限管理體系。但從文章便于理解的完整性的角度來(lái)考慮,會(huì)對(duì)DAC,MAC和ABAC進(jìn)行簡(jiǎn)要的介紹。

DAC:被操作對(duì)象,根據(jù)訪問(wèn)控制規(guī)則,來(lái)判斷操作主體可對(duì)操作對(duì)象做哪些操作,比如只讀或者是可寫(xiě)的權(quán)限。而自主的含義,則是擁有某種權(quán)限的用戶,可以把權(quán)限賦予其他用戶。

MAC:被操作對(duì)象及用戶兩方均有各自的權(quán)限標(biāo)識(shí),用戶能否對(duì)對(duì)象進(jìn)行操作,取決于權(quán)限標(biāo)識(shí)的對(duì)照關(guān)系。這種模型多用于等級(jí)制度明顯,信息訪問(wèn)安全性要求高的場(chǎng)景,比如軍事。

ABAC和RBAC有很多相通的地方,而且相比較而言ABAC實(shí)際上更靈活,符合未來(lái)發(fā)展的方向。因此,我們分析完RBAC后,再回過(guò)頭來(lái)看ABAC。

二、那么,什么是RBAC呢?

Role-based Access Control,基于角色的權(quán)限控制模型。

顧名思義,給用戶定義角色,通過(guò)角色來(lái)控制權(quán)限。目前來(lái)說(shuō)基于角色權(quán)限控制模型是應(yīng)用較廣的一個(gè)。特別是2B方向SAAS領(lǐng)域,應(yīng)用尤其常見(jiàn)。

如上圖示,用戶擁有角色,且可擁有多個(gè)角色,而每個(gè)角色對(duì)應(yīng)不同權(quán)限。

這樣的好處是:不必為每一個(gè)用戶去配置權(quán)限,擁有極大的靈活性和便利性。而當(dāng)用戶及權(quán)限的量級(jí)又大到另一個(gè)級(jí)別時(shí),又引入了角色組和權(quán)限組概念,此處不做延伸,有興趣的讀者可以去搜些資料來(lái)看。

三、怎么利用RBAC模型來(lái)進(jìn)行權(quán)限體系的設(shè)計(jì)?

我們已經(jīng)知道什么是RBAC模型了,在分析怎么來(lái)根據(jù)此模型來(lái)設(shè)計(jì)權(quán)限體系之前,我們?cè)侔堰@個(gè)模型要素進(jìn)行拆分一下。

首先是:用戶、角色、權(quán)限。

而權(quán)限,具體到某個(gè)軟件來(lái)說(shuō),實(shí)際上包含兩個(gè)方面。一個(gè)是菜單權(quán)限,另一個(gè)是數(shù)據(jù)權(quán)限。

不同的行業(yè)會(huì)有不同的使用場(chǎng)景,用戶角色權(quán)限模型也會(huì)有不同程度上的變化。但歸到底層來(lái)說(shuō),還是離不開(kāi)上面我畫(huà)的這個(gè)圖。

上面這個(gè)圖是從官網(wǎng)看到的,銷售自動(dòng)化領(lǐng)域十分典型的用戶權(quán)限管理設(shè)計(jì)。

接下來(lái),我們來(lái)抽象一個(gè)場(chǎng)景或者說(shuō)案例,來(lái)輔助我們理解整個(gè)權(quán)限管理設(shè)計(jì)的過(guò)程。假設(shè)A公司是個(gè)中大型的生產(chǎn)制造公司,公司有OA、HR、CRM、ERP一系列管理軟件。公司員工以萬(wàn)計(jì),不同人員職責(zé)不同,體現(xiàn)在管理軟件上,就是會(huì)需要使用不同的功能來(lái)完成工作。

帳號(hào)管理

帳號(hào)是人和軟件進(jìn)行交互時(shí)的一個(gè)身份的轉(zhuǎn)化。賬號(hào)的背后,代表了這個(gè)操作的人。賬號(hào)管理應(yīng)該是所有需要和系統(tǒng)交互的人的統(tǒng)一管理,包含基礎(chǔ)信息,比如:這個(gè)人的名字,性別、手機(jī)號(hào)、部門(mén)以及其他屬性。

角色管理

角色管理,就是要從實(shí)際場(chǎng)景出發(fā),比如:使用系統(tǒng)的企業(yè)或者團(tuán)體,有哪幾類使用的角色——也就是說(shuō),有哪幾類人,是需要有不同的業(yè)務(wù)菜單和業(yè)務(wù)數(shù)據(jù)的。

說(shuō)到底,角色管理,就是把這個(gè)角色對(duì)應(yīng)的人平時(shí)工作需要的菜單、功能給劃到一個(gè)組里。給這一個(gè)個(gè)的操作組定義不同的名稱——即角色名稱。

當(dāng)然,這個(gè)角色管理除了規(guī)定了該角色的人平時(shí)可對(duì)哪些功能進(jìn)行查看操作,還需規(guī)定這個(gè)角色,能看到哪些范圍內(nèi)的數(shù)據(jù)。也就是前面提到的,權(quán)限實(shí)際上包含的是菜單權(quán)限和數(shù)據(jù)權(quán)限兩部分。

系統(tǒng)內(nèi)功能控制的顆粒度越細(xì),對(duì)使用者來(lái)說(shuō)配置角色便越靈活,但對(duì)系統(tǒng)的設(shè)計(jì)者來(lái)說(shuō),系統(tǒng)的復(fù)雜度自然也會(huì)上升,成本也會(huì)增加。

因此,到底控制到哪一層級(jí),就要視具體業(yè)務(wù)場(chǎng)景來(lái)定,比如:有些行業(yè)的系統(tǒng),可能控制到一級(jí)菜單就可以(某些SAAS工具),但有些系統(tǒng),不僅需要控制所有的子級(jí)菜單,每一個(gè)按鈕操作,甚至還會(huì)需要控制到不同的字段(比如Salesforce的權(quán)限控制系統(tǒng))。

不過(guò),我們抽象出了基本的模型,根據(jù)實(shí)際業(yè)務(wù)再去發(fā)散,就不是最困難的事了。

四、看看ABAC,順便暢想下未來(lái)的權(quán)限模式

至此,我們可以了解到:RBAC模型實(shí)際上能解決大部分的權(quán)限設(shè)計(jì)問(wèn)題了。

那么,ABAC到底是什么呢?它存在的意義在哪里?關(guān)于未來(lái)的權(quán)限設(shè)計(jì)趨勢(shì),它能帶給我們什么啟發(fā)呢?

帶著這些問(wèn)題,我們先來(lái)看看到底什么是ABAC模型。

ABAC,Attribute-based Access Control. 基于屬性的訪問(wèn)控制。而屬性,總的來(lái)說(shuō)有三類:用戶屬性、系統(tǒng)或應(yīng)用被訪問(wèn)屬性(數(shù)據(jù)和操作)、環(huán)境屬性。

也就是說(shuō),系統(tǒng)根據(jù)一組或多組屬性是否滿足預(yù)設(shè)規(guī)則來(lái)動(dòng)態(tài)的控制,誰(shuí)可以訪問(wèn)哪些功能數(shù)據(jù)和操作。RBAC模型,其實(shí)可以看成是靜態(tài)的、單組屬性的ABAC模型。

用例子來(lái)理解這個(gè)模型就是:只有當(dāng)用戶角色為Admin,在工作時(shí)間內(nèi),且處在C棟大樓B實(shí)驗(yàn)室,才可以訪問(wèn)D文件。

實(shí)際上,ABAC是個(gè)可以以最細(xì)顆粒度來(lái)管理權(quán)限的模型。它可以讓設(shè)計(jì)者,利用任何一個(gè)用戶屬性、環(huán)境屬性,或者多個(gè)屬性之間的交集、并集等來(lái)組合出動(dòng)態(tài)的權(quán)限判斷邏輯。

它是這么強(qiáng)大,既可以有效的幫助信息辨別能力差的用戶過(guò)濾垃圾信息。也可以讓商家用到營(yíng)銷廣告填滿你生活的每個(gè)角落卻不自知。

但我一直堅(jiān)信,科技絕對(duì)是讓生活更美好。

五、總結(jié)一下

權(quán)限管理,可能是每個(gè)2B產(chǎn)品經(jīng)理需要面對(duì)的問(wèn)題。但無(wú)論C端還是B端的產(chǎn)品,了解權(quán)限管理的設(shè)計(jì)法則,讓自己更好的理解產(chǎn)品的架構(gòu),讓產(chǎn)品的每次迭代都心里有數(shù)。

 

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

題圖來(lái)自Unspalsh, 基于CC0協(xié)議。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 您上文提到的數(shù)據(jù)權(quán)限是基于角色控制的,如果一個(gè)角色中多個(gè)功能的數(shù)據(jù)權(quán)限不同呢?那需要通過(guò)多個(gè)角色控制嗎?這樣不會(huì)讓角色變得冗余嗎?

    來(lái)自湖南 回復(fù)
  2. 基于abac的有展開(kāi)嗎?

    來(lái)自美國(guó) 回復(fù)
  3. 菜鳥(niǎo)想問(wèn)下:數(shù)據(jù)權(quán)限中的,查看本人及下屬,查看部門(mén)等,系統(tǒng)是如何區(qū)分部門(mén)及上下屬之間的關(guān)系的???這是怎么設(shè)計(jì)的啊

    回復(fù)
    1. 那就是涉及到OA這塊的了。組織架構(gòu)管理,員工管理,職位管理等。就把部門(mén)和部門(mén)之間,部門(mén)和人之間,人和人之間的關(guān)系建立起來(lái)了。

      來(lái)自江蘇 回復(fù)
    2. 作者不知道還能不能收到我的回復(fù),我覺(jué)得你 RBAC 中的例子里已經(jīng)涉及到 ABAC 模型了。

      來(lái)自浙江 回復(fù)
    3. 看到后面了,你后面也說(shuō)了,其實(shí) RBAC 本身也是 ABAC 的一種 RBAC 的屬性只有一個(gè),那就是功能屬性。

      來(lái)自浙江 回復(fù)
    1. 我們公司支持這種模型

      來(lái)自浙江 回復(fù)
  4. 有舉例就完美了

    來(lái)自遼寧 回復(fù)
  5. 占位

    回復(fù)
  6. rbac最細(xì)致的權(quán)限維度是“功能權(quán)限”和“數(shù)據(jù)權(quán)限”,通過(guò)將這些權(quán)限聚合形成角色、崗位、功能等與賬號(hào)綁定起來(lái)。ABAC中的例子:“只有當(dāng)用戶角色為Admin,在工作時(shí)間內(nèi),且處在C棟大樓B實(shí)驗(yàn)室,才可以訪問(wèn)D文件?!睉?yīng)該在系統(tǒng)中實(shí)現(xiàn)的時(shí)候,應(yīng)該是“賬戶巨有admin角色,admin角色擁有‘訪問(wèn)’這一功能權(quán)限,以及‘D文件’這一數(shù)據(jù)權(quán)限,以及‘工作時(shí)間、C棟大樓B實(shí)驗(yàn)室’這一環(huán)境權(quán)限”。這樣看,基礎(chǔ)維度應(yīng)該是,功能權(quán)限(操作),數(shù)據(jù)權(quán)限(操作對(duì)象),環(huán)境權(quán)限(操作發(fā)生環(huán)境),角色依然可以是權(quán)限聚合的產(chǎn)物。

    來(lái)自浙江 回復(fù)
    1. 是的,這樣理解也可以的。但其實(shí)我覺(jué)得這幾種模型,倒沒(méi)有說(shuō)是有絕對(duì)的分割線的。都是從用戶、系統(tǒng)、規(guī)則三個(gè)基本要素展開(kāi)的。使用的場(chǎng)景、用戶使用的復(fù)雜度決定了具體需要利用哪種模型。因?yàn)槟P鸵欢ㄊ蔷?jiǎn)的,如果十分復(fù)雜,則說(shuō)明不是最好的模型。你理解的很透徹。多多交流。

      來(lái)自江蘇 回復(fù)
  7. 我也2b一起交流

    回復(fù)
    1. 哈哈好滴

      來(lái)自江蘇 回復(fù)
    2. 你也是2B?我不是,我是toB….

      來(lái)自北京 回復(fù)