RBAC 模型梳理

1. RBAC 模型是什么

RBAC(Role-Based Access Control)即:基于角色的權限控制。通過角色關聯用戶,角色關聯權限的方式間接賦予用戶權限。
RBAC 模型由 4 個基礎模型組成:

  1. 基本模型 RBAC0(Core RBAC)
  2. 角色分層模型 RBAC1(Hierarchal RBAC)
  3. 角色限制模型 RBAC2(Constraint RBAC)
  4. 統一模型 RBAC3(Combines RBAC)
    RBAC 授權的過程可以抽象概括為:判斷 Who 是否可以對 What 進行 How 的訪問操作,以及這個邏輯表達式的值是否為 True 的計算過程。
    Who、What、How 構成了訪問權限三元組,Who 是權限的擁有者或主體(User、Role),What 是資源(Resource),How 是具體的權限。
    在這里插入圖片描述

1.1. 基本模型 RBAC0

RBAC0 是最基礎也是最核心的模型,由五部分組成:用戶(User)、角色(Role)、許可(Permission)、會話(Session)、操作(operations OPS)。
在這里插入圖片描述
角色通過權限(許可)被授權資源,角色又授權到用戶身上,通過會話管理用戶和角色的授權關系,用戶就繼承了角色的訪問資源權限。
我們舉一個很簡單的例子,例如:張三是一家企業的財務總監,同時他也是該企業對外的形象大使,財務總監有訪問公司財務數據的權限,形象大使有訪問公司市場部推廣計劃和編輯發言稿的權限。那么張三既有訪問公司財務數據的權限,又有訪問公司市場部推廣計劃和編輯發言稿的權限。突然有一天公司決定做職位調整,張三被任命為財務總監和人力資源總監,撤掉了形象大使。那么張三當前就只能訪問財務總監和人力資源總監所對應的授權資源。

1.2. 角色分層模型 RBAC1

該模型主要是在 RBAC0 的基礎上,增加了角色層級關系的繼承邏輯,也就是說角色有了組織樹的邏輯。
在這里插入圖片描述
角色有了上下級關系,上一級的角色可以繼承其下所有角色的授權資源。
再比如張三是一家企業的財務總監,同時他也是該企業對外的形象大使,財務總監有訪問公司財務數據的權限,形象大使有訪問公司市場部推廣計劃和編輯發言稿的權限。那么他的上級領導,比如是該公司的 CFO,既有訪問公司財務數據的權限,又有訪問公司市場部推廣計劃和編輯發言稿的權限。這是繼承關系。
在這里插入圖片描述

1.3. 角色限制模型 RBAC2

該模型主要添加了授權約束。約束規定了權限被賦予角色時,或角色被賦予用戶時,以及當用戶在某一時刻激活一個角色時所應遵循的強制性規則。
責任分離包括:靜態責任分離(SSD)和動態責任分離(DSD)。
在這里插入圖片描述
SSD 是用戶和角色的指派階段加入的,主要是對用戶和角色有如下約束:

  1. 角色互斥:同一個用戶在兩個互斥角色中只能選擇一個。比如財務部有會計和審核員兩個角色,他們是互斥角色,那么用戶不能同時擁有這兩個角色,體現了職責分離原則。
  2. 基數約束:一個角色被分配的用戶數量受限,一個用戶可擁有的角色數目受限,同樣一個角色對應的訪問資源權限數目也受限,以控制高級權限在系統中的分配。比如李四是 COO,王五不能也是 COO。同樣的李四不能既是 COO 又是 CTO 又是 CFO。COO 、CTO、 CFO 三個角色所能訪問的資源權限也不能是一模一樣的。
  3. 先決條件約束:用戶想要獲得高級角色,首先必須擁有低級角色。
    DSD 是會話和角色之間的約束,可以動態的約束用戶擁有的角色,也叫運行時互斥。如一個用戶可以擁有兩個角色,但是運行時只能激活一個角色。如一個人如果既是運動員又是教練,當比賽開始的時候,只能選擇一個角色身份入場。

1.4. 統一模型 RBAC3

RBAC3 是 RBAC1 與 RBAC2 的合集,所以 RBAC3 是既有角色分層又有約束的一種綜合授權模型了。

2. 什么是權限

權限是資源的集合,這里的資源指的是軟件中所有的內容,包括模塊、菜單、頁面、字段、操作功能(增刪改查)等等。具體的權限配置上,目前形式多種多樣,按照我個人的理解,可以將權限分為:頁面權限操作權限數據權限

2.1. 頁面權限

所有系統都是由一個個的頁面組成,頁面再組成模塊,用戶是否能看到這個頁面的菜單、是否能進入這個頁面就稱為頁面權限。
在這里插入圖片描述
客戶列表、客戶黑名單、客戶審批頁面組成了客戶管理這個模塊。對于普通用戶,不能進行審批操作,即無客戶審批頁面權限,在他的賬號登錄后側邊導航欄只顯示客戶列表、客戶黑名單兩個菜單。

2.2. 操作權限

用戶凡是在操作系統中的任何動作、交互都是操作權限,如增刪改查等。

2.3. 數據權限

數據權限是指在一個系統,對于不同的用戶或用戶組,授予不同的數據訪問權限的過程。
這里的數據權限包含菜單、頁面以及字段等。這些權限可以限制用戶可以訪問哪些數據、以及他們可以對這些數據進行哪些操作。數據權限的目的是確保數據的安全性和保密性,同時也可以提高數據的可用性和可靠性。
簡單舉個例子:某系統中有銷售部門,銷售專員負責推銷商品,銷售主管負責管理銷售專員日常工作,經理負責組織管理銷售主管作業。
在這里插入圖片描述
按照實際理解,“銷售專員張三”登錄時,只能看到自己負責的數據;銷售主管2登錄時,能看到他所領導的所有業務員負責的數據,但看不到其他團隊業務員負責的數據。
換另外一句話就是:我的客戶只有我和我的直屬上級以及直屬上級的領導能看到,這就是我理解的數據權限。
要實現數據權限有多種方式:

  1. 可以利用RBAC1模型,通過角色分級來實現。
  2. 在‘用戶-角色-權限’的基礎上,增加用戶與組織的關聯關系,用組織決定用戶的數據權限。
    具體如何做呢?
  3. 組織層級劃分
    在這里插入圖片描述
  4. 數據可視權限規則制定
    上級組織只能看到下級組織員工負責的數據,而不能看到其他平級組織及其下級組織的員工數據等。
    通過以上兩點,系統就可以在用戶登錄時,自動判斷要給用戶展示哪些數據了。

3. RBAC 設計實現

3.1. 用戶-角色-權限

最簡單的用戶、角色、權限(許可)模型。這里面又包含了2種:

  1. 用戶和角色是多對一關系,即:一個用戶只充當一種角色,一種角色可以有多個用戶擔當。
  2. 用戶和角色是多對多關系,即:一個用戶可同時充當多種角色,一種角色可以有多個用戶擔當。
    那么,什么時候該使用多對一的權限體系,什么時候又該使用多對多的權限體系呢?
    如果系統功能比較單一,使用人員較少,崗位權限相對清晰且確保不會出現兼崗的情況,此時可以考慮用多對一的權限體系。
    其余情況盡量使用多對多的權限體系,保證系統的可擴展性。如:張三既是行政,也負責財務工作,那張三就同時擁有行政和財務兩個角色的權限。

3.2. 用戶-組織-角色-權限

在“用戶-角色-權限”的基礎上,增加了用戶與組織的關聯關系,組織決定了用戶的數據范圍的權限
在這里插入圖片描述
系統都有數據私密性的要求:哪些用戶可以看到哪些數據,哪些用戶不可以看到哪些數據。這個時候,我們需要從組織結構出發思考數據范圍權限其實是角色權限的重要屬性,但是由于數據范圍太靈活,如果加入“數據權限”,如果賬號下的數據量較大,用戶編輯數據權限的操作會很繁瑣。因此現在主流的后臺設計都會使用“組織結構”來對應數據權限。
在這里插入圖片描述
常用數據范圍設置:全部數據權限自定數據權限本部門數據權限本部門及以下數據權限僅本人數據權限

3.3. 用戶-組織-崗位-角色-權限

在第二種權限體系上進行優化的,增加了用戶與崗位的關聯關系
在這里插入圖片描述

4. 組織結構數據庫存儲

https://blog.csdn.net/tongluren381/article/details/114874080

參考:
https://www.zhihu.com/question/428429216
https://www.woshipm.com/pd/1150093.html
https://blog.csdn.net/hao2713636/article/details/132326046

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/23715.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/23715.shtml
英文地址,請注明出處:http://en.pswp.cn/web/23715.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

面向AI應用開發實戰分享 - 基礎篇

“前端轉AI,第一講來了” 引言 如果你是一名前端開發,同時又對AI開發很感興趣,那么恭喜你,機會來了。 如果不是也沒關系,同樣能幫大家了解AI應用的開發思路。 本文將帶大家從面向AI開發的基礎知識開始,再…

Vue3:ElementPlus分裝動態列表查詢表單和彈窗動態表單

文章目錄 概要表單組件封裝彈窗組件調用表單組件頁面列表調用查詢表單 表單組件封裝 組件代碼 <template><el-formref"ruleFormRef"class"elForm":inline"true":rules"rules":model"TableList"label-width"…

AlaSQL.js:用SQL解鎖JavaScript數據操作的魔法

簡介 先附上 github 地址 https://github.com/AlaSQL/alasql AlaSQL.js - JavaScript SQL database for browser and Node.js. Handles both traditional relational tables and nested JSON data (NoSQL). Export, store, and import data from localStorage, IndexedDB, or …

高德車道級安全預警再升級 10大場景全方位守護行車安全

今日起&#xff0c;2024年高考、端午節小長假相繼到來&#xff0c;正值新一波出行高峰到來&#xff0c;高德地圖車道級安全預警功能再次升級。升級后的車道級安全預警功能覆蓋了10大安全風險較高的行車場景&#xff0c;全方位、超視距地為用戶實時探測、預警行車風險&#xff0…

成都躍享未來教育咨詢有限公司,值得信賴!

在浩渺的教育咨詢市場中&#xff0c;成都躍享未來教育咨詢有限公司以其獨特的魅力和卓越的服務質量&#xff0c;成為了行業內的璀璨明星。作為一家致力于為學生提供全方位教育咨詢服務的公司&#xff0c;成都躍享未來教育咨詢有限公司始終堅持安全可靠的原則&#xff0c;為廣大…

樹莓派4B_OpenCv學習筆記4:測試攝像頭_imread加載顯示圖像_imwrite保存圖片

今日繼續學習樹莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;簡稱RPi或RasPi&#xff09; 本人所用樹莓派4B 裝載的系統與版本如下: 版本可用命令 (lsb_release -a) 查詢: Opencv 版本是4.5.1&#xff1a; 今日對之前的測試CSI攝像頭函數進行一些理解說明&#x…

pytorch中的zero_grad()函數的含義和使用

optimizer.zero_grad() &#xff0c;用于將模型的參數梯度初始化為0。 #反向計算 loss.backward()#反向傳播計算梯度 optimizer.step()#更新參數&#xff0c;梯度被反向計算之后&#xff0c;調用函數進行所有參數更新 #在反向傳播計算時&#xff0c;梯度的計算是累加&#xff…

降噪是什么意思?視頻如何降噪?一文了解全部

在視頻制作的過程中&#xff0c;我們經常會遇到噪音問題&#xff0c;這些噪音可能來自拍攝環境、錄制設備或其他源頭。然而&#xff0c;對于初學者來說&#xff0c;降噪是什么意思&#xff0c;以及如何有效地在視頻中進行降噪可能是一些疑惑的問題。本文將深入解釋降噪的概念&a…

【算法】深入淺出爬山算法:原理、實現與應用

人不走空 &#x1f308;個人主頁&#xff1a;人不走空 &#x1f496;系列專欄&#xff1a;算法專題 ?詩詞歌賦&#xff1a;斯是陋室&#xff0c;惟吾德馨 目錄 &#x1f308;個人主頁&#xff1a;人不走空 &#x1f496;系列專欄&#xff1a;算法專題 ?詩詞歌…

echarts學習: 繪制雙y軸折線圖

前言 我們公司項目中的折線圖大都是雙y軸的&#xff0c;因為這些圖表往往需要同時展示水位和流量這兩種不同單位的數據&#xff0c;因此如何繪制雙y軸折線圖就是就是我所面臨的首要問題。 1.如何繪制雙y軸 將yAxis屬性的值設置為一個數組&#xff0c;并在數組中添加兩個axis對…

【LC刷題】DAY02:977 209 59

#【LC刷題】DAY02&#xff1a;977 209 59 文章目錄 977. 有序數組的平方 [link](https://leetcode.cn/problems/squares-of-a-sorted-array/description/)第一思路&#xff1a;直接排序優化&#xff1a;雙指針 209. 長度最小的子數組 [link](https://leetcode.cn/problems/min…

Apache Spark MLlib詳解

Apache Spark MLlib 是 Spark 的一個核心組件&#xff0c;提供了大量的機器學習算法和工具&#xff0c;用于在大數據集上進行數據分析和預測建模。MLlib 提供了廣泛的算法集&#xff0c;包括分類、回歸、聚類、協同過濾、降維、特征提取、頻繁模式挖掘和統計測試等。 主要特點…

記錄一次Linux啟動kafka后并配置了本地服務連接遠程kafka的地址后依舊連接localhost的問題

問題的原因 我是使用docker來安裝并啟動kafka 的&#xff0c;所以在啟動過程中并沒有太多需要配置的地方&#xff0c;基本都是從網上照搬照抄&#xff0c;沒動什么腦子&#xff0c;所以看著啟動起來了覺得就沒事了&#xff0c;但是運行項目的時候發現&#xff0c;我明明已經配…

第五屆上海市青少年算法競賽網絡同步賽(小學組)

第五屆上海市青少年算法競賽網絡同步賽(小學組)T1. 符號譯碼_網絡同步賽 內存限制: 256 Mb 時間限制: 1000 ms 題目描述 小愛為標點符號設計了一套編碼系統,編碼規則如下: [ 的編碼為 010 ] 的編碼為 101 < 的編碼為 00 > 編碼為 11 + 的編碼為 011 - 編碼為 100 根…

AI輔助論文:探索AI查重與AI降重技術

在科研領域&#xff0c;AI寫作工具如同新一代的科研利器&#xff0c;它們能夠極大提高文獻查閱、思路整理和表達優化的效率&#xff0c;本質上促進了科研工作的進步。AI寫作工具不僅快速獲取并整理海量信息&#xff0c;還幫助我們精確提煉中心思想&#xff0c;顯著提升論文寫作…

生成式人工智能的風險與治理——以ChatGPT為例

文 | 西南政法大學經濟法學院 馬羽男 以ChatGPT為代表的生成式人工智能在創造社會福利的同時&#xff0c;也帶來了諸多風險。因此&#xff0c;當務之急是結合我國生成式人工智能發展狀況&#xff0c;厘清其應用價值與潛在風險之間的關系&#xff0c;以便在不影響應用發展的前提…

0606 作業

#include <stdio.h> #include <string.h>typedef struct usr{char unm[21];char pwd[21]; }user;int main(int argc, const char *argv[]) {FILE* userfilefopen("./user_tible.txt","r");printf("輸入username:");user u;scanf(&qu…

人工智能在腫瘤預后預測中的最新研究進展|頂刊精析·24-06-07

小羅碎碎念 今天要分享的文獻主題&#xff0c;大家一定非常熟悉&#xff0c;因為絕大多數AI4cancer的文章都會提到它——預后預測&#xff0c;所以今天的文獻主題是——人工智能腫瘤預后預測。 在正式開始分享之前&#xff0c;我想先帶著大家梳理兩個問題。解決了以下兩個問…

Chrome 自動執行 JS 腳本 | Tampermonkey 插件

文章目錄 第 1 步:安裝插件 Tampermonkey第 2 步:固定到工具欄第 3 步:在網站上啟用 Tampermonkey第 4 步:查看效果第 5 步:調試 JS 代碼?? 背景:有個網站,每次進去都要點 3 次才能把相關頁面展開。而且,頁面經常會自己刷新,導致展開的頁面又收回去了。【這一天天的…

【Python】實現極致:克服PyInstaller打包挑戰,解決libpython3.10.so.1.0庫丟失難題

【Python】實現極致&#xff1a;克服PyInstaller打包挑戰&#xff0c;解決libpython3.10.so.1.0庫丟失難題 大家好 我是寸鐵&#x1f44a; 總結了一篇【Python】實現極致&#xff1a;克服PyInstaller打包挑戰&#xff0c;解決libpython3.10.so.1.0庫丟失難題? 喜歡的小伙伴可以…