后臺(tái)系統(tǒng):基于RBAC模型的權(quán)限設(shè)計(jì)
編輯導(dǎo)語:RBAC是一套成熟的權(quán)限模型,在傳統(tǒng)權(quán)限模型中,我們直接把權(quán)限賦予用戶。而在RBAC中,首先把權(quán)限賦予角色,再把角色賦予用戶。本文作者以后臺(tái)系統(tǒng)為例,以RBAC模型為基礎(chǔ),為我們展示了權(quán)限設(shè)計(jì)的過程。
對(duì)于業(yè)務(wù)復(fù)雜或數(shù)據(jù)龐大的系統(tǒng),為了方便管理,一定要做權(quán)限設(shè)計(jì)。權(quán)限設(shè)計(jì)是后臺(tái)系統(tǒng)要考慮的一個(gè)授權(quán)策略問題。直白的說,權(quán)限設(shè)計(jì)就是根據(jù)公司的業(yè)務(wù)規(guī)則,對(duì)權(quán)限管理系統(tǒng)設(shè)置的安全策略。
權(quán)限一般分為功能權(quán)限,數(shù)據(jù)權(quán)限與菜單權(quán)限:
- 功能權(quán)限控制當(dāng)前賬號(hào)可以操作的功能按妞,比如風(fēng)控只能審核標(biāo)的登記,但不能發(fā)起進(jìn)件申請(qǐng)。
- 數(shù)據(jù)權(quán)限控制當(dāng)前賬號(hào)可以看到的數(shù)據(jù)范圍,比如客服A只能看到分配到她名下的出借人的投資數(shù)據(jù)。
- 菜單權(quán)限控制當(dāng)前賬號(hào)可以看到的頁面內(nèi)容,比如催收人員只能看到案件逾期后流轉(zhuǎn)到催收頁面的內(nèi)容。
對(duì)于權(quán)限設(shè)計(jì),關(guān)鍵是理清用戶、權(quán)限、角色三者的關(guān)系。即給誰創(chuàng)建賬戶,分配什么角色,賦予何種權(quán)限。
一、需求背景
權(quán)限設(shè)計(jì)的首要問題是明確需求。權(quán)限設(shè)計(jì)牽涉到后臺(tái)系統(tǒng)底層架構(gòu)的業(yè)務(wù)邏輯,在做后臺(tái)系統(tǒng)之前,一定要對(duì)現(xiàn)有的權(quán)限控制和業(yè)務(wù)情況了解清楚,才能避免在權(quán)限設(shè)計(jì)的問題上踩坑。
以某車貸風(fēng)控系統(tǒng)為例,我們通過相關(guān)業(yè)務(wù)部門的反饋和當(dāng)前權(quán)限系統(tǒng)的調(diào)研,發(fā)現(xiàn)它存在的問題有以下幾點(diǎn):
- 用戶的權(quán)限歸屬不明確,導(dǎo)致進(jìn)件的申請(qǐng)和審核操作為同一個(gè)人;
- 敏感數(shù)據(jù)沒有做權(quán)限控制和脫敏處理,導(dǎo)致用戶隱私數(shù)據(jù)被泄露;
- 角色的分類不合理,每個(gè)用戶只能配置一個(gè)角色,導(dǎo)致工作組和流程節(jié)點(diǎn)比較復(fù)雜;
- 對(duì)所屬團(tuán)隊(duì)的客戶經(jīng)理、團(tuán)隊(duì)經(jīng)理和城市經(jīng)理做了三級(jí)維護(hù)關(guān)系,但人員調(diào)動(dòng)和離職率較大,導(dǎo)致管理成本高。
了解完現(xiàn)有需求背景后,我們借鑒釘釘?shù)哪翘讬?quán)限維護(hù)方式,改進(jìn)了管理系統(tǒng)的權(quán)限設(shè)計(jì)。
一方面收集權(quán)限需求,根據(jù)部門需求列一份權(quán)限清單,并做好CheckList。在模塊的功能頁面要放置哪些權(quán)限,完全可以根據(jù)《操作權(quán)限申請(qǐng)表》的業(yè)務(wù)需求,進(jìn)行靈活的權(quán)限配置。
另一方面借助UML建模的用例圖,將角色按功能Uc級(jí)細(xì)分到增刪改查導(dǎo),方便確認(rèn)相關(guān)人員的操作權(quán)限。
二、設(shè)計(jì)過程
明確需求后,就要選擇合適的權(quán)限設(shè)計(jì)模型。做后臺(tái)系統(tǒng)權(quán)限設(shè)計(jì),我們可以借鑒一些控制模型。
常見的權(quán)限設(shè)計(jì)控制模型有:自主訪問控制(DAC)、強(qiáng)制訪問控制(MAC)、訪問控制列表(ACL)、基于角色的訪問控制(RBAC) 、基于任務(wù)和工作流的訪問控制(TBAC) 、基于任務(wù)和角色的訪問控制(T-RBAC)、基于對(duì)象的訪問控制(OBAC)、使用控制模型( UCON)、基于屬性的訪問控制(ABAC)等。
最常見的權(quán)限設(shè)計(jì)控制模型是RBAC模型。像業(yè)務(wù)復(fù)雜且功能龐大的某車貸風(fēng)控系統(tǒng),權(quán)限設(shè)計(jì)選擇的就是RBAC模型,主要是方便后續(xù)的擴(kuò)展。
RBAC即基于角色的權(quán)限訪問控制(Role-Based Access Control),在RBAC模型中,權(quán)限與角色相關(guān)聯(lián),用戶通過成為對(duì)應(yīng)角色的成員,從而得到這些角色的權(quán)限。即用戶關(guān)聯(lián)角色,角色關(guān)聯(lián)權(quán)限,可實(shí)現(xiàn)系統(tǒng)權(quán)限的靈活配置。
訪問控制的核心是授權(quán)策略。在RBAC模型中,Who、What、How構(gòu)成了權(quán)限控制三要素,也就是Who對(duì)What(Which)進(jìn)行How的操作。
RBAC的權(quán)限授權(quán)其實(shí)就是Who、What、How的問題。Who:權(quán)限的擁用者,What:權(quán)限針對(duì)的資源,How:具體的權(quán)限。在RBAC中,根據(jù)權(quán)限設(shè)計(jì)的復(fù)雜程度,可分為RBAC0、RBAC1、RBAC2、RBAC3。
RBAC模型包含用戶(User)、資源(Resource)、操作(Operation)三個(gè)關(guān)鍵要素。通過將資源以及資源操作授權(quán)給用戶,而使用戶獲得對(duì)資源進(jìn)行操作的權(quán)限,保證了權(quán)限分配的實(shí)施。
此外,RBAC模型遵循三條安全原則:最小權(quán)限原則,責(zé)任分離原則和數(shù)據(jù)抽象原則,從而簡化了權(quán)限管理。
三、實(shí)施過程
選擇RBAC模型后,就要從賬戶、角色、權(quán)限三方面考慮實(shí)施過程,并滿足不同的用戶在使用過程中的不同權(quán)限需求。
其中賬戶和角色關(guān)聯(lián)、角色和權(quán)限關(guān)聯(lián),且都是多對(duì)多的關(guān)系,我們可以借助UML建模的類圖了解三者之間的關(guān)系。
以某車貸風(fēng)控系統(tǒng)為案例,我們要為某風(fēng)控A創(chuàng)建一個(gè)管理賬戶,并分配對(duì)應(yīng)的風(fēng)控人員角色,且在系統(tǒng)擁有訪問標(biāo)的詳情權(quán)限和操作標(biāo)的登記權(quán)限。
四、賬戶管理
賬戶管理的入口在系統(tǒng)管理模塊,包括基本的新增賬戶,編輯賬戶,刪除賬戶、查看賬戶、查詢賬戶,以及給賬戶分配角色。
賬號(hào)管理是管理員最常用到的功能,相應(yīng)字段一般是常用字段和特定字段。常用字段比如用戶ID,手機(jī)號(hào),姓名,角色,狀態(tài)和注冊(cè)時(shí)間等,特定字段是公司業(yè)務(wù)需求,比如分配角色,登錄時(shí)間,登錄次數(shù),訪問IP,訪問設(shè)備等。
管理員在新增賬戶時(shí),通過給該賬戶分配風(fēng)控人員的角色,從而擁有該角色的相關(guān)權(quán)限。RBAC模型就是通過給用戶分配角色,而取得角色的權(quán)限,這樣就簡化了用戶權(quán)限分配流程。
五、角色管理
角色管理的入口在系統(tǒng)管理模塊,包括基本的新增角色,編輯角色,刪除角色、查看角色、查詢角色,以及給角色分配權(quán)限。
角色管理是用來管理公司內(nèi)部用戶的角色信息。一個(gè)復(fù)雜的后臺(tái)會(huì)被分割成很多角色,比如管理員、運(yùn)營人員、客服人員、財(cái)務(wù)人員、催收人員等。我們可把具有共同特征的某一類人群的身份進(jìn)行歸納,從而為不同的用戶賦予對(duì)應(yīng)的角色權(quán)限。
管理員會(huì)根據(jù)公司業(yè)務(wù)需要,新增對(duì)應(yīng)的角色,并給該角色賦予對(duì)應(yīng)的頁面權(quán)限和操作權(quán)限。角色是關(guān)聯(lián)用戶和權(quán)限的紐帶,可以為用戶賦予該角色所集成的相關(guān)權(quán)限。我們?cè)跈?quán)限攔截流程設(shè)計(jì)時(shí),就會(huì)限制菜單要根據(jù)給用戶分配的角色填充,只顯示該角色可展示的菜單。
六、權(quán)限管理
權(quán)限管理的入口在系統(tǒng)管理模塊,包括基本的新增權(quán)限,編輯權(quán)限,刪除權(quán)限、查看權(quán)限,以及給權(quán)限狀態(tài)進(jìn)行開關(guān)。
任何一個(gè)B/S系統(tǒng)或C/S系統(tǒng)都會(huì)做權(quán)限管理。權(quán)限管理限制用戶可以訪問而且只能訪問自己被授權(quán)的內(nèi)容或數(shù)據(jù)。
管理員在新增權(quán)限時(shí),會(huì)限定權(quán)限性質(zhì)為基本權(quán)限或操作權(quán)限。比如用戶沒有操作權(quán)限時(shí),點(diǎn)擊按鈕會(huì)提示無權(quán)限,或者按鈕置灰不可點(diǎn)擊,或者隱藏該操作按鈕。
權(quán)限設(shè)計(jì)是后臺(tái)系統(tǒng)必不可少的一個(gè)環(huán)節(jié)?;赗BAC模型的權(quán)限設(shè)計(jì),能支持業(yè)務(wù)復(fù)雜的權(quán)限控制,也能滿足平臺(tái)運(yùn)營的安全策略,增加了權(quán)限管理的靈活性與簡便化。
#專欄作家#
朱學(xué)敏,微信公眾號(hào):朱學(xué)敏聊產(chǎn)品,人人都是產(chǎn)品經(jīng)理專欄作家。暢銷書《產(chǎn)品閉環(huán):重新定義產(chǎn)品經(jīng)理》作者,7年金融產(chǎn)品人,專注于金融行業(yè),從0到1負(fù)責(zé)產(chǎn)品的全過程開發(fā)與設(shè)計(jì)。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
專欄作家
游善朱哥,微信公眾號(hào):朱哥聊產(chǎn)品,人人都是產(chǎn)品經(jīng)理專欄作家。暢銷書《產(chǎn)品閉環(huán):重新定義產(chǎn)品經(jīng)理》和《金融產(chǎn)品方法論》作者,近10年金融產(chǎn)品人,專注于金融行業(yè)(貸款、理財(cái)、支付)的產(chǎn)品知識(shí)分享,從0到1負(fù)責(zé)多款金融產(chǎn)品的全過程規(guī)劃與設(shè)計(jì)。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
實(shí)施過程的第二張圖關(guān)系畫錯(cuò)了,角色表不會(huì)直接和用戶表關(guān)聯(lián),而是通過用戶角色表關(guān)聯(lián)。
并不看好RBAC模型,因?yàn)橛脩簦航巧簷?quán)限都是多對(duì)多的關(guān)系,當(dāng)后兩者數(shù)量破百之后,維護(hù)是十分困難的,小型系統(tǒng)可以簡單應(yīng)付一下,大型項(xiàng)目還是不要勉強(qiáng)了
前不久做的項(xiàng)目就是用的這個(gè)模型,相較之前直接對(duì)帳號(hào)去配置權(quán)限,這套好使多了,更清晰
權(quán)限設(shè)計(jì)相關(guān)文章推薦的大多是RBAC的幾種模型,那如果是大型項(xiàng)目,大佬推薦使用什么模型呢?
沒有固定模型,根據(jù)業(yè)務(wù)場(chǎng)景定義,不同的產(chǎn)品結(jié)構(gòu)有適配自己的權(quán)限模型,得靠產(chǎn)品自己打磨推敲
本來權(quán)限模型就是適配不同的場(chǎng)景 選對(duì)了模型 何來勉強(qiáng)
模型不是選出來的,思路可以借鑒參考,模型是實(shí)打?qū)嵉幕A(chǔ),RBAC也有好多個(gè)變種,別死摳主流模型不放,實(shí)際應(yīng)用時(shí)靈活取舍
第一次看到這個(gè)模型RBAC,雖然有些陌生,但是總覺得很全面,加油
再接再厲。希望能看到后續(xù)該文檔的完善