這是”一文”系列的第二篇类早。本篇主要介紹基于RBAC模型權(quán)限設(shè)計的方法。
01 什么是RBAC模型權(quán)限嗜逻?
我們先看下邊一個小場景:
小明同學(xué)想晚上10點后進入圖書館學(xué)習(xí)涩僻,就在晚上10點準備進入圖書館時被保安王大叔給攔住了,理由是只有圖書館管理員10點以后才能進入圖書館栈顷。
1. 怎么樣才能讓小明同學(xué)在10點以后進入圖書館學(xué)習(xí)逆日?
“讓小明同學(xué)偷偷溜進去?” “給保安王大叔給好處萄凤?”
“還是讓小明同學(xué)去“某組織”申請成為“圖書館管理員”室抽?”
看來還是申請成為“圖書館管理員”比較靠譜,雖然需要寫申請書靡努,找老師簽字等走一系列的流程坪圾,雖然麻煩,但是這是晚上10點以后進入圖書館的正規(guī)途徑惑朦。
2. 進圖書館小場景和RBAC模型有什么聯(lián)系兽泄?
首先我們先看下百度百科的介紹
“RBAC(Role-Based?Access?Control):基于角色的訪問控制(RBAC)是實施面向企業(yè)安全策略的一種有效的訪問控制方式⊙拢”
“其基本思想是病梢,對系統(tǒng)操作的各種權(quán)限不是直接授予具體的用戶,而是在用戶集合與權(quán)限集合之間建立一個角色集合梁肿。每一種角色對應(yīng)一組相應(yīng)的權(quán)限蜓陌。一旦用戶被分配了適當?shù)慕巧螅撚脩艟蛽碛写私巧乃胁僮鳈?quán)限吩蔑∨ト龋”
看了百度百科介紹是不是感覺一臉懵?我們結(jié)合上邊的小場景去看:
角色1:圖書館管理員
角色2:保安?
用戶:小明同學(xué)
權(quán)限:晚上10點以后進入圖書館的權(quán)限
系統(tǒng):圖書館
“圖書館”將晚上10點以后進入圖書館的權(quán)限授權(quán)給“圖書館管理員”哥纫,只有“圖書館管理員”角色的權(quán)限才可以晚上10點進入圖書館霉旗。小明同學(xué)想晚上10點后進入圖書館,就需要成為“圖書館管理員”這個角色蛀骇,直接將權(quán)限賦給小明是不可行的。如下圖:
通過小場景读拆,我們簡單的理解了RBAC的基本概念擅憔,用“角色”將“用戶”與“權(quán)限”進行分割,實現(xiàn)“用戶”與“權(quán)限”的解耦檐晕。只要是小明同學(xué)屬于圖書館管理員角色暑诸,他就可以進入晚上10點后圖書館蚌讼,其他同學(xué)如果也申請了圖書館管理角色,同理也是可以在晚上10點以后進入圖書館的个榕。
有人問會有疑問篡石,為什么要設(shè)置“角色”,直接把權(quán)限賦予給“用戶”就行啦西采,不需要這么麻煩呀凰萨。咱們接著往下看。
3. RBAC模型的特點
提升管理效率械馆,降低授權(quán)復(fù)雜性
如果圖書館出了新規(guī)定胖眷,晚上10點禁止任何人進入圖書館。圖書館只需要將“圖書館管理員”角色下晚10點后進入圖書館權(quán)限關(guān)閉即可(如下圖)霹崎。反之珊搀,試想如果沒有“圖書館管理員”角色,直接將晚上10點以后進入圖書館權(quán)限賦給小明和其他同學(xué)尾菇。要取消權(quán)限就要對每個有權(quán)限的同學(xué)進行取消權(quán)限境析,大大增加了工作量。
適用企業(yè)管理變化
圖書館又發(fā)出新規(guī)定“圖書館出了新規(guī)定派诬,晚上10點禁止任何人進入圖書館不合理劳淆,應(yīng)該讓“保安”可以在晚上10點進入圖書館進行巡邏∏О#”通過RBAC模型方式憔儿,直接將“保安”角色賦予“晚上10點以后進入圖書館”的權(quán)限就可以了。
02 RBAC模型權(quán)限設(shè)計方法
模型1:RBAC0
RBAC0是RBAC的基礎(chǔ)放可,RBAC1谒臼,RBAC2,RBAC3模型都是從RBAC0模型拓展而成耀里。
RBAC0模型中用戶蜈缤,角色,權(quán)限都是多對多關(guān)系冯挎。例如:實際中企業(yè)可能由于各種原因會出現(xiàn)一人承擔(dān)多個角色底哥。比如擔(dān)任人力崗位同時,也會承擔(dān)行政的工作房官。
模型2:RBAC1
RBAC1在RBAC0的基礎(chǔ)上趾徽,加入角色繼承的概念。將角色下分成各個等級的小角色(如圖),子級權(quán)限繼承父級翰守。如下圖孵奶,根據(jù)子級等級不同來分配更細粒度的權(quán)限。
例如:公司的財務(wù)總監(jiān)可以看到整個公司所有部門的財務(wù)報表數(shù)據(jù)蜡峰,而銷售部財務(wù)經(jīng)理只能看到銷售部財務(wù)報表數(shù)據(jù)了袁,在銷售部財務(wù)經(jīng)理下可能還會設(shè)立其他崗位朗恳,比如財務(wù)專員,財務(wù)專員可能只有查看銷售部具體某個報表的權(quán)限载绿。
模型3:RBAC2
RBAC2是對RBAC0在角色粥诫,權(quán)限上增加了限制條件,例如: 公司規(guī)定有人被賦予了財務(wù)角色崭庸,就不能再賦予他審計角色怀浆。這樣可以在一定程度上防止在年總審計時候,審計人與被審計人是同一個人冀自。這就是角色互斥揉稚。
用戶擁有的角色數(shù),角色可以被賦予給多少用戶數(shù)熬粗,角色擁有的權(quán)限數(shù)都是可以被限制的搀玖,這就是基數(shù)限制。
還有先決條件限制驻呐,比如想擁有高級產(chǎn)品經(jīng)理灌诅,就必須先擁有產(chǎn)品經(jīng)理角色。
最后還有一種是動態(tài)的限制用戶及其擁有的角色含末,如果一個用戶可以擁有兩個角色猜拾,在運行是只能使用一個角色,這就是運行互斥。例如:未申請具體角色登錄系統(tǒng),角色為“通用角色”况芒。通用角色可以使用系統(tǒng)崗位角色申請功能,同時也能使用系統(tǒng)中已對“通用角色”開通權(quán)限的功能盯仪,例如查看運維電話、幫助手冊蜜葱。
模型4:RBAC3
RBAC3=RBAC1+RBAC2
RBAC3集成了RBAC1的角色分級繼承全景,同時也包括RBAC2中的各種限制。如下圖
03 實例復(fù)盤
1. 前期分析
A系統(tǒng)(企業(yè)內(nèi)部營銷域平臺)是我最近在參與項目之一牵囤,主要職責(zé)一部分是設(shè)計后臺功能爸黄,這其中就包含了權(quán)限設(shè)計。
對于A系統(tǒng)的權(quán)限設(shè)計揭鳞,我是從下邊三個點出發(fā)進行分析:
什么人用炕贵?
用戶從哪來?
作為企業(yè)內(nèi)部使用的營銷系統(tǒng)野崇,用戶主體部分都是企業(yè)員工鲁驶。其中少部分為供應(yīng)商團隊用戶。企業(yè)內(nèi)部員工通過與人力系統(tǒng)進行組織對接舞骆,打通人力系統(tǒng)與A系統(tǒng)用戶數(shù)據(jù)钥弯。員工可以直接使用統(tǒng)一企業(yè)賬號(portal)進行登錄。供應(yīng)商團隊用戶是沒有portal的督禽,這部分賬號需要進行創(chuàng)建分配脆霎。
什么身份(角色)
在找到“人”之后就要進行開始“身份”調(diào)研了”繁梗“身份”調(diào)研階段是跟進在整個業(yè)務(wù)調(diào)研階段中睛蛛,例如在調(diào)研中會梳理到實際業(yè)務(wù)組織架構(gòu)。雖然已經(jīng)確認有了人力系統(tǒng)組織架構(gòu)胧谈,但是根據(jù)實際經(jīng)驗往往人力架構(gòu)與實際業(yè)務(wù)中架構(gòu)會有一些差異忆肾。
通過前期業(yè)務(wù)調(diào)研后我們整理出組織架構(gòu),在組織架構(gòu)梳理中明確了組織中父子級對應(yīng)關(guān)系菱肖,在前期調(diào)研中也許明確出崗位角色中是否有“限制條件”客冈,例如崗位角色是否有唯一性限制,如下圖所示中每個分公司里只有一個運營總監(jiān)稳强,銷售總監(jiān)等等场仲。(RBAC2中基數(shù)限制)
用什么功能(權(quán)限)
功能權(quán)限分為功能權(quán)限與數(shù)據(jù)權(quán)限。
功能權(quán)限指的角色在系統(tǒng)內(nèi)操作范圍退疫,例如角色A可以點擊報表導(dǎo)出按鈕或者管理員角色在系統(tǒng)中可以看到后臺管理菜單并可以對其進行操作渠缕。
數(shù)據(jù)權(quán)限指的角色在系統(tǒng)中可操作的數(shù)據(jù)范圍,例如報表中只顯示該角色的數(shù)據(jù)范圍內(nèi)數(shù)據(jù)褒繁,比如上海公司的運營總監(jiān)查看數(shù)據(jù)權(quán)限只是上海分公司內(nèi)的亦鳞,同時篩選數(shù)據(jù)條件范圍也只限于其權(quán)限內(nèi)。
通過前期業(yè)務(wù)調(diào)研針對不同的業(yè)務(wù)場景流程棒坏,在設(shè)計相關(guān)功能時需整理出功能權(quán)限表燕差,權(quán)限表體現(xiàn)需要標注具體功能可以對哪些角色可見,功能內(nèi)某個按鈕具體操作權(quán)限俊抵。有了這份表格谁不,我們可以在系統(tǒng)上線初始化時,將角色的權(quán)限配置好徽诲,方便用戶上線后即用刹帕。
2. 設(shè)計階段
在梳理了用戶,角色谎替,權(quán)限(功能&數(shù)據(jù))關(guān)系后偷溺,就要著手進行功能設(shè)計了。
根據(jù)用戶流向策略钱贯,繪制出了如下后臺業(yè)務(wù)流程圖(初版)挫掏。
用戶來源主要是來自人力組織對接與自行創(chuàng)建分配用戶。人力崗位與角色在對接中形成組織對接關(guān)系秩命,在具體功能權(quán)限賦予時尉共,需要系統(tǒng)運營人員根據(jù)實際業(yè)務(wù)需求進行配置褒傅。
基于初版流程圖,先整體設(shè)計出后臺功能架構(gòu)袄友。
用戶中心:賬號管理? ?數(shù)據(jù)管理
角色中心:角色管理? ?角色功能管理? 角色組織崗位管理? 角色數(shù)據(jù)管理
組織管理:組織對接
用戶心中:賬號管理主要功能為賬號創(chuàng)建殿托,查看,刪除剧蚣,導(dǎo)出支竹,修改,賬號狀態(tài)修改(停用/凍結(jié)).針對供應(yīng)商賬號可以該功能模塊進行創(chuàng)建鸠按,其他操作可以對所有賬號進行礼搁。數(shù)據(jù)管理主要展示用戶的數(shù)據(jù)權(quán)限查看,導(dǎo)出目尖,刪除馒吴。
角色中心:角色管理主要功能為角色創(chuàng)建,查看卑雁,刪除募书,導(dǎo)出,修改测蹲。角色功能管理是角色與功能權(quán)限進行配置莹捡。角色組織崗位管理為角色與組織崗位關(guān)系的查看、導(dǎo)出扣甲。角色數(shù)據(jù)管理可為角色進行數(shù)據(jù)模板配置篮赢,用戶在提報角色數(shù)據(jù)權(quán)限時,只能根據(jù)數(shù)據(jù)模板設(shè)置進行相應(yīng)權(quán)限提報琉挖。
組織管理:組織對接功能與人力系統(tǒng)進行組織對接启泣。
3. 場景演練
張三是新入職新員工,其崗位是上海分公司一級銷售代表示辈。在入職后張三需要使用A系統(tǒng)進行日常辦公寥茫。因為A系統(tǒng)與人力系統(tǒng)有組織對接,所以張三直接使用portal賬號密碼登錄即可矾麻,登錄后需要進行角色與數(shù)據(jù)權(quán)限申請纱耻。
申請時角色默認為組織對接后角色,數(shù)據(jù)權(quán)限申請范圍是該角色可選擇數(shù)據(jù)權(quán)限险耀。例如張三崗位為上海分公司一級銷售代表弄喘,其角色為一級銷售代表,那么張三進入申請功能時角色默認為一級銷售代表甩牺。但申請數(shù)據(jù)數(shù)據(jù)權(quán)限時只能選擇上海,品牌選擇現(xiàn)在為全部或多選(數(shù)據(jù)權(quán)限是通過角色數(shù)據(jù)管理進行配置)蘑志。張三選擇完數(shù)據(jù)權(quán)限,提交申請后,審批由張三的上一級領(lǐng)導(dǎo)進行操作急但,審批通過后張三可以以一級銷售代表的角色身份登錄系統(tǒng)開展業(yè)務(wù)澎媒。
下圖為新員工角色數(shù)據(jù)權(quán)限流程圖。
后記
由于該項目暫時還未正式上線羊始,所以復(fù)盤的時隱藏了大部分信息旱幼,例如原型圖⊥晃可能會導(dǎo)致大家閱讀起來比較困難,后續(xù)我會根據(jù)實際情況不斷更新項目實例冬三。
給大家一點建議:整體權(quán)限設(shè)計應(yīng)該在項目開始時就要貫穿其中匀油,優(yōu)秀的后臺權(quán)限設(shè)計方案,必定是依靠著前臺清晰的功能設(shè)計而生成的勾笆。所以盡量多參與項目調(diào)研階段與需求分析階段敌蚜,最好整體都參與其中。
在整個項目權(quán)限設(shè)計中思想都是基于RBAC模型去設(shè)計的窝爪,RBAC模型的特點之一也是可以靈活多變的支持企業(yè)組織架構(gòu)的伸縮弛车,同時也提高了運維管理的效率。遺憾點是在設(shè)計初期并未考慮到分公司自行運營A系統(tǒng)的長遠需求(近幾年并不會實際落地)蒲每,沒有在設(shè)計時提出“租戶”或者“用戶組”概念纷跛。