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

17 評論 29858 瀏覽 244 收藏 11 分鐘

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

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

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

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

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

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

一、DAC,MAC

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

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

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

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

二、那么,什么是RBAC呢?

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

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

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

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

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

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

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

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

不同的行業(yè)會有不同的使用場景,用戶角色權(quán)限模型也會有不同程度上的變化。但歸到底層來說,還是離不開上面我畫的這個圖。

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

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

帳號管理

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

角色管理

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

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

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

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

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

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

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

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

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

帶著這些問題,我們先來看看到底什么是ABAC模型。

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

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

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

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

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

但我一直堅信,科技絕對是讓生活更美好。

五、總結(jié)一下

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

 

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

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

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

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

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

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

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

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

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

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

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

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

    來自浙江 回復(fù)
    1. 是的,這樣理解也可以的。但其實我覺得這幾種模型,倒沒有說是有絕對的分割線的。都是從用戶、系統(tǒng)、規(guī)則三個基本要素展開的。使用的場景、用戶使用的復(fù)雜度決定了具體需要利用哪種模型。因為模型一定是精簡的,如果十分復(fù)雜,則說明不是最好的模型。你理解的很透徹。多多交流。

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

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

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

      來自北京 回復(fù)