RBAC 入門(轉載)
轉載地址:RBAC使用者許可權管理資料庫設計 https://blog.csdn.net/qiaqia609/article/details/38102091
一、RBAC 入門
1.1 基本的許可權模型
RBAC(Role-Based Access Control
)基於角色的許可權控制。通過角色來管理使用者的許可權。即使用者擁有角色,角色管理許可權。構成 使用者–角色–許可權 的授權模型。在這種模型中通常設計為一對多。
1.2 使用者組的概念
角色可以理解為一定數量的許可權的集合,許可權的載體。
當用戶的數量非常大時,要給系統每個使用者逐一授權(授角色),是件非常煩瑣的事情。這時,就需要給用戶分組
1.3 許可權概念
在應用系統中,許可權表現成什麼?對功能模組的操作,對上傳檔案的刪改,選單的訪問,甚至頁面上某個按鈕、某個圖片的可見性控制,都可屬於許可權的範疇。有些許可權設計,會把功能操作作為一類,而把檔案、選單、頁面元素等作為另一類,這樣構成使用者-角色-許可權-資源的授權模型。而在做資料表建模時,可把功能操作和資源統一管理,也就是都直接與許可權表進行關聯,這樣可能更具便捷性和易擴充套件性
請留意許可權表中有一列許可權型別
,我們根據它的取值來區分是哪一類許可權,如MENU
表示選單的訪問許可權、OPERATION
表示功能模組的操作許可權、FILE
表示檔案的修改許可權、ELEMENT
表示頁面元素的可見性控制等。
這樣設計的好處有二:
其一,不需要區分哪些是許可權操作,哪些是資源,(實際上,有時候也不好區分,如選單,把它理解為資源呢還是功能模組許可權呢?)。
其二,方便擴充套件,當系統要對新的東西進行許可權控制時,我只需要建立一個新的關聯表許可權XX關聯表
,並確定這類許可權的許可權型別字串。
這裡要注意的是,許可權表與許可權選單關聯表、許可權選單關聯表與選單表都是一對一的關係。(檔案、頁面許可權點、功能操作等同理)。也就是每新增一個選單,就得同時往這三個表中各插入一條記錄。這樣,可以不需要許可權選單關聯表,讓許可權表與選單表直接關聯,此時,須在許可權表中新增一列用來儲存選單的ID,許可權表通過許可權型別
1.4 小結
到這裡,RBAC許可權模型的擴充套件模型的完整設計圖如下:
1.5 後記
隨著系統的日益龐大,為了方便管理,可引入角色組對角色進行分類管理,跟使用者組不同,角色組不參與授權。例如:某電網系統的許可權管理模組中,角色就是掛在區局下,而區局在這裡可當作角色組,它不參於許可權分配。另外,為方便上面各主表自身的管理與查詢,可採用樹型結構,如選單樹、功能樹等,當然這些可不需要參於許可權分配。
其他
基於RBAC的許可權管理,只是功能許可權管理,許可權系統中還有資料許可權。