一文詳解To B權(quán)限設(shè)計

這是”一文”系列的第二篇类早。本篇主要介紹基于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è)計時提出“租戶”或者“用戶組”概念纷跛。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市邀杏,隨后出現(xiàn)的幾起案子贫奠,更是在濱河造成了極大的恐慌,老刑警劉巖望蜡,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唤崭,死亡現(xiàn)場離奇詭異,居然都是意外死亡脖律,警方通過查閱死者的電腦和手機谢肾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來小泉,“玉大人芦疏,你說我怎么就攤上這事「嗝希” “怎么了眯分?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長柒桑。 經(jīng)常有香客問我弊决,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任飘诗,我火速辦了婚禮与倡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘昆稿。我一直安慰自己纺座,他們只是感情好,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布溉潭。 她就那樣靜靜地躺著净响,像睡著了一般。 火紅的嫁衣襯著肌膚如雪喳瓣。 梳的紋絲不亂的頭發(fā)上馋贤,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機與錄音畏陕,去河邊找鬼配乓。 笑死,一個胖子當著我的面吹牛惠毁,可吹牛的內(nèi)容都是我干的犹芹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鞠绰,長吁一口氣:“原來是場噩夢啊……” “哼腰埂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起洞豁,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤盐固,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后丈挟,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刁卜,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年曙咽,在試婚紗的時候發(fā)現(xiàn)自己被綠了蛔趴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡例朱,死狀恐怖孝情,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情洒嗤,我是刑警寧澤箫荡,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站渔隶,受9級特大地震影響羔挡,放射性物質(zhì)發(fā)生泄漏洁奈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一绞灼、第九天 我趴在偏房一處隱蔽的房頂上張望利术。 院中可真熱鬧,春花似錦低矮、人聲如沸印叁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽轮蜕。三九已至,卻和暖如春良姆,著一層夾襖步出監(jiān)牢的瞬間肠虽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工玛追, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人闲延。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓痊剖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親垒玲。 傳聞我的和親對象是個殘疾皇子陆馁,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355