B端產(chǎn)品|RBAC模型的實(shí)踐和思考
在B端產(chǎn)品設(shè)計(jì)中,權(quán)限控制體系設(shè)計(jì)是十分重要的一個(gè)環(huán)節(jié),其中,不可避免地會(huì)提到RBAC模型。那么,什么是RBAC模型?RBAC模型有哪些優(yōu)勢(shì)所在?這篇文章里,作者做了梳理和總結(jié),一起來(lái)看看吧。
B端產(chǎn)品設(shè)計(jì)離不開(kāi)權(quán)限控制。本篇來(lái)介紹一下最常用的權(quán)限控制體系:RBAC模型。
一、權(quán)限控制五問(wèn)
1. 什么是權(quán)限控制?
權(quán)限控制是指在系統(tǒng)中,對(duì)不同角色、部門或用戶進(jìn)行訪問(wèn)控制和權(quán)限管理的能力。它能夠確保系統(tǒng)中的數(shù)據(jù)和功能僅對(duì)有權(quán)限的用戶可見(jiàn)和可用。
2. 為什么做權(quán)限控制?
保障業(yè)務(wù)的安全性和穩(wěn)定性。
- 避免員工看到職責(zé)外的敏感功能和數(shù)據(jù);
- 避免員工操作職責(zé)外的敏感功能和數(shù)據(jù)。
3. 權(quán)限控制都包含哪些方面?
包含功能權(quán)限和數(shù)據(jù)權(quán)限。功能權(quán)限又包含菜單權(quán)限和按鈕權(quán)限。
- 菜單權(quán)限:指某一頁(yè)面是否可見(jiàn)。
- 按鈕權(quán)限:指頁(yè)面上某些按鈕是否可見(jiàn)。
- 數(shù)據(jù)權(quán)限:指頁(yè)面上某些數(shù)據(jù)對(duì)用戶是否可見(jiàn)。
case:公司有多個(gè)職能角色,商家運(yùn)營(yíng)負(fù)責(zé)和商家溝通一切事宜,商品運(yùn)營(yíng)負(fù)責(zé)對(duì)商品的覆蓋度和質(zhì)量,活動(dòng)運(yùn)營(yíng)對(duì)活動(dòng)進(jìn)行管理。同時(shí),商家在橫向還存在多個(gè)部門,比如快消部門、3C部門等按照不同類目的部門。此時(shí),不同類型的權(quán)限可能如下表所示。
4. 什么時(shí)候需要做權(quán)限控制?
當(dāng)系統(tǒng)有多個(gè)職能的用戶,且數(shù)據(jù)和操作敏感時(shí),就會(huì)涉及權(quán)限控制。
5. 怎么做權(quán)限控制?
權(quán)限控制最常見(jiàn)的模型共4個(gè):
1)DAC(Discretionary Access Control)自主訪問(wèn)控制:
系統(tǒng)會(huì)識(shí)別用戶,然后根據(jù)被操作對(duì)象(Subject)的權(quán)限控制列表或者權(quán)限控制矩陣的信息來(lái)決定用戶是否能對(duì)其進(jìn)行哪些操作,例如讀取或修改。而擁有對(duì)象權(quán)限的用戶,又可以將該對(duì)象的權(quán)限分配給其他用戶,所以稱之為“自主(Discretionary)”控制。
這種設(shè)計(jì)最常見(jiàn)的應(yīng)用就是文件系統(tǒng)的權(quán)限設(shè)計(jì)。
2)MAC(Mandatory Access Control)強(qiáng)制訪問(wèn)控制模型
在 MAC 的設(shè)計(jì)中,每一個(gè)對(duì)象都有一些權(quán)限標(biāo)識(shí),每個(gè)用戶同樣也會(huì)有一些權(quán)限標(biāo)識(shí),而用戶能否對(duì)該對(duì)象進(jìn)行操作取決于雙方權(quán)限標(biāo)識(shí)的關(guān)系,這個(gè)關(guān)系的判斷通常是由系統(tǒng)硬性限制的。MAC 非常適合機(jī)密機(jī)構(gòu)或者其他等級(jí)觀念強(qiáng)烈的行業(yè),但對(duì)于類似商業(yè)服務(wù)系統(tǒng),則因?yàn)椴粔蜢`活而不能適用。
3)RBAC(Role-Based Access Control)基于角色的訪問(wèn)控制模型
最常用的系統(tǒng)權(quán)限控制就是RBAC模型,能覆蓋絕大部分的場(chǎng)景。也是本篇詳細(xì)介紹的模型和實(shí)際應(yīng)用中的一些場(chǎng)景。
4)ABAC(Attribute-Based Access Control)基于屬性的訪問(wèn)控制模型
在 ABAC 中,一個(gè)操作是否被允許是基于對(duì)象、資源、操作和環(huán)境信息共同動(dòng)態(tài)計(jì)算決定的??梢约?xì)粒度地授權(quán)在何種情況下對(duì)某個(gè)資源具備某個(gè)特定的權(quán)限。比如時(shí)間、位置、設(shè)備、加密強(qiáng)度等在RBAC中不使用的一些屬性信息。比如:早上九點(diǎn)前禁止 A 部門的人訪問(wèn)B系統(tǒng)。
但是ABAC使用過(guò)于復(fù)雜,一般場(chǎng)景就是RBAC模型,本篇也著重介紹RBAC模型。
二、RBAC模型介紹
1. 什么是RBAC模型(Role-Based Access Control)
引入角色的概念。通過(guò)用戶對(duì)應(yīng)角色,角色對(duì)應(yīng)權(quán)限,來(lái)實(shí)現(xiàn)權(quán)限控制。
2. RBAC的應(yīng)用
1)權(quán)限定義:給需要被控制的權(quán)限做一個(gè)定義,最基礎(chǔ)的字段有:
- 權(quán)限名稱:名稱;
- 權(quán)限碼:唯一的編碼,一般用英文和符號(hào)。
而此權(quán)限定義,一般是產(chǎn)品提出需求需要控制,前端研發(fā)完成實(shí)際定義。
2)在權(quán)限系統(tǒng)完成配置
將此研發(fā)的定義,在權(quán)限系統(tǒng)中進(jìn)行配置。一般公司都會(huì)有自己的權(quán)限系統(tǒng),大家使用公共能力。配置頁(yè)面最基礎(chǔ)的有3個(gè):
- 權(quán)限定義:將研發(fā)的權(quán)限名稱和權(quán)限碼在權(quán)限系統(tǒng)中完成定義。
- 角色定義:將角色和權(quán)限完成匹配;
- 用戶權(quán)限賦予:將用戶和角色完成匹配。
3)在用戶訪問(wèn)系統(tǒng)時(shí),調(diào)用權(quán)限系統(tǒng)提供接口,查詢用戶擁有的權(quán)限碼合集。此時(shí)一般權(quán)限系統(tǒng)返回的都是權(quán)限碼,而不是角色了。角色時(shí)便于配置使用的。
4)業(yè)務(wù)系統(tǒng)根據(jù)權(quán)限系統(tǒng)返回的權(quán)限碼,匹配自己系統(tǒng)的配置,將對(duì)應(yīng)的權(quán)限進(jìn)行展示。
3. RBAC模型的優(yōu)勢(shì)和問(wèn)題
優(yōu)勢(shì):引入角色的概念,降低配置的復(fù)雜度。
如果沒(méi)有角色,直接給每個(gè)用戶配置權(quán)限。當(dāng)存在100個(gè)用戶,20個(gè)權(quán)限時(shí)。每個(gè)用戶需要單獨(dú)配置一次權(quán)限,會(huì)配置100次。而其中如果新增一個(gè)權(quán)限,還需要給100個(gè)用戶單獨(dú)配置。新增一個(gè)用戶,也得單獨(dú)配置好20個(gè)權(quán)限(如果需要篩選,還得每個(gè)權(quán)限衡量是否可添加)。
而引入了角色,可以將100個(gè)用戶分成多個(gè)組,將權(quán)限也分成多個(gè)組。如果實(shí)際屬于3個(gè)部門,那可以配置3個(gè)角色。配置3次角色和權(quán)限的關(guān)系,再配置100次人和角色的關(guān)系(此時(shí)可以考慮優(yōu)化此處的效率)而其中如果新增一個(gè)權(quán)限,還指需要增加1次角色和權(quán)限的配置。新增一個(gè)用戶,也只需要再3個(gè)角色中衡量是否可以添加。
優(yōu)勢(shì)也是問(wèn)題:因?yàn)榻巧亲远x的,所以能靈活支持各種權(quán)限場(chǎng)景的權(quán)限控制。但是另一方面,可能帶來(lái)的問(wèn)題是角色太多,從而造成:
- 業(yè)務(wù)不清楚自己要申請(qǐng)什么角色;
- 業(yè)務(wù)申請(qǐng)超過(guò)自己工作職責(zé)外的角色。
怎么解決以上問(wèn)題呢?實(shí)踐中應(yīng)用過(guò)幾種手段:
1)引入崗位的概念
- 角色定義時(shí),更多的傾向于崗位定義而不是功能定義。比如,角色名稱我們可以叫商家運(yùn)營(yíng),然后包含商家運(yùn)營(yíng)在各個(gè)業(yè)務(wù)系統(tǒng)內(nèi)的權(quán)限,這樣當(dāng)我作為商家運(yùn)營(yíng)入職時(shí),申請(qǐng)此角色即可。
- 創(chuàng)建角色和崗位的關(guān)系。把某些角色和崗位在權(quán)限系統(tǒng)建立關(guān)系,這樣當(dāng)用戶作為此崗位登錄時(shí),自動(dòng)可擁有此角色。
2)通過(guò)功能反向查詢對(duì)應(yīng)的角色:覆蓋場(chǎng)景,用戶需要某一單一功能但是不清楚對(duì)應(yīng)的角色是什么。就可以通過(guò)崗位查詢相關(guān)的角色從而進(jìn)行申請(qǐng)。
3)權(quán)限分級(jí):在權(quán)限創(chuàng)建時(shí),確定權(quán)限的危險(xiǎn)級(jí)別,對(duì)待高危權(quán)限,進(jìn)行特殊的申請(qǐng)流程。
權(quán)限設(shè)計(jì)是每一個(gè)B端產(chǎn)品繞不過(guò)去的知識(shí)點(diǎn),希望此文章能幫助初學(xué)者理解權(quán)限設(shè)計(jì)。是以記。
本文由 @舉個(gè)栗子 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自Unsplash,基于CC0協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
- 目前還沒(méi)評(píng)論,等你發(fā)揮!