RBAC權限模型概述

  • 權限對web應用來講就是對url的控制,還有頁面的展現,還有。。。
1.傳統權限模型

簡單的權限控制模型,如用戶集合和權限集合中的元素多對多對應。web

2. 引入==角色==概念:RBAC0

但如上模型的缺點是,若是擁有相同權限某類人——好比同一個部門的人,須要增長權限時,每一個人都須要在本身對應的權限集合中添加一個元素,這樣操做繁瑣而且容易出錯,可行的作法是從權限集合中抽象抽一個子集做爲角色,好比x部門成員,將x部門成員與角色對應便可,這樣x部門所有成員的權限便可經過角色來控制。圖示以下:框架

3. 引入用戶組

同理,除了引入角色的概念來簡化賦權外,用戶集合也能夠抽象出相似於 權限集合/角色 的用戶組,將角色與用戶組關聯來進行賦權,用戶擁有權限的集合是用戶關聯的角色和用戶所在用戶組關聯的角色的並集。圖示以下(**注意括號中角色與權限是關聯的):
url

4. 權限設計:將權限與資源關聯

資源只有一種,即數據,可是具體的應用系統中須要更細緻的分類來方便權限與資源的關聯。設計

咱們對數據的操做有增刪改查四種。權限類型也能夠按照這四種操做作幾個基本的劃分。好比:3d

  1. 增刪改——只有管理員——擁有此三種權限的人,對應的頁面纔可以渲染出相應的建立和編輯的按鈕;
  2. 查——不一樣權限的人渲染頁面數據不一樣,好比管理員能夠渲染記錄的更多列來查看更詳細的數據。

以上都是基於頁面渲染來講的。如今公司將權限基本分爲三類:頁面模板、接口和數據模板。個人理解是這種方法和增刪改查的分別是橫切和縱切,相交又包含。一種權限分類圖示以下:blog

  • 能夠根據「權限類型」的取值來區分是哪一類權限,如「MENU」表示菜單的訪問權限、「OPERATION」表示功能模塊的操做權限、「FILE」表示文件的修改權限、「ELEMENT」表示頁面元素的可見性控制等。繼承

  • 注意沒添加一個頁面元素或者文件表,在「文件表」、「權限文件關聯表」和「權限表」中會相應的添加一條記錄。接口

綜上,成型的RBAC模型以下:
資源

5.角色分層模型RBAC1(Hierarchal RBAC)

以上,三、4小節能夠看做是實踐拓展,RBAC模型分爲RBAC0/1/2/3三種,RBAC0是RBAC1和RBAC2的基礎,RBAC3是RBAC1和RBAC2的合併。權限控制

RBAC1將角色作了分層,引入了等級的概念,相同角色的低等級能夠繼承高等級的權限。圖示以下:

6.角色限制模型RBAC2(Constraint RBAC)

RBAC2是在RBAC0的基礎上加上了約束用戶可以擁有的角色的思想,主要引入了

  • 靜態職責分離SSD(Static Separation of Duty):在用戶和角色的指派階段加入的,主要約束有互斥角色、基數約束和先決條件約束等;
  • 動態職責分離DSD(Dynamic Separation of Duty):是會話和角色之間的約束,能夠動態的約束用戶擁有的角色。會話是動態的概念,用戶必須經過會話才能夠設置角色,是用戶與激活的角色之間的映射關係

二者對比圖示以下:

7.RBAC3是RBAC1與RBAC2的合併,既有角色分級,又有用戶賦予角色是的約束。

綜上,一個完善的權限框架有:

  1. 用戶-角色-權限(RBAC0);
  2. 用戶分組;
  3. 角色分級且可繼承(RBAC1);
  4. 用戶賦予角色時的限制(RBAC2)
  5. 完善的權限設計;

上述將角色賦予用戶時,要靈活的使用用戶的信息,使用表達式來進行靈活的綁定,好比性別爲男的用戶自動賦權能夠上男廁所。

相關文章
相關標籤/搜索