首頁 > 軟體

基於角色的許可權控制模型RBAC圖文教學

2022-03-16 19:00:30

我們開發一個系統,必然面臨許可權控制的問題,即不同的使用者具有不同的存取、操作、資料許可權。形成理論的許可權控制模型有:自主存取控制(DAC: Discretionary Access Control)、強制存取控制(MAC: Mandatory Access Control)、基於屬性的許可權驗證(ABAC: Attribute-Based Access Control)等。最常被開發者使用也是相對易用、通用的就是RBAC許可權模型(Role-Based Access Control),本文就將向大家介紹該許可權模型。

一、RBAC許可權模型簡介

RBAC許可權模型(Role-Based Access Control)即:基於角色的許可權控制。模型中有幾個關鍵的術語:

  • 使用者:系統介面及存取的操作者
  • 許可權:能夠存取某介面或者做某操作的授權資格
  • 角色:具有一類相同操作許可權的使用者的總稱

RBAC許可權模型核心授權邏輯如下:

  • 某使用者是什麼角色?
  • 某角色具有什麼許可權?
  • 通過角色的許可權推導使用者的許可權

二、RBAC的演化程序

2.1.使用者與許可權直接關聯

想到許可權控制,人們最先想到的一定是使用者與許可權直接關聯的模式,簡單地說就是:某個使用者具有某些許可權。如圖:

  • 張三具有建立使用者和刪除使用者的許可權,所以他可能系統維護人員
  • 李四具有產品記錄管理和銷售記錄管理許可權,所以他可能是一個業務銷售人員

這種模型能夠清晰的表達使用者與許可權之間的關係,足夠簡單。但同時也存在問題:

現在使用者是張三、李四,以後隨著人員增加,每一個使用者都需要重新授權

或者張三、李四離職,需要針對每一個使用者進行多種許可權的回收

2.2.一個使用者擁有一個角色

在實際的團體業務中,都可以將使用者分類。比如對於薪水管理系統,通常按照級別分類:經理、高階工程師、中級工程師、初級工程師。也就是按照一定的角色分類,通常具有同一角色的使用者具有相同的許可權。這樣改變之後,就可以將針對使用者賦權轉換為針對角色賦權。

  • 一個使用者有一個角色
  • 一個角色有多個操作(選單)許可權
  • 一個操作許可權可以屬於多個角色

我們可以用下圖中的資料庫設計模型,描述這樣的關係。

2.3 一個使用者一個或多個角色

但是在實際的應用系統中,一個使用者一個角色遠遠滿足不了需求。如果我們希望一個使用者既擔任銷售角色、又暫時擔任副總角色。該怎麼做呢?為了增加系統設計的適用性,我們通常設計:

  • 一個使用者有一個或多個角色
  • 一個角色包含多個使用者
  • 一個角色有多種許可權
  • 一個許可權屬於多個角色

我們可以用下圖中的資料庫設計模型,描述這樣的關係。

三、頁面存取許可權與操作許可權

頁面存取許可權: 所有系統都是由一個個的頁面組成,頁面再組成模組,使用者是否能看到這個頁面的選單、是否能進入這個頁面就稱為頁面存取許可權。

操作許可權: 使用者在作業系統中的任何動作、互動都需要有操作許可權,如增刪改查等。比如:某個按鈕,某個超連結使用者是否可以點選,是否應該看見的許可權。

為了適應這種需求,我們可以把頁面資源(選單)和操作資源(按鈕)分表存放,如上圖。也可以把二者放到一個表裡面存放,用一個欄位進行標誌區分。

四、資料許可權

資料許可權比較好理解,就是某個使用者能夠存取和操作哪些資料。

通常來說,資料許可權由使用者所屬的組織來確定。比如:生產一部只能看自己部門的生產資料,生產二部只能看自己部門的生產資料;銷售部門只能看銷售資料,不能看財務部門的資料。而公司的總經理可以看所有的資料。

在實際的業務系統中,資料許可權往往更加複雜。非常有可能銷售部門可以看生產部門的資料,以確定銷售策略、安排計劃等。

所以為了面對複雜的需求,資料許可權的控制通常是由程式設計師書寫個性化的SQL來限制資料範圍的,而不是交給許可權模型或者Spring Security或shiro來控制。當然也可以從許可權模型或者許可權框架的角度去解決這個問題,但適用性有限。

以上就是基於角色的許可權控制模型RBAC圖文教學的詳細內容,更多關於角色的許可權控制模型RBAC的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com