基于角色的權(quán)限管理功能設(shè)計(jì)思路

幾乎任何一個(gè)后臺(tái)引几,都會(huì)涉及到權(quán)限管理丹允,哪些人(用戶)有能夠登陸航瞭,能夠操作哪些東西(權(quán)限)彤恶。

基于角色的訪問控制方法(Role-Based Access Control,簡稱RBAC)是目前公認(rèn)的解決大型企業(yè)的統(tǒng)一資源訪問控制的有效方法筝野。其顯著的兩大特征是:
1、減小授權(quán)管理的復(fù)雜性粤剧,降低管理開銷;
2挥唠、靈活地支持企業(yè)的安全策略抵恋,并對企業(yè)的變化有很大的伸縮性。

RBAC的基本思路

RBAC-0是基于角色的訪問控制方法的最基礎(chǔ)的模型宝磨,在原來的“用戶-權(quán)限”結(jié)構(gòu)中加入“角色”的概念弧关,變成“用戶-角色-權(quán)限”結(jié)構(gòu)。
相應(yīng)的權(quán)限管理模塊和功能如下:
用戶管理
提供用戶賬戶的創(chuàng)建唤锉、編輯世囊、啟用、停用窿祥、刪除的功能株憾。具體依賴于郵箱、手機(jī)號或其他信息創(chuàng)建賬號晒衩,根據(jù)各公司實(shí)際情況而定嗤瞎。

角色管理
角色管理包含了用戶&角色的關(guān)聯(lián)、角色&權(quán)限的關(guān)聯(lián)管理听系,主要包括以下功能:
1贝奇、角色的創(chuàng)建、編輯靠胜、刪除的功能掉瞳,
2毕源、角色下用戶的添加和刪除
3、角色權(quán)限的配置功能

角色管理功能示意

這種結(jié)構(gòu)中陕习,創(chuàng)建不同的角色霎褐,將權(quán)限直接賦予角色,用戶只需關(guān)聯(lián)角色即可獲得該角色的所對應(yīng)的權(quán)限衡查。這樣做的好處是:
1瘩欺、不用每個(gè)用戶都設(shè)置一遍權(quán)限,只需設(shè)置角色的權(quán)限拌牲。
2俱饿、用戶角色變化時(shí),比如 從銷售轉(zhuǎn)崗到產(chǎn)品塌忽,只需將用戶的角色做變更拍埠,相應(yīng)的權(quán)限就會(huì)變更。

除了RBAC-0之外土居,還有RBAC-1枣购、RBAC-2、RBAC-3擦耀,會(huì)放在文末供大家了解棉圈,為避免影響文章邏輯,在此不做詳述眷蜓。

數(shù)據(jù)權(quán)限是功能權(quán)限的延伸

常見的權(quán)限需求有兩類:功能權(quán)限和數(shù)據(jù)權(quán)限分瘾。
功能權(quán)限
1、菜單級別的權(quán)限:可見性
2吁系、頁面元素級別權(quán)限:可操作性
比如上面舉例的DBAC-0的設(shè)計(jì)方案就屬于功能權(quán)限德召,對于一級菜單和二級菜單來說,如果沒有權(quán)限汽纤,就不展示該菜單上岗,即可見性;對于權(quán)限明細(xì)來說蕴坪,如果沒有該權(quán)限肴掷,則操作時(shí)報(bào)錯(cuò),比如點(diǎn)擊時(shí)toast提示“對不起背传,您沒有該操作權(quán)限”捆等,即可操作性。

數(shù)據(jù)權(quán)限
數(shù)據(jù)權(quán)限簡單說就是功能給你用续室,數(shù)據(jù)不給看栋烤。比如,查看銷售記錄的功能挺狰,用戶A和B都有權(quán)限使用明郭,但A有權(quán)看到公司所有人的买窟,B只能看到他自己的銷售記錄。這就涉及到數(shù)據(jù)權(quán)限的控制了薯定。

涉及數(shù)據(jù)權(quán)限的權(quán)限管理需求會(huì)比單純的功能權(quán)限復(fù)雜一些始绍,但數(shù)據(jù)權(quán)限的依賴于功能權(quán)限,是對功能權(quán)限的進(jìn)一步描述话侄,說明角色在指定的功能點(diǎn)上的數(shù)據(jù)控制權(quán)限亏推。

角色的數(shù)據(jù)權(quán)限管理

首先,有一個(gè)約定年堆,為了降低開發(fā)成本吞杭,數(shù)據(jù)權(quán)限一般采用“沒有明確規(guī)定即視為有效”的原則,如果沒有定義功能的數(shù)據(jù)權(quán)限变丧,則說明該角色具有該功能的全部權(quán)限芽狗。如果定義了功能的某種類型的數(shù)據(jù)權(quán)限,則該用戶只具有該類型下指定數(shù)據(jù)的數(shù)據(jù)權(quán)限痒蓬。

這個(gè)與功能權(quán)限的設(shè)定是剛好相反的童擎,功能權(quán)限是有指定才有權(quán)限,不指定就沒有權(quán)限攻晒。

繼續(xù)上面提到的設(shè)計(jì)方案顾复,假如需求背景進(jìn)一步明確:
張三、李四鲁捏、王五為業(yè)務(wù)一部芯砸,公司一共3個(gè)業(yè)務(wù)部,還有業(yè)務(wù)二部碴萧、業(yè)務(wù)三部,小紅為業(yè)務(wù)一部經(jīng)理末购,小明為銷售部總經(jīng)理破喻。要求按照組織架構(gòu)查看訂單信息:業(yè)務(wù)員只能查看個(gè)人、業(yè)務(wù)經(jīng)理可以查看自己業(yè)務(wù)部的所有訂單盟榴,總經(jīng)理可以查看自己事業(yè)部的所有訂單信息曹质。

首先在數(shù)據(jù)權(quán)限中明確兩個(gè)概念,數(shù)據(jù)類型和數(shù)據(jù)對象擎场。
數(shù)據(jù)類型即數(shù)據(jù)中的某一個(gè)字段羽德,數(shù)據(jù)對象即數(shù)據(jù)類型的值。
比如A部門的人不能看B部門的數(shù)據(jù)迅办,則對于A部門的人來說宅静,其數(shù)據(jù)權(quán)限的數(shù)據(jù)類型就是“部門”,數(shù)據(jù)對象就是A站欺。

基于上述需求設(shè)計(jì)方案相應(yīng)的進(jìn)一步調(diào)整如下:
組織架構(gòu)
首先要有組織架構(gòu)數(shù)據(jù)庫姨夹,用于權(quán)限控制時(shí)調(diào)用纤垂。

組織架構(gòu)簡圖

角色管理-業(yè)務(wù)員
業(yè)務(wù)員僅可以查看自己的數(shù)據(jù),為了方便磷账,在可專門設(shè)置一個(gè)值為個(gè)人標(biāo)識(shí)峭沦。
業(yè)務(wù)員角色

角色管理-一部業(yè)務(wù)經(jīng)理
創(chuàng)建角色業(yè)務(wù)一部經(jīng)理,設(shè)置數(shù)據(jù)權(quán)限類型部門為業(yè)務(wù)一部逃糟,標(biāo)識(shí)該角色只可查看業(yè)務(wù)一部的訂單數(shù)據(jù)吼鱼。
一部業(yè)務(wù)經(jīng)理角色

角色管理-銷售部總經(jīng)理
創(chuàng)建角色銷售部總經(jīng)理,設(shè)置數(shù)據(jù)權(quán)限類型部門為銷售事業(yè)部绰咽,標(biāo)識(shí)該角色只可查看銷售事業(yè)部的訂單數(shù)據(jù)菇肃。
銷售部經(jīng)理角色

對于數(shù)據(jù)權(quán)限來說,可根據(jù)需要設(shè)置多個(gè)數(shù)據(jù)類型字段剃诅,比如部門巷送、商戶類型等,基于數(shù)據(jù)的字段來控制權(quán)限矛辕。

以上笑跛,是基于整理的RBAC資料梳理的權(quán)限管理功能設(shè)計(jì)思路,方案上可能有些欠妥聊品,畢竟不是真實(shí)已落地的方案飞蹂,歡迎大家留言指正,如果有真實(shí)案例分享也歡迎推薦呀

附文

補(bǔ)上RBAC的另外幾種延伸形式
1翻屈、RBAC-1
RBAC1引入角色間的繼承關(guān)系陈哑,角色間的繼承關(guān)系可分為一般繼承關(guān)系和受限繼承關(guān)系。一般繼承關(guān)系僅要求角色繼承關(guān)系是一個(gè)絕對偏序關(guān)系伸眶,允許角色間的多繼承惊窖。而受限繼承關(guān)系則進(jìn)一步要求角色繼承關(guān)系是一個(gè)樹結(jié)構(gòu)。
2厘贼、RBAC-2
RBAC2模型中添加了責(zé)任分離關(guān)系界酒。RBAC2的約束規(guī)定了權(quán)限被賦予角色時(shí),或角色被賦予用戶時(shí),以及當(dāng)用戶在某一時(shí)刻激活一個(gè)角色時(shí)所應(yīng)遵循的強(qiáng)制性規(guī)則。
責(zé)任分離包括靜態(tài)責(zé)任分離和動(dòng)態(tài)責(zé)任分離嘴秸。

靜態(tài)責(zé)任分離
1毁欣、互斥角色限制:同一個(gè)用戶在兩個(gè)互斥的角色中只能選擇一個(gè)
2、角色數(shù)量限制:一個(gè)用戶擁有的角色數(shù)是有限的岳掐,同樣的權(quán)限也會(huì)是有限的
3凭疮、角色先后限制:用戶要擁有更高級的角色,首先要有相應(yīng)的低級角色
動(dòng)態(tài)責(zé)任分離
4串述、角色激活限制:如一個(gè)用戶允許擁有兩個(gè)角色执解,但運(yùn)行時(shí)只能激活一個(gè)角色

約束與用戶-角色-權(quán)限關(guān)系一起決定了RBAC2模型中用戶的訪問許可。

3纲酗、RBAC-3
RBAC3包含了RBAC1和RBAC2材鹦,既提供了角色間的繼承關(guān)系逝淹,又提供了責(zé)任分離關(guān)系。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末桶唐,一起剝皮案震驚了整個(gè)濱河市栅葡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌尤泽,老刑警劉巖欣簇,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異坯约,居然都是意外死亡熊咽,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門闹丐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來横殴,“玉大人,你說我怎么就攤上這事卿拴∩缆兀” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵堕花,是天一觀的道長文狱。 經(jīng)常有香客問我,道長缘挽,這世上最難降的妖魔是什么瞄崇? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮壕曼,結(jié)果婚禮上苏研,老公的妹妹穿的比我還像新娘。我一直安慰自己腮郊,他們只是感情好摹蘑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著伴榔,像睡著了一般纹蝴。 火紅的嫁衣襯著肌膚如雪庄萎。 梳的紋絲不亂的頭發(fā)上踪少,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機(jī)與錄音糠涛,去河邊找鬼援奢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛忍捡,可吹牛的內(nèi)容都是我干的集漾。 我是一名探鬼主播切黔,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼具篇!你這毒婦竟也來了纬霞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤驱显,失蹤者是張志新(化名)和其女友劉穎诗芜,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體埃疫,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡伏恐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了栓霜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翠桦。...
    茶點(diǎn)故事閱讀 40,102評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖胳蛮,靈堂內(nèi)的尸體忽然破棺而出销凑,到底是詐尸還是另有隱情,我是刑警寧澤鹰霍,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布闻鉴,位于F島的核電站,受9級特大地震影響茂洒,放射性物質(zhì)發(fā)生泄漏孟岛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一督勺、第九天 我趴在偏房一處隱蔽的房頂上張望渠羞。 院中可真熱鬧,春花似錦智哀、人聲如沸次询。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽屯吊。三九已至,卻和暖如春摹菠,著一層夾襖步出監(jiān)牢的瞬間盒卸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工次氨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蔽介,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像虹蓄,于是被迫代替她去往敵國和親犀呼。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容