阿Han

文字是留下記錄的一種媒介,將知識吸收轉化後輸出成文字進行保存。 ☕️ https://liker.land/willhanchen/civic

Authorization策略 - RBAC模型介紹

簡單的介紹認證與授權世界中的Authorization模型

前一篇的「Authentication、Authorization,傻傻分不清楚?」主要在介紹認證與授權的差異之處,而本章節著重於授權這部分,也使用了經典的RBAC模型進行說明。

概述

RBAC

RBAC模型(Role-Based Access Control:基於角色的訪問控制), 認為可以抽象的表示:

Who是否可以對What進行How的訪問操作

並針對這樣的邏輯進行求解的過程。

當然這樣的概念不僅限於軟體世界,套用到真實世界也是非常適合的,就以公司組織來說,RBAC的公式就是非常貼近生活化的例子了。

誰可以對財務報表進行修改?

誰可以對公司規章進行新增?

...

🔔還沒成為Potato會員的朋友點這裡加入哦,撰寫文章還能挖礦打造被動收入 🔔

基本模型的組成元素: RBAC0

根據權限的複雜程度, 又區分為RBAC0RBAC1RBAC2RBAC3, 但是不論如何都脫離不了以下的三個元素(用戶、角色、權限)來進行延伸, 也就是基礎的RBAC0

  • 用戶(User): 每個使用者可以被賦予不同角色。
  • 角色(Role): 每個角色具有不同的存取權限。
  • 許可權(Permission): 訪問許可權。

實際案例

假設我們有管理者跟一般使用者, 分別操作權限有所不同, 如下圖,管理者具有所有的操作權限, 而一般使用者只有查看個人訊息、修改個人用戶名稱的權限。

角色分層模型: RBAC1

主要在角色中引入繼承的概念, 也就是替角色分組並區分等級, 每個等級所對應的權限也有所不同。

角色限制模型: RBAC2

RBAC2是基於RBAC0擴展的, 增加了一些限制, 分別為:

  • 靜態職責分離(SSD): 約束於用戶與角色之間。
  1. 同一使用者不能擁有多個會發生權責衝突的角色。
  2. 互斥角色: 同一個用戶不能授予互斥關係的角色, 例如: 同一個員工不能同時為會計及研發。
  3. 基數約束: 一個用戶所被賦予的角色是有限的。
  4. 先決條件約束: 用戶想要擁有更高權限之前必須先具有前一級的權限。
  • 動態職責分離(DSD):
  1. 同一使用者可以擁有多個會發生權責衝突的角色。
  2. 實際執行時只能選擇其中一個角色來擔任。

RBAC 3

RBAC3 = RBAC1 + RBAC2,因此除了具備角色分層的概念,亦能增加限制,適用於非常大型的複雜系統,一般中小型系統較少使用。

🔔還沒成為Potato會員的朋友點這裡加入哦,撰寫文章還能挖礦打造被動收入 🔔

CC BY-NC-ND 2.0

Like my work?
Don't forget to support or like, so I know you are with me..

Authentication、Authorization,傻傻分不清楚?

1

Want to read more ?

Login with one click and join the most diverse creator community.