熟悉這四種權(quán)限管理模型,產(chǎn)品迭代才能心里有數(shù)
不管是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é)議。
您上文提到的數(shù)據(jù)權(quán)限是基于角色控制的,如果一個角色中多個功能的數(shù)據(jù)權(quán)限不同呢?那需要通過多個角色控制嗎?這樣不會讓角色變得冗余嗎?
基于abac的有展開嗎?
菜鳥想問下:數(shù)據(jù)權(quán)限中的,查看本人及下屬,查看部門等,系統(tǒng)是如何區(qū)分部門及上下屬之間的關(guān)系的?。窟@是怎么設(shè)計的啊
那就是涉及到OA這塊的了。組織架構(gòu)管理,員工管理,職位管理等。就把部門和部門之間,部門和人之間,人和人之間的關(guān)系建立起來了。
作者不知道還能不能收到我的回復(fù),我覺得你 RBAC 中的例子里已經(jīng)涉及到 ABAC 模型了。
看到后面了,你后面也說了,其實 RBAC 本身也是 ABAC 的一種 RBAC 的屬性只有一個,那就是功能屬性。
個人理解 不知道是否正確 ABAC和RBAC的不同點在于 RBAC是基于角色的緯度 為角色分配功能和功能下的權(quán)限范圍 而ABAC是為每項功能分配相應(yīng)可使用他的角色 這個可使用 包含時間 地點 權(quán)限范圍的控制等緯度 這樣可以實現(xiàn)嗎
贊,這個角度考慮很特別。
我們公司支持這種模型
可以這樣實現(xiàn)的,實際上我們公司就支持這么做的。但是有個問題,即使你我一樣是一樣的角色,因為角色中包含了你說的時間、地點、權(quán)限范圍這些數(shù)據(jù),導(dǎo)致我兩的權(quán)限已經(jīng)千差萬別了。此時角色失去了它該有的價值。
有舉例就完美了
占位
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)物。
是的,這樣理解也可以的。但其實我覺得這幾種模型,倒沒有說是有絕對的分割線的。都是從用戶、系統(tǒng)、規(guī)則三個基本要素展開的。使用的場景、用戶使用的復(fù)雜度決定了具體需要利用哪種模型。因為模型一定是精簡的,如果十分復(fù)雜,則說明不是最好的模型。你理解的很透徹。多多交流。
我也2b一起交流
哈哈好滴
你也是2B?我不是,我是toB….