基于角色的權(quán)限控制模型RBAC圖文教程
我們開發(fā)一個系統(tǒng),必然面臨權(quán)限控制的問題,即不同的用戶具有不同的訪問、操作、數(shù)據(jù)權(quán)限。形成理論的權(quán)限控制模型有:自主訪問控制(DAC: Discretionary Access Control)、強(qiáng)制訪問控制(MAC: Mandatory Access Control)、基于屬性的權(quán)限驗證(ABAC: Attribute-Based Access Control)等。最常被開發(fā)者使用也是相對易用、通用的就是RBAC權(quán)限模型(Role-Based Access Control),本文就將向大家介紹該權(quán)限模型。
一、RBAC權(quán)限模型簡介
RBAC權(quán)限模型(Role-Based Access Control)即:基于角色的權(quán)限控制。模型中有幾個關(guān)鍵的術(shù)語:
- 用戶:系統(tǒng)接口及訪問的操作者
- 權(quán)限:能夠訪問某接口或者做某操作的授權(quán)資格
- 角色:具有一類相同操作權(quán)限的用戶的總稱
RBAC權(quán)限模型核心授權(quán)邏輯如下:
- 某用戶是什么角色?
- 某角色具有什么權(quán)限?
- 通過角色的權(quán)限推導(dǎo)用戶的權(quán)限
二、RBAC的演化進(jìn)程
2.1.用戶與權(quán)限直接關(guān)聯(lián)
想到權(quán)限控制,人們最先想到的一定是用戶與權(quán)限直接關(guān)聯(lián)的模式,簡單地說就是:某個用戶具有某些權(quán)限。如圖:
- 張三具有創(chuàng)建用戶和刪除用戶的權(quán)限,所以他可能系統(tǒng)維護(hù)人員
- 李四具有產(chǎn)品記錄管理和銷售記錄管理權(quán)限,所以他可能是一個業(yè)務(wù)銷售人員
這種模型能夠清晰的表達(dá)用戶與權(quán)限之間的關(guān)系,足夠簡單。但同時也存在問題:
現(xiàn)在用戶是張三、李四,以后隨著人員增加,每一個用戶都需要重新授權(quán)
或者張三、李四離職,需要針對每一個用戶進(jìn)行多種權(quán)限的回收
2.2.一個用戶擁有一個角色
在實際的團(tuán)體業(yè)務(wù)中,都可以將用戶分類。比如對于薪水管理系統(tǒng),通常按照級別分類:經(jīng)理、高級工程師、中級工程師、初級工程師。也就是按照一定的角色分類,通常具有同一角色的用戶具有相同的權(quán)限。這樣改變之后,就可以將針對用戶賦權(quán)轉(zhuǎn)換為針對角色賦權(quán)。
- 一個用戶有一個角色
- 一個角色有多個操作(菜單)權(quán)限
- 一個操作權(quán)限可以屬于多個角色
我們可以用下圖中的數(shù)據(jù)庫設(shè)計模型,描述這樣的關(guān)系。
2.3 一個用戶一個或多個角色
但是在實際的應(yīng)用系統(tǒng)中,一個用戶一個角色遠(yuǎn)遠(yuǎn)滿足不了需求。如果我們希望一個用戶既擔(dān)任銷售角色、又暫時擔(dān)任副總角色。該怎么做呢?為了增加系統(tǒng)設(shè)計的適用性,我們通常設(shè)計:
- 一個用戶有一個或多個角色
- 一個角色包含多個用戶
- 一個角色有多種權(quán)限
- 一個權(quán)限屬于多個角色
我們可以用下圖中的數(shù)據(jù)庫設(shè)計模型,描述這樣的關(guān)系。
三、頁面訪問權(quán)限與操作權(quán)限
頁面訪問權(quán)限: 所有系統(tǒng)都是由一個個的頁面組成,頁面再組成模塊,用戶是否能看到這個頁面的菜單、是否能進(jìn)入這個頁面就稱為頁面訪問權(quán)限。
操作權(quán)限: 用戶在操作系統(tǒng)中的任何動作、交互都需要有操作權(quán)限,如增刪改查等。比如:某個按鈕,某個超鏈接用戶是否可以點(diǎn)擊,是否應(yīng)該看見的權(quán)限。
為了適應(yīng)這種需求,我們可以把頁面資源(菜單)和操作資源(按鈕)分表存放,如上圖。也可以把二者放到一個表里面存放,用一個字段進(jìn)行標(biāo)志區(qū)分。
四、數(shù)據(jù)權(quán)限
數(shù)據(jù)權(quán)限比較好理解,就是某個用戶能夠訪問和操作哪些數(shù)據(jù)。
通常來說,數(shù)據(jù)權(quán)限由用戶所屬的組織來確定。比如:生產(chǎn)一部只能看自己部門的生產(chǎn)數(shù)據(jù),生產(chǎn)二部只能看自己部門的生產(chǎn)數(shù)據(jù);銷售部門只能看銷售數(shù)據(jù),不能看財務(wù)部門的數(shù)據(jù)。而公司的總經(jīng)理可以看所有的數(shù)據(jù)。
在實際的業(yè)務(wù)系統(tǒng)中,數(shù)據(jù)權(quán)限往往更加復(fù)雜。非常有可能銷售部門可以看生產(chǎn)部門的數(shù)據(jù),以確定銷售策略、安排計劃等。
所以為了面對復(fù)雜的需求,數(shù)據(jù)權(quán)限的控制通常是由程序員書寫個性化的SQL來限制數(shù)據(jù)范圍的,而不是交給權(quán)限模型或者Spring Security或shiro來控制。當(dāng)然也可以從權(quán)限模型或者權(quán)限框架的角度去解決這個問題,但適用性有限。
以上就是基于角色的權(quán)限控制模型RBAC圖文教程的詳細(xì)內(nèi)容,更多關(guān)于角色的權(quán)限控制模型RBAC的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
重裝win10系統(tǒng)超詳細(xì)的圖文教程(適用所有windows系統(tǒng))
這篇文章主要介紹了重裝win10系統(tǒng)超詳細(xì)的圖文教程(適用所有windows系統(tǒng)),非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-11-11git log根據(jù)特定條件查詢?nèi)罩静⒔y(tǒng)計修改的代碼行數(shù)
這篇文章主要介紹了git log根據(jù)特定條件查詢?nèi)罩静⒔y(tǒng)計修改的代碼行數(shù),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09net-snmp靜態(tài)編譯鏈接的獲取程序及生成執(zhí)行程序詳解
這篇文章主要介紹了net-snmp靜態(tài)編譯鏈接的獲取程序及生成執(zhí)行程序詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08IDEA/WebStorm/Pycharm鼠標(biāo)滾輪ctrl+滾輪-調(diào)節(jié)縮放字體大小
很多朋友不清楚IDEA/WebStorm/Pycharm鼠標(biāo)滾輪ctrl+滾輪-調(diào)節(jié)縮放字體大小的,下面我以idea開發(fā)工具為例給大家通過截圖一步步展示操作方法,需要的朋友可以參考下2021-05-05