### **以角色為主的權限控管(Role-Based Access Control,簡稱RBAC)** `以角色為主的權限控管的一個好處是可以有效解決擴大規模(Scalability)的問題`。在一般的企業中,角色的個數通常會遠小於使用者的個數,即通常會有許多個使用者使用同一個角色,例如:在銀行中,擁有櫃員這個角色的使用者通常不會只有一個,而且可能數以百計。因此,以角色為中介者來分配權限,在管理上要比將權限直接分配給使用者要簡單許多。另一個主要好處是角色也兼具有組織層面上的意義,即角色通常可以對應到組織上的職位或職責,因此,可以用之來幫助擬定資訊安全政策及其實作。另外,如果一個人員調職或離職,只需重新分配角色或取消其角色的擁有即可,在管理方面也方便許多。 --- ### 1. 定義 RBAC模型(Role-Based Access Control:基於角色的訪問控制),認爲權限授權的過程可以抽象地概括爲:Who是否可以對What進行How的訪問操作,並對這個邏輯表達式進行判斷是否爲True的求解過程,也即是將權限問題轉換爲What、How的問題,Who、What、How構成了訪問權 ### 2. 角色模型 #### **RBAC0**:權限賦予角色,角色賦予帳號,帳號、角色、權限之間是多對多的關係。 ![](https://i.imgur.com/w17Ardp.png) **RBAC1(角色分級模型)**:RBAC1建立在RBAC0基礎之上,在角色中引入了繼承的概念。簡單理解就是,給角色可以分成幾個等級,每個等級權限不同,從而實現更細粒度的權限管理。 例如:一個公司的銷售經理可能是分幾個等級的,譬如除了銷售經理,還有銷售副經理,而銷售副經理只有銷售經理的部分權限。這時候,我們就可以採用RBAC1的分級模型,把銷售經理這個角色分成多個等級,給銷售副經理賦予較低的等級即可。 ![](https://i.imgur.com/bkNLmbu.jpg) #### **RBAC2(角色限制模型)**:引入了角色間的限制條件,共有4種限制條件。RBAC2 是在RBAC0 權限模型的基礎上,在用戶和角色以及會話和角色之間分別加入了約束的概念(**職責分離**),職責分離指的是同一個人不能擁有兩種特定的權限(例如財務部的納入和支出,或者運動員和裁判員等等)。 ![](https://i.imgur.com/Y6blSIS.jpg) (1) 角色互斥:同一個用戶在兩個互斥角色中只能選擇一個(也會存在一個用戶擁有多個角色情況,但是需要通過切換用戶角色來實現對不同業務操作) (2) 基數限制:一個用戶擁有的角色是有限的,一個角色擁有的許可也是有限的 (3) 先決條件限制:用戶想要獲得高級角色,首先必須擁有低級角色 #### **RBAC3(統一模型)**:RBAC3是RBAC1和RBAC2的合集,所以RBAC3既有角色分層,也包括可以增加各種限制。 ![](https://i.imgur.com/bbjytrN.jpg) --- 參考資料: * [角色階層與權限繼承](https://www.gss.com.tw/eis/60-eis47/304-2019-03-14-06-35-14) * [權限管理系統設計](https://ppfocus.com/0/edd90f3ba.html) * [RBAC模型](https://www.v2tn.com/content/1634738414956378)