目前,使用最普遍的許可權管理模型正是rbac(role-based access control)模型,這篇文章也主要是介紹基於rbac的許可權管理系統,我會從rbac是什麼、如何設計rbac兩部分來介紹。
rbac模型(role-based access control:基於角色的訪問控制)模型是20世紀90年代研究出來的一種新模型,但其實在20世紀70年代的多使用者計算時期,這種思想就已經被提出來,直到20世紀90年代中後期,rbac才在研究團體中得到一些重視,並先後提出了許多態別的rbac模型。其中以美國george mason大學資訊保安技術實驗室(list)提出的rbac96模型最具有代表,並得到了普遍的公認。
rbac認為許可權授權的過程可以抽象地概括為:who是否可以對what進行how的訪問操作,並對這個邏輯表示式進行判斷是否為true的求解過程,也即是將許可權問題轉換為what、how的問題,who、what、how構成了訪問許可權三元組,具體的理論可以參考rbac96的**,這裡我們就不做詳細的展開介紹,大家有個印象即可。
在rbac模型裡面,有3個基礎組成部分,分別是:使用者、角色和許可權。
rbac通過定義角色的許可權,並對使用者授予某個角色從而來控制使用者的許可權,實現了使用者和許可權的邏輯分離(區別於acl模型),極大地方便了許可權的管理
下面在講解之前,先介紹一些名詞:
它們之間的關係如下圖所示:
例如下圖,管理員和普通使用者被授予不同的許可權,普通使用者只能去修改和檢視個人資訊,而不能建立建立使用者和凍結使用者,而管理員由於被授 予所有許可權,所以可以做所有操作。
例如下圖,管理員和普通使用者被授予不同的許可權,普通使用者只能去修改和檢視個人資訊,而不能建立建立使用者和凍結使用者,而管理員由於被授予所有許可權,所以可以做所有操作。
rbac支援三個著名的安全原則:最小許可權原則、責任分離原則和資料抽象原則
(1)優點:
(2)缺點:
(1)rbac0
rbac0,是最簡單、最原始的實現方式,也是其他rbac模型的基礎。
在該模型中,使用者和角色之間可以是多對多的關係,即乙個使用者在不同場景下是可以有不同的角色,例如:專案經理也可能是組長也可能是架構師。同時每個角色都至少有乙個許可權。這種模型下,使用者和許可權被分離獨立開來,使得許可權的授權認證更加靈活。
(2)rbac1
基於rbac0模型,引入了角色間的繼承關係,即角色上有了上下級的區別。
角色間的繼承關係可分為一般繼承關係和受限繼承關係。一般繼承關係僅要求角色繼承關係是乙個絕對偏序關係,允許角色間的多繼承。而受限繼承關係則進一步要求角色繼承關係是乙個樹結構,實現角色間的單繼承。
這種模型適合於角色之間層次分明,可以給角色分組分層。
(3)rbac2
rbac2,基於rbac0模型的基礎上,進行了角色的訪問控制。
rbac2中的乙個基本限制是互斥角色的限制,互斥角色是指各自許可權可以互相制約的兩個角色。對於這類角色乙個使用者在某一次活動中只能被分配其中的乙個角色,不能同時獲得兩個角色的使用權。
該模型有以下幾種約束:
這一節,我會介紹設計基於rbac模型的許可權系統的功能模組組成、流程以及資料庫的設計。
系統分析與設計
軟體工程是一門研究用工程化方法構建和維護有效的 實用的和高質量的軟體的學科。它涉及程式語言 資料庫 軟體開發工具 系統平台 標準 設計模式等方面。軟體危機是指落後的軟體生產方式無法滿足迅速增長的計算機軟體需求,從而導致軟體開發與維護過程中出現一系列嚴重問題的現象。cocomo,英文全稱為 const...
系統分析與設計
位置 用簡短的語言給出對分析 設計的理解 用一句話描述物件導向的分析與設計的優勢 物件導向的分析與設計的優勢是按照物件的觀點考慮問題域和邏輯解決方案,通過分析現實來發現並描述問題域中的物件。簡述uml 統一建模語言 的作用。考試考哪些圖 uml是用來描述 構造和文件化系統製品的視覺化語言,它的作用是...
系統分析與設計
概述 在充分理解系統分析與設計的工作內容的基礎上,大致了解系統分析與設計的過程。以及各個過程所使用的技術和工具。什麼是分析和設計?分析 強調的是對問題和需求的調查研究,而不是解決方案。解決 要做什麼 的問題。目標做正確的事。設計 強調的是滿足需求的概念上的解決方案,而不是實現。解決 該如何做 的問題...