1簡介編輯
RBAC支持三個著名的安全原則:最小權限原則,責任分離原則和數據抽象原則。
(1)最小權限原則之因此被RBAC所支持,是由於RBAC能夠將其角色配置成其完成任務所須要的最小的權限集。
(2)責任分離原則能夠經過調用相互獨立互斥的角色來共同完成敏感的任務而體現,好比要求一個計賬員和財務管理員共參與同一過賬。
(3)數據抽象能夠經過權限的抽象來體現,如財務操做用借款、存款等抽象權限,而不用操做系統提供的典型的讀、寫、執行權限。然而這些原則必須經過RBAC各部件的詳細配置才能得以體現。
RBAC有許多部件(BUCU),這使得RBAC的管理多面化。尤爲是,咱們要分割這些問題來討論:用戶與角色的指派;角色與權限的指派;爲定義角色的繼承進行的角色與角色的指派。這些活動都要求把用戶和權限聯繫起來。然而在不少狀況下它們最好由不一樣的管理員或管理角色來作。對角色指派權限是典型的應用管理者的職責。銀行應用中,把借款、存款操做權限指派給出納角色,把批准貸款操做權限指派給經理角色。而將具體人員指派給相應的出納角色和管理者角色是人事管理的範疇。角色與角色的指派包含用戶與角色的指派、角色與權限的指派的一些特色。更通常來講,角色與角色的關係體現了更普遍的策略。
2基本概念編輯
RBAC認爲權限受權其實是Who、What、How的問題。在RBAC模型中,who、what、how構成了訪問權限三元組,也就是「Who對What(Which)進行How的操做」。
Who:權限的擁用者或主體(如Principal、User、Group、Role、Actor等等)
What:權限針對的對象或資源(Resource、Class)。
How:具體的權限(Privilege,正向受權與負向受權)。
Operator:操做。代表對What的How操做。也就是Privilege+Resource
Role:角色,必定數量的權限的集合。權限分配的單位與載體,目的是隔離User與Privilege的邏輯關係.
Group:用戶組,權限分配的單位與載體。權限不考慮分配給特定的用戶而給組。組能夠包括組(以實現權限的繼承),也能夠包含用戶,組內用戶繼承組的權限。User與Group是多對多的關係。Group能夠層次化,以知足不一樣層級權限控制的要求。
RBAC的關注點在於Role和User, Permission的關係。稱爲User assignment(UA)和Permission assignment(PA).關係的左右兩邊都是Many-to-Many關係。就是user能夠有多個role,role能夠包括多個user。
凡是用過RDBMS都知道,n:m 的關係須要一箇中間表來保存兩個表的關係。這UA和PA就至關於中間表。事實上,整個RBAC都是基於關係模型。
Session在RBAC中是比較隱晦的一個元素。標準上說:每一個Session是一個映射,一個用戶到多個role的映射。當一個用戶激活他全部角色的一個子集的時候,創建一個session。每一個Session和單個的user關聯,而且每一個User能夠關聯到一或多個Session.
在RBAC系統中,User其實是在扮演角色(Role),能夠用Actor來取代User,這個想法來自於Business Modeling With UML一書Actor-Role模式。考慮到多人能夠有相同權限,RBAC引入了Group的概念。Group一樣也看做是Actor。而User的概念就具象到一我的。
這裏的Group和GBAC(Group-Based Access Control)中的Group(組)不一樣。GBAC多用於操做系統中。其中的Group直接和權限相關聯,實際上RBAC也借鑑了一些GBAC的概念。
Group和User都和組織機構有關,但不是組織機構。兩者在概念上是不一樣的。組織機構是物理存在的公司結構的抽象模型,包括部門,人,職位等等,而權限模型是對抽象概念描述。組織結構通常用Martin fowler的Party或責任模式來建模。
Party模式中的Person和User的關係,是每一個Person能夠對應到一個User,但可能不是全部的User都有對應的Person。Party中的部門Department或組織Organization,均可以對應到Group。反之Group未必對應一個實際的機構。例如,能夠有副經理這個Group,這是多人有相同職責。
引入Group這個概念,除了用來解決多人相同角色問題外,還用以解決組織機構的另外一種受權問題:例如,A部門的新聞我但願全部的A部門的人都能看。有了這樣一個A部門對應的Group,就可直接受權給這個Group。[1]
3模型編輯
RBAC96模型
一、基本模型RBAC0模型
定義:RBAC0模型由如下描述肯定:
U、R、P、S分別表示用戶集合、角色集合、許可權集合和會話集合。
PA P×R表示許可權與角色之間多對多的指派關係。
UA U×R表示用戶與角色之間多對多的指派關係。
用戶:S→U每一個會話si到單個用戶user(si)的映射函數(常量表明會話的聲明週期)。
角色:S→2每一個會話si到角色子集roles(si) {r|user(si, r')∈UA}(能隨時間改變)的映射函數,會話si有許可權Ur∈roles(si){p|(p,r')∈PA}。
在使用RBAC0模型時,應該要求每一個許可權和每一個用戶至少應該被分配給一個角色。兩個角色被分配的許可權徹底同樣是可能的,但還是兩個徹底獨立的角色,用戶也有相似狀況。角色能夠適當的被看作是一種語義結構,是訪問控制策略形式化的基礎。
RBAC0把許可權處理未非解釋符號,由於其精確含義只能由實現肯定且與系統有關。RBAC0中的許可權只能應用於數據和資源類客體,但不能應用於模型自己的組件。修改集合U、R、P和關係PA和UA的權限稱爲管理權限,後面將介紹RBAC的管理模型。所以,在RBAC0中假定只有安全管理員才能修改這些組件。
會話是由單個用戶控制的,在模型中,用戶能夠建立會話,並有選擇的激活用戶角色的某些子集。在一個會話中的角色的激活是由用戶來決斷的,會話的終止也是由用戶初始化的。RBAC0不容許由一個會話去建立另外一個會話,會話只能由用戶建立。
二、角色分級模型RBAC1
定義:RBAC1由如下內容肯定
U、R、P、S分別表示用戶集合、角色集合、許可權集合和會話集合。
PA P×R表示許可權與角色之間多對多的指派關係。
UA U×R表示用戶與角色之間多對多的指派關係。
RH R×R是對R的偏序關係,稱爲角色等級或角色支配關係,也可用≥符號表示。
用戶:S→U每一個會話si到單個用戶user(si)的映射函數(常量表明會話的聲明週期)。
角色:S→2每一個會話si到角色子集roles(si) {r|(r'≥r)[user(si,r')∈UA]}(能隨時間改變)的映射函數,會話si有許可權Ur∈roles(si){p|(r''≤r)[(p,r'')∈PA]}。
3、
限制模型RBAC2
RBAC2模型是在RBAC0模型增長限制後造成的,它與RBAC1並不兼容。RBAC2定義以下:
定義:除了在RBAC0中增長了一些限制因素外,RBAC2未加改變的來自於RBAC0,這些限制是用於肯定RBAC0中各個組件的值是不是可接受的,只有那些可接受的值纔是容許的。
RBAC2中引入的限制能夠施加到RBAC0模型中的全部關係和組件上。RBAC2中的一個基本限制時互斥角色的限制,互斥角色是指各自權限尅一互相制約的兩個角色。對於這類角色一個用戶在某一次活動中只能被分配其中的一個角色,不能同時得到兩個角色的使用權。
例如,在審計活動中,一個角色不能同時被指派給會計角色和審計員角色。又如,在公司中,經理和副經理的角色也是互斥的,合同或支票只能由經理簽字,不能由副經理簽字。在爲公司創建的RBAC2模型中,一個用戶不能同時兼得經理和副經理兩個角色。模型彙總的互斥限制能夠支持權責分離原則的實現。
更通常化而言,互斥限制能夠控制在不一樣的角色組合中用戶的成員關係是不是可接受的。例如,一個用戶能夠既是項目A的程序員,也能夠是項目B的測試員和項目C的驗收員,但他不能同時成爲同一個項目中的這3個角色。RBAC2模型能夠對這種狀況進行限制。
另外一個用戶指派限制的例子是一個角色限制其最大成員數,這被稱爲角色的基數限制。例如,一個單位的最高領導只能爲1人,中層幹部的數量也是有限的,一旦分配給這些角色的用戶數超過了角色基數的限制,就再也不接受新配給的用戶了。
限制角色的最小基數實現起來有些困難。例如,若是規定佔用某個角色的最小用戶數,問題是系統如何在任什麼時候刻都能知道這些佔用者中的某我的沒有消失,若是消失的話,系統又應該如何去作。
在爲用戶指派某個角色A時,在有的狀況下要求該用戶必須是角色B的一個成員,B角色成爲角色A的先決角色。先決角色(PrerequisiteRoles)的概念來自於能力和適應性。對先決絕對的限制成爲先決限制。一個通俗的例子是,一個數學副教授應該從數學講師中提拔,講師是任副教授的先決角色。但在實際系統中,不兼容角色之間的先決限制的狀況也會發生。
在圖ap08-03中,能夠限制只有本項目的成員纔有資格擔任程序員的角色,一般在一個系統中,先決角色比新指派的角色的級別要低一些。但有的狀況下,卻要求只有當用戶不是某個特殊角色時,才能擔任另外一個角色A。如,須要執行迴避策略時須要這樣作,例如,本課題組成員不該當是本項目成果鑑定委員會的成員。這類限制也能夠推廣到許可權方面。
因爲用戶與角色的做用會與會話聯繫在一塊兒,所以對會話也能夠施加限制。例如,能夠容許一個用戶被指派給兩個角色,但不容許在同一時間內把該用戶在兩個角色中都激活。另外,還能夠限制一個用戶在同一時間內能夠激活的會話的數量,相應的,對該用戶所激活的會話中所分配許可權的數量也能夠施加限制。
前面提到的繼承概念也能夠視爲一種限制。被分配給低級別角色的權限,也必須分配給該角色的全部上級角色。或等價的,一個指派給較高級別的角色的用戶必須指派給該角色的全部下級角色。所以從某種角度上講,RBAC1模型是冗餘的,它被包含在RBAC2中。但RBAC1模型比較簡潔,用繼承代替限制可以使概念更清晰。
實現時能夠用函數來實現限制,當爲用戶指定角色或爲角色分配權限時就調用這些函數進行檢查,根據函數返回的結果決定分配是否知足限制的要求,一般只對那些可被有效檢查和那些慣例性的一些簡單限制給與實現,由於這些限制能夠保持較長的時間。
模型中的限制機制的有效性創建在每一個用戶只有惟一標識符的基礎上,若是一個實際系統支持用戶擁有多標識符,限制將會失效。一樣,若是同一個操做能夠有兩個以上的許可權來比準,那麼,RBAC系統也沒法實施增強的基本限制和責任分離和限制。所以要求用戶與其標識符,許可與對應的操做之間一一對應。
四、統一模型RBAC3
RBAC3把RBAC1和RBAC2組合在一塊兒,提供角色的分級和繼承的能力。但把這兩種概念組合在一塊兒也引發一些新問題。
限制也能夠應用於角色等級自己,因爲角色間的等級關係知足偏序關係,這種限制對模型而言是本質性的,可能會影響這種偏序關係。例如,附加的限制可能會限制一個給定角色的應有的下級角色的數量。
兩個或多個角色由可能被限制成沒有公共的上級角色或下級角色。這些類型的限制在概念角色等級的權力已經被分散化的狀況下是有用哦,可是安全主管卻但願對全部容許這些改變的方法加以限制。
在限制和角色的等級之間也會產生敏感的相互影響。在圖ap08-03的環境中,一個項目成員不容許同時擔任程序員與測試員的角色,但項目管理員所處的位置顯然是違反了該限制。在某種狀況i下由高等級的角色違反這種限制是可接受的,但在其餘狀況下又不容許這種違反現象發生。
從嚴格性的角度來說,模型的規則不該該是一些狀況下不容許而在另外一狀況下是容許的。相似的狀況也會發生在對基數的限制上。假定限制一個用戶至多能分配給一個角色,那麼對圖中的測試員的一個指派可以未被這種限制嗎?換句話說,基數限制是否是隻能用於直接成員,是否也能應用於繼承成員上?
私有角色的概念能夠說明這些限制是有用的。一樣在圖ap08-03的環境中,能夠把測試員',程序員'和項目管理員3個角色說明爲互斥的,它們處於同一等級,沒有共同的上級角色,因此管理員角色沒有違反互斥限制。一般私有角色和其餘角色之間沒有公共上級角色,由於它們是這個等級的最大元素,因此私有角色之間互斥關係能夠無衝突的定義。
諸私有角色之間的相同部分能夠被說明爲具備0成員的最大技術限制。根據這種方法,測試員必須被指派給測試員'這個角色,而測試員角色就做爲與管理員角色共享許可權的一種工具。
ARBAC97模型
ARBAC97模型是基於角色的角色管理模型,包括三個部分:
URA97:用戶-角色指派。該組件涉及用戶-指派關係UA的管理,該關係把用戶與角色關聯在一塊兒。對該關係的修改權由管理角色控制,這樣,管理角色中的成員有權管理正規角色中的成員關係。把一個用戶指定爲管理角色是在URA97之外完成的,並假定是由安全員完成的。
PRA97:許可權-角色指派。該組件涉及角色-許可權的指派與撤銷。從角色觀點來看,用戶和許可權有相似的特色,它們都是由角色聯繫在一塊兒的實在實體。所以,能夠把PRA97看作是URA97的對偶組件。
RRA97:角色-角色指派。爲了便於對角色的管理,對角色又進行了分類。該組件涉及3類角色,它們是:
-
能力(Abilities)角色——進以許可權和其餘能力作成成員的角色。
-
組(Groups)角色——僅以用戶和其餘組爲成員的一類角色。
-
UP-角色——表示用戶與許可權的角色,這類角色對其成員沒有限制,成員可使用戶、角色、許可權、能力、組或其餘UP-角色。
區別這三類模型的主要緣由是能夠應用不一樣的管理模型去創建不一樣類型角色之間的關係。區分的動因首先是對能力的考慮,能力是許可權的集合,能夠把該集合中全部許可權做爲一個單位指派給一個角色。相似的,組是用戶的集合,能夠把該集合中全部許可權做爲一個單位指派給一個角色。組和能力角色都彷佛能夠劃分等級的。
在一個UP-角色中,一個能力是不是其的一個成員是由UP-角色是否支配該能力決定的,若是支配就是,不然就不是。相反的,若是一個UP-角色被一個組角色支配,則這個組就是該UP-角色的成員。
對ARBAC97管理模型的研究還在繼續之中,對能力-指派與組-指派的形式化已基本完成,對UP-角色概念的研究成果還未形式化。[2]
DRBAC
DRBAC是動態結盟環境下的分佈式RBAC模型。
DRBAC區別於之前的信任管理和RBAC方法就在於它支持3個特性:
1.第三方指派:一個實體若是被受權了指派分配後,就能夠指派它的名字空間之外的角色。
2.數字屬性:經過分配處理與角色有關的數值的機制來調整訪問權限。
3.指派監控:用pub/sub結構對創建的信任關係進行持續監控來跟蹤可被取消的指派的狀態。
DRBAC是由在結盟環境下對資源的訪問控制這個問題引出的。「結盟環境」能夠是軍事上幾個國家一塊兒工做達到一個共同的目標,或者商業上幾個公司合夥。結盟環境定義的特色是存在多個組織或多個實體沒有共同的可信的受權中心。在這種狀況下,實體在保護它們各自的資源的同時還必須協做來共享對結盟來講必要的受保護資源的部分。Internet上網絡服務的增加使這樣的需求很廣泛。
DRBAC結合了RBAC和信任管理系統的優勢,是既管理靈活又可分散地,可擴展的實現的系統。DRBAC表示依據角色的受控行爲,角色在一個實體的信任域內定義而且能夠將這個角色傳遞地指派給不一樣信任域內的其餘角色。DRBAC利用PKI來鑑別全部與信任敏感操做有關的實體以及確認指派證書。從角色到受權的名字空間的映射避免了確認額外的策略根源的須要。
4許可配置編輯
許可配置說明ide
在RBAC中,用戶就是一個能夠獨立訪問計算機系統中的數據或者用數據表示的其餘資源的主體。角色是指一個組織或任務中的工做或者位置,它表明了一種權利、資格和責任。許可(特權)就是容許對一個或多個客體執行的操做。一個用戶可經受權而擁有多個角色,一個角色可由多個用戶構成;每一個角色可擁有多種許可,每一個許可也可受權給多個不一樣的角色。每一個操做可施加於多個客體(受控對象),每一個客體也能夠接受多個操做。
用戶表(USERS)包括用戶標識、用戶姓名、用戶登陸密碼。用戶表是系統中的個體用戶集,隨用戶的添加與刪除動態變化。
角色表(ROLES)包括角色標識、角色名稱、角色基數、角色可用標識。角色表是系統角色集,由系統管理員定義角色。
客體表(OBJECTS)包括對象標識、對象名稱。客體表是系統中全部受控對象的集合。
操做算子表(OPERATIONS)包括操做標識、操做算子名稱。系統中全部受控對象的操做算子構成操做算子表。
許可表(PERMISSIONS)包括許可標識、許可名稱、受控對象、操做標識。許可表給出了受控對象與操做算子的對應關係。
角色/許可受權表包括角色標識、許可標識。系統管理員經過爲角色分配或取消許可管理角色/許可受權表。
RBAC的基本思想是:受權給用戶的訪問權限,一般由用戶在一個組織中擔當的角色來肯定。RBAC中許可被受權給角色,角色被受權給用戶,用戶不直接與許可關聯。RBAC對訪問權限的受權由管理員統一管理,RBAC根據用戶在組織內所處的角色做出訪問受權與控制,受權規定是強加給用戶的,用戶不能自主地將訪問權限傳給他人,這是一種非自主型集中式訪問控制方式。例如,在醫院裏,醫生這個角色能夠開處方,但他無權將開處方的權力傳給護士。
在RBAC中,用戶標識對於身份認證以及審計記錄是十分有用的;但真正決定訪問權限的是用戶對應的角色標識。用戶可以對一客體執行訪問操做的必要條件是,該用戶被受權了必定的角色,其中有一個在當前時刻處於活躍狀態,並且這個角色對客體擁有相應的訪問權限。即RBAC以角色做爲訪問控制的主體,用戶以什麼樣的角色對資源進行訪問,決定了用戶可執行何種操做。
ACL直接將主體和受控客體相聯繫,而RBAC在中間加入了角色,經過角色溝通主體與客體。分層的優勢是當主體發生變化時,只需修改主體與角色之間的關聯而沒必要修改角色與客體的關聯。
5RBAC模型的特色編輯
符合各種組織機構的安全管理需求。RBAC模型支持最小特權原則、責任分離原則,這些原則是任何組織的管理工做都須要的。這就使得RBAC模型有普遍的應用前景。
RBAC模型支持數據抽象原則和繼承概念。因爲目前主流程序設計語言都支持面向對象技術,RBAC的這一特性便於在實際系統中應用實現。
模型中概念與實際系統緊密對應。RBAC模型中的角色、用戶和許可權等概念都是實際系統實際存在的實體,便於設計者創建現存的或待建系統的RBAC模型。
RBAC模型仍素具訪問控制類模型,本質是對訪問矩陣模型的擴充,可以很好的解決系統中主體對客氣的訪問控制訪問權力的分配與控制問題,但模型沒有提供信息流控制機制,還不能徹底知足信息系統的所有安全需求。
雖然也有人認爲能夠用RBAC去仿真基於格的訪問控制系統(LBAC),但RBAC對系統內部信息流的控制不是直觀的,須要模型外的功能支持。有關信息流控制的做用域原理將在第四章介紹,屆時讀者能夠進一步理解RBAC模型的這種缺陷。
RBAC模型沒有提供操做順序控制機制。這一缺陷使得RBAC模型很難應用關於那些要求有嚴格操做次序的實體系統,例如,在購物控制系統中要求系統對購買步驟的控制,在客戶未付款以前不該讓他把商品拿走。RBAC模型要求把這種控制機制放到模型外去實現。
RBAC96模型和RBAC97uanli模型都故意迴避了一些問題,如是否容許一個正在會話的用戶再建立一個新會話,管理模型不支持用戶和許可權的增長與刪除等管理工做等,都是須要解決而未提供支持的問題,這些問題都還在研究中,可是若是缺乏這些能力的支持,模型的而應用也將受到影響。相反,訪問矩陣模型提供了用戶和權限修改功能,所以,不能說RBAC模型可以徹底取代訪問矩陣模型。