專案 RBAC模型與許可權設計

2021-09-29 10:46:00 字數 1904 閱讀 4796

一.rbac模型

什麼是rbac

rbac(全稱:role-based access control)基於角色的許可權訪問控制,作為傳統訪問控制(自主訪問,強制訪問)的有前景的代替受到廣泛的關注。在rbac中,許可權與角色相關聯,使用者通過成為適當角色的成員而得到這些角色的許可權。這就極大地簡化了許可權的管理。在乙個組織中,角色是為了完成各種工作而創造,使用者則依據它的責任和資格來被指派相應的角色,使用者可以很容易地從乙個角色被指派到另乙個角色。角色可依新的需求和系統的合併而賦予新的許可權,而許可權也可根據需要而從某角色中**。角色與角色的關係可以建立起來以囊括更廣泛的客觀情況。

訪問控制是針對越權使用資源的防禦措施,目的是為了限制訪問主體(如使用者等) 對訪問客體(如資料庫資源等)的訪問許可權。企業環境中的訪問控制策略大部分都採用基於角色的訪問控制(rbac)模型,是目前公認的解決大型企業的統一資源訪問控制的有效方法

基於rbac的設計思路

基於角色的訪問控制基本原理是在使用者和訪問許可權之間加入角色這一層,實現使用者和許可權的分離,使用者只有通過啟用角色才能獲得訪問許可權。通過角色對許可權分組,大大簡化了使用者許可權分配表,間接地實現了對使用者的分組,提高了許可權的分配效率。且加入角色層後,訪問控制機制更接近真實世界中的職業分配,便於許可權管理。

在rbac模型中,角色是系統根據管理中相對穩定的職權和責任來劃分,每種角色可以完成一定的職能。

使用者通過飾演不同的角色獲得角色所擁有的許可權,一旦某個使用者成為某角色的成員,則此使用者可以完成該角色所具有的職能。

通過將許可權指定給角色而不是使用者,在許可權分派上提供了極大的靈活性和極細的許可權指定粒度。

表結構分析

乙個使用者擁有若干角色,每乙個角色擁有若干許可權。這樣,就構造成「使用者-角色-許可權」的授權模型。

在這種模型中,使用者與角色之間,角色與許可權之間,一般者是多對多的關係。

二. 有些專案中的許可權設計

需求分析

在應用系統中,許可權是以什麼樣的形式展現出來的?對選單的訪問,頁面上按鈕的可見性,後端介面的控制,都要進行充分考慮

* 前端

前端選單:根據是否有請求選單許可權進行動態載入

按鈕:根據是否具有此許可權點進行顯示/隱藏的控制

* 後端

前端傳送請求到後端介面,有必要對介面的訪問進行許可權的驗證

許可權設計

針對這樣的需求,在有些設計中可以將選單,按鈕,後端api請求等作為資源,這樣就構成了基於rbac的另一種授權模型(使用者-角色-許可權-資源)。

針對此種許可權模型,其中許可權究竟是屬於選單,按鈕,還是api的許可權呢?那就需要在設計資料庫許可權表的時候新增型別加以區分(如許可權型別 1為選單 2為功能 3為api)。

表結構分析

這裡要注意的是,許可權表與許可權選單表、頁面元素表與api介面表都是一對一的關係

與傳統的rbac模型對比不難發現此種設計的好處:

* 不需要區分哪些是操作,哪些是資源

* 方便擴充套件,當系統要對新的東西進行許可權控制時,我只需要建立乙個新的資源表,並確定這類許可權的許可權型別標識即可。

RBAC許可權模型 專案實戰

一 前言 許可權一句話來理解就是對資源的控制,對web應用來說就是對url的控制,關於許可權可以毫不客氣的說幾乎每個系統都會包含,只不過不同系統關於許可權的應用複雜程式不一樣而已,現在我們在用的許可權模型基本上都是以rbac為基礎進行擴充套件的,我們今天就將rbac許可權模型進行下介紹。二 rbac...

saas export專案 RBAC許可權模型

1 如何設計使用者許可權 普通的使用者許可權設計 三個表搞定 使用者表,許可權表,使用者許可權表 1 五表之間的關係 角色與許可權 多對多。產生一張角色許可權中間表 使用者與角色 多對多。產生一張使用者角色中間表 mysql表結構 角色的本質就是乙個集合,裡面存放在著許可權的名稱。給使用者指定角色,...

RBAC許可權模型 專案實戰

許可權一句話來理解就是對資源的控制,對web應用來說就是對url的控制,關於許可權可以毫不客氣的說幾乎每個系統都會包含,只不過不同系統關於許可權的應用複雜程式不一樣而已,現在我們在用的許可權模型基本上都是以rbac為基礎進行擴充套件的,我們今天就將rbac許可權模型進行下介紹。rbac是role b...