理解什麼是Web後臺的RBAC模型

通常的Web項目,都有分管理員和用戶,其中就須要有不一樣的權限。web

權限就是對項目資源的控制,對web應用來講,也就是對url的控制,你這個使用者能看到多少頁面,操做多少功能。數據庫

不一樣Web項目系統關於權限的應用複雜程序不同,如今比較流行的權限模型,基本上都是以RBAC模型爲基礎進行擴展的。url

 


1、spa

RBAC,Role-Based Access Control,基於角色的訪問控制。prototype

能夠理解爲:Who對What進行How的操做,其中xml

who——是角色的擁有者(如:UserRole對象

what——是資源或對象(ResourceClass)blog

how——是角色,不一樣的角色擁有不一樣的資源和權限繼承

 


2、資源

RBAC實際上是一種分析模型,主要分爲:

- 基本模型RBAC0(Core RBAC)、

- 角色分層模型RBAC1(Hierarchal RBAC)、

- 角色限制模型RBAC2(Constraint RBAC)、

- 統一模型RBAC3(Combines RBAC)

 

RBAC0,它是RBAC0的核心,RBAC一、RBAC二、RBAC3都是前後在RBAC0上的擴展。

RBAC0定義了能構成RBAC控制系統的最小的元素集合,RBAC0由四部分構成:

    a、用戶(User

    b、角色(Role

    c、會話(Session

    d、許可(Pemission

其中許可Permission又包括「操做」和「控制對象」。其中許可Permission被賦予角色Role,而不是用戶User,

當一個角色Role被指定給一個用戶User時,此用戶User就擁有了該角色Role所包含的許可Permission。

會話Session是動態的概念,用戶必須經過會話才能夠設置角色,是用戶與激活的角色之間的映射關係。

 

 

 

RBAC1,它是RBAC角色的分層hierarchy模型,RBAC1創建在RBAC0基礎之上,在角色中引入了繼承prototype的概念,有了繼承那麼角色Role就有了上下級或者等級關係

 

 

 

RBAC2,它是RBAC的約束Constraint模型,RBAC2也是創建的RBAC0的基礎之上的,在RBAC0基礎上加入了約束的概念,

主要引入了靜態職責分離SSD(Static Separation of Duty)和動態職責分離DSD(Dynamic Separation of Duty)

靜態職責分離SSD:

是用戶和角色的指派階段加入的,主要是對用戶和角色有以下約束:

a、互斥角色:同一個用戶在兩個互斥角色中只能選擇一個

b、基數約束:一個用戶擁有的角色是有限的,一個角色擁有的許可也是有限的

c、先決條件約束:用戶想要得到高級角色,首先必須擁有低級角色

動態職責分離DSD:

是會話和角色之間的約束,能夠動態的約束用戶擁有的角色,如一個用戶能夠擁有兩個角色,可是運行時只能激活一個角色。

 

 

 

RBAC3,它是RBAC1RBAC2合集,是既有角色分層又有約束的一種模型

 


基本上,普通的web項目應用,

只須要在數據庫新建一張role表、user表、resource表、role_resource_rel表、role_user_rel表便可表示DBRA模型

相關文章
相關標籤/搜索