一、 前言 管理信息系統(tǒng)是一個(gè)復(fù)雜的人機(jī)交互系統(tǒng),其中每個(gè)具體環(huán)節(jié)都可能受到安全威脅。構(gòu)建強(qiáng)健的權(quán)限管理系統(tǒng),保證管理信息系統(tǒng)的安全性是十分重要的。權(quán)限管理系統(tǒng)是管理信息系統(tǒng)中可代碼重用性最高的模塊之一, 也是重復(fù)開(kāi)發(fā)率最高的模塊之一。任何多用戶的系統(tǒng)都不可避免的涉及到相同的權(quán)限需求,都需要解決實(shí)體鑒別、數(shù)據(jù)保密性、數(shù)據(jù)完整性、防抵賴(lài)和訪問(wèn)控制等安全服務(wù)(ISO7498-2)。例如,訪問(wèn)控制服務(wù)要求系統(tǒng)根據(jù)管理員已經(jīng)設(shè)定的操作權(quán)限,控制操作者可以訪問(wèn)哪些資源,以及確定對(duì)資源如何進(jìn)行操作。 采用統(tǒng)一的安全管理設(shè)計(jì)思想,規(guī)范化設(shè)計(jì)和先進(jìn)的技術(shù)架構(gòu)體系,構(gòu)建一個(gè)通用的、完善的、安全的、易于管理的、有良好的可移植性和擴(kuò)展性的權(quán)限管理系統(tǒng),使得權(quán)限管理系統(tǒng)真正成為權(quán)限控制的核心,在維護(hù)系統(tǒng)安全方面發(fā)揮重要的作用,是十分必要的。
二、 訪問(wèn)控制 訪問(wèn)控制技術(shù)是一個(gè)安全信息系統(tǒng)不可或缺的安全措施,對(duì)保護(hù)數(shù)字資源的安全有著重要意義。訪問(wèn)控制技術(shù)起源于20C70年代,當(dāng)時(shí)是為了滿足管理大型主機(jī)系統(tǒng)上共享數(shù)據(jù)授權(quán)訪問(wèn)的需要;隨著計(jì)算機(jī)技術(shù)和應(yīng)用的發(fā)展,特別是網(wǎng)絡(luò)應(yīng)用的發(fā)展,這一技術(shù)的思想和方法迅速應(yīng)用于信息系統(tǒng)的各個(gè)領(lǐng)域。在30年的發(fā)展過(guò)程中,先后出現(xiàn)了多種重要的訪問(wèn)控制技術(shù),它們的基本目標(biāo)都是防止非法用戶進(jìn)入系統(tǒng)和合法用戶對(duì)系統(tǒng)資源的非法使用。為了達(dá)到這個(gè)目標(biāo),訪問(wèn)控制常以用戶身份認(rèn)證為前提,在此基礎(chǔ)上實(shí)施各種訪問(wèn)策略來(lái)控制和規(guī)范合法用戶在系統(tǒng)中的行為。 權(quán)限控制的中心是對(duì)訪問(wèn)數(shù)據(jù)的控制。訪問(wèn)控制(也稱(chēng)存取控制)的目的是根據(jù)需要批準(zhǔn)或禁止用戶訪問(wèn)數(shù)字資源,確保用戶對(duì)數(shù)據(jù)只能進(jìn)行經(jīng)過(guò)授權(quán)的有關(guān)操作;使每個(gè)用戶都能方便地訪問(wèn)其在工作中所需要的數(shù)據(jù)(根據(jù)其責(zé)任和資格),同時(shí)屏蔽不允許他們?cè)L問(wèn)的數(shù)據(jù)。 在訪問(wèn)控制機(jī)制中,一般把被訪問(wèn)的資源稱(chēng)為“客體”,把以用戶名義進(jìn)行資源訪問(wèn)的進(jìn)程、事務(wù)等實(shí)體稱(chēng)為“主體”。因此訪問(wèn)控制的基本目標(biāo)就是為了限制訪問(wèn)主體(用戶、進(jìn)程、服務(wù)等)對(duì)訪問(wèn)客體(文件、系統(tǒng)等)的訪問(wèn)權(quán)限,從而使計(jì)算機(jī)系統(tǒng)在合法范圍內(nèi)使用;決定用戶能做什么,也決定代表一定用戶權(quán)益的程序能做什么。 目前,訪問(wèn)控制機(jī)制理論有四種: ·自主存取控制(Discretionary Access Control,DAC); ·強(qiáng)制存取控制(Mandatory Access Control,MAC); ·基于角色的存取控制(Role-based Access Control,RBAC); ·使用控制(Usage Control,UCON)。 其中前三者被廣泛使用。
1、 自主存取控制(DAC) 自主存取控制隨分時(shí)系統(tǒng)的出現(xiàn)而產(chǎn)生,其基本思想是:系統(tǒng)中的主體可以自主的將其擁有的對(duì)客體的權(quán)限部分或者全部授予其它主體。其通常通過(guò)訪問(wèn)控制列表(ACL:Access Control List)來(lái)實(shí)現(xiàn),包括基于行(主體)的DAC和基于列(客體)的DAC?;谛械?/SPAN>DAC在每個(gè)主體上都附加一個(gè)該主體可訪問(wèn)的客體的明細(xì)表,而基于列的DAC則在每一個(gè)客體上都附加一個(gè)可以訪問(wèn)該客體的主體的明細(xì)表。 DAC訪問(wèn)控制完全基于訪問(wèn)者和對(duì)象的身份。在DAC機(jī)制中,用戶對(duì)不同的數(shù)據(jù)對(duì)象有不同的存取權(quán)限,而且還可以將其擁有的存取權(quán)限轉(zhuǎn)授給其他用戶。 DAC實(shí)現(xiàn)簡(jiǎn)單,在早期得到了廣泛的應(yīng)用。但是由于其允許訪問(wèn)權(quán)的傳遞,使得傳遞出去的訪問(wèn)權(quán)難以管理;另外其無(wú)法保護(hù)受保護(hù)資源的副本;最后,其用于管理主客體數(shù)量巨大的系統(tǒng)將造成開(kāi)銷(xiāo)巨大,效率低下的問(wèn)題,難以滿足大型應(yīng)用,特別是網(wǎng)絡(luò)應(yīng)用的需要。 目前在我國(guó)的大多數(shù)的信息系統(tǒng)中的訪問(wèn)控制模塊中基本是借助于自主存取控制機(jī)制的訪問(wèn)控制列表(ACLs)。 2、 強(qiáng)制存取控制(MAC) 強(qiáng)制存取控制最初源于對(duì)信息機(jī)密性的要求以及防止特洛伊木馬之類(lèi)的攻擊,其最開(kāi)始應(yīng)用于軍方系統(tǒng)中。其通過(guò)對(duì)主體和客體分配固定的安全屬性,利用安全屬性來(lái)決定主體是否可以對(duì)客體的進(jìn)行訪問(wèn)。安全屬性是固定的,任何用戶或者用戶進(jìn)程都無(wú)法改變自身或者其它主/客體的安全屬性。另外,MAC通常和DAC結(jié)合使用,主體只有通過(guò)了MAC和DAC檢查后才能訪問(wèn)客體,因而可以防止特洛伊木馬之類(lèi)的程序竊取信息。 MAC的本質(zhì)是基于格的非循環(huán)單向信息流政策。對(duì)于不同類(lèi)型的信息采取不同層次的安全策略,對(duì)不同類(lèi)型的數(shù)據(jù)來(lái)進(jìn)行訪問(wèn)授權(quán)。在MAC機(jī)制中,存取權(quán)限不可以轉(zhuǎn)授,所有用戶必須遵守有管理員建立的安全規(guī)則,最基本的規(guī)則是“向下讀取,向上寫(xiě)入”。MAC具有兩個(gè)關(guān)鍵規(guī)則:“不向上讀,不向下寫(xiě)”,即信息只能由低安全級(jí)向高安全級(jí)流動(dòng),任何反向信息流動(dòng)都是被禁止的。 雖然其通過(guò)增加訪問(wèn)限制來(lái)增加了信息的機(jī)密性,但是也不可避免的降低了系統(tǒng)的靈活性,另外其不能實(shí)施完整性控制,這限制了它在網(wǎng)絡(luò)中的應(yīng)用。再者,現(xiàn)代計(jì)算機(jī)中不可避免的存在大量的逆向潛信道,如:共享內(nèi)存,大量的Cache,這也影響了其的廣泛應(yīng)用。 MAC用于多層次安全級(jí)別的軍事應(yīng)用。 3、 基于角色的存取控制(RBAC) RBAC在主體和權(quán)限之間增加了一個(gè)中間橋梁——角色。角色可以看作是一組操作的集合,不同的角色具有不同的操作集,這些操作由系統(tǒng)管理員分配給角色。用戶的授權(quán)是通過(guò)授予用戶一個(gè)角色來(lái)實(shí)現(xiàn)的,即賦予用戶一個(gè)角色,一個(gè)用戶可以承擔(dān)不同的角色,從而實(shí)現(xiàn)授權(quán)的靈活性。 權(quán)限被授予角色,而管理員通過(guò)指定用戶為特定角色來(lái)為用戶授權(quán);從而大大簡(jiǎn)化授權(quán)管理,減少授權(quán)管理的復(fù)雜性,降低管理開(kāi)銷(xiāo),使權(quán)限管理系統(tǒng)具有強(qiáng)大的可操作性和可管理性。角色可以根據(jù)組織中的不同工作創(chuàng)建,然后根據(jù)用戶的責(zé)任和資格分配角色,用戶可以輕松地進(jìn)行角色轉(zhuǎn)換。而且隨著新應(yīng)用和新系統(tǒng)的增加,角色可以分配更多的權(quán)限,也可以根據(jù)需要撤銷(xiāo)相應(yīng)的權(quán)限。從而靈活地支持企業(yè)的安全策略,并對(duì)企業(yè)的變化有了很大的伸縮性。 RBAC屬于策略中立的訪問(wèn)控制模型,既可以實(shí)現(xiàn)自主存取控制策略(DAC),又可以實(shí)現(xiàn)強(qiáng)制存取控制策略(MAC),可以有效緩解傳統(tǒng)安全管理處理瓶頸問(wèn)題,被認(rèn)為是一種普通適用的訪問(wèn)控制模型,尤其適用于大型組織的統(tǒng)一資源有效的訪問(wèn)控制機(jī)制。 4、 使用控制(UCON) UCON目前還停留在理論階段。UCON對(duì)傳統(tǒng)的存取控制進(jìn)行了擴(kuò)展,定義了授權(quán)(Authorization)、職責(zé)(Obligation)和條件(Condition)3個(gè)決定性因素,同時(shí)提出了存取控制的連續(xù)性(Continuity)和易變性(Mutability)兩個(gè)重要屬性。(Park. J,Sundhu. R,2002)UCON優(yōu)化了傳統(tǒng)的訪問(wèn)控制、可信管理,以及數(shù)字權(quán)力管理,從而用系統(tǒng)方式提供了一個(gè)保護(hù)數(shù)字資源的統(tǒng)一標(biāo)準(zhǔn)的框架,為下一代存取控制機(jī)制提供了新思路。 三、 RBAC(一):初步 RBAC(Role-based Access Control,縮寫(xiě)RBAC),即基于角色的訪問(wèn)控制,作為一種靈活和直觀的訪問(wèn)控制技術(shù)在20世紀(jì)90年代(RBAC96)迅速發(fā)展起來(lái)。RBAC通過(guò)引入角色(role)的新概念來(lái)實(shí)施訪問(wèn)控制策略。不同的角色和它所應(yīng)具有的權(quán)限許可(permission)互相聯(lián)系,用戶(user)作為某些角色的成員,獲得角色所擁有的權(quán)限。角色可以根據(jù)實(shí)際的單位或組織的不同工作職能和權(quán)限來(lái)劃分(生成或取消),依據(jù)用戶所承擔(dān)的不同權(quán)利和義務(wù)來(lái)授權(quán)相應(yīng)的角色。對(duì)于一個(gè)存在大量用戶和權(quán)限的權(quán)限分配系統(tǒng)來(lái)說(shuō),從用戶到角色的管理,簡(jiǎn)化了權(quán)限分配的復(fù)雜性,提高了安全管理的效率和質(zhì)量。
(一)、RBAC參考模型 為了將人和權(quán)限解藕,RBAC模型引入Role概念,目的是為了隔離用戶(User,即動(dòng)作主體)與權(quán)限(Privilege)。角色(Role)作為一個(gè)用戶與權(quán)限的代理層,解耦了權(quán)限和用戶的關(guān)系,所有的授權(quán)應(yīng)該給予角色而不是直接給用戶或組(Group)。權(quán)限是權(quán)限顆粒,由操作(Operation)和資源(Resource)組成,表示對(duì)資源的一個(gè)操作,即“Operation + Resource”;例如,對(duì)于新聞的刪除操作。角色-權(quán)限(Role-Privilege)是多對(duì)多(Many-to-Many)的關(guān)系,這是權(quán)限的核心。整個(gè)RBAC參考模型就是圍繞Role來(lái)建立的。 RBAC參考模型(Reference Model)如圖1。 圖1:RBAC模型 對(duì)該模型定義如下: U,R,P,S:用戶(USERS),角色(ROLES),權(quán)限(PRMS),會(huì)話(SESSIONS); PA?P*R:權(quán)限分配,多對(duì)多的關(guān)系; UA?U*R:用戶分配,多對(duì)多關(guān)系; Users:S>U,每一個(gè)會(huì)話 s 對(duì)應(yīng)單一用戶 user(s)的映射; Roles:會(huì)話 s 到角色集合role(s) ?{r | (user(s), r) ε PA} 易見(jiàn):該模型由三個(gè)實(shí)體組成,分別是:用戶(U)、角色(R)、權(quán)限(P)。其中用戶指自然人;角色就是組織內(nèi)部一件工作的功能或工作的頭銜,表示該角色成員所授予的職責(zé)的許可,系統(tǒng)中擁有權(quán)限的用戶可以執(zhí)行相應(yīng)的操作。 RBAC的關(guān)注點(diǎn)在角色和用戶以及權(quán)限間的關(guān)系,稱(chēng)為用戶委派(User assignment,UA)和權(quán)限委派(Permission assignment,PA)。關(guān)系的左右兩邊都是多對(duì)多(Many-to-Many)關(guān)系??梢哉f(shuō),UA和PA就相當(dāng)于中間表;事實(shí)上,整個(gè)RBAC都是基于關(guān)系模型。 用戶與角色之間以及角色與權(quán)限之間用雙雙箭頭相連表示用戶角色分配 UA 和角色權(quán)限分配 PA 關(guān)系都是多對(duì)多的關(guān)系,即一個(gè)用戶可以擁有多個(gè)角色,一個(gè)角色也可被多個(gè)用戶所擁有。同樣的,一個(gè)角色擁有多個(gè)權(quán)限,一個(gè)權(quán)限能被多個(gè)角色所擁有。用戶建立會(huì)話從而對(duì)資源進(jìn)行存取,每個(gè)會(huì)話 S 將一個(gè)用戶與他所對(duì)應(yīng)的角色集中的一部分建立映射關(guān)系,這個(gè)角色會(huì)話子集稱(chēng)為會(huì)話激活的角色集。于是,在這次會(huì)話中,用戶可以執(zhí)行的操作就是該會(huì)話激活的角色集對(duì)應(yīng)的權(quán)限所允許的操作。
(二)、RBAC參考模型部件 NIST(The National Institute of Standards and Technology,美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院,2004)標(biāo)準(zhǔn)RBAC模型由4個(gè)部件模型組成,這4個(gè)部件模型分別是: ·基本模型RBAC0(Core RBAC); ·角色分級(jí)模型RBAC1(Hierarchical RBAC,含General,Limited); ·角色限制模型RBAC2(Constraining RBAC,含Static/Dynamic Separation of Duty,即SSD和DSD); ·統(tǒng)一模型RBAC3(Combines RBAC)。
1、RBAC0 RBAC0(Core RBAC)定義了能構(gòu)成一個(gè)RBAC控制系統(tǒng)的最小的元素集合。在RBAC0之中,包含最基本的5個(gè)元素:用戶集(users,USERS)、角色集(roles,ROLES)、目標(biāo)/對(duì)象集(objects,OBS)、操作集(operations,OPS)、許可權(quán)/特權(quán)集(permissions,PRMS)。權(quán)限被賦予角色,而不是用戶,當(dāng)一個(gè)角色被指定給一個(gè)用戶時(shí),此用戶就擁有了該角色所包含的權(quán)限。會(huì)話集(sessions,SESSIONS)是用戶與激活的角色集合之間的映射。RBAC0與傳統(tǒng)訪問(wèn)控制的差別在于增加一層間接性(角色)帶來(lái)了靈活性,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的擴(kuò)展。 RBAC0模型如圖2所示: 圖2:RBAC0模型 用戶(User):代表人,也可以是一臺(tái)機(jī)器、agent、或者其他任何智能型物品。 角色(Role):表示一個(gè)工作職責(zé),在一個(gè)組織機(jī)構(gòu)環(huán)境中的工作職責(zé)。該職責(zé)可以關(guān)聯(lián)一些關(guān)于權(quán)力和責(zé)任的語(yǔ)義。 權(quán)限(Permission):是一個(gè)許可,對(duì)在一個(gè)或多個(gè)對(duì)象上執(zhí)行操作的許可。如:“一個(gè)文檔”不是權(quán)限,“刪除”也不是權(quán)限,只有“對(duì)文檔的刪除”才是權(quán)限。由于RBAC標(biāo)準(zhǔn)定義的權(quán)限是正向授權(quán)(正權(quán)限),并沒(méi)有禁止負(fù)向授權(quán)(負(fù)權(quán)限),因此可以自定義負(fù)權(quán)限。正向授權(quán)在開(kāi)始時(shí)假定主體沒(méi)有任何權(quán)限,然后根據(jù)需要授予權(quán)限,適合于權(quán)限要求嚴(yán)格的系統(tǒng)。負(fù)向授權(quán)在開(kāi)始時(shí)假定主體有所有權(quán)限,然后將某些特殊權(quán)限收回。 操作(Operation):是程序的可執(zhí)行的反映(image),被用戶調(diào)用和執(zhí)行。操作的類(lèi)型取決于實(shí)現(xiàn)系統(tǒng)的類(lèi)型。 對(duì)象(Object):表示資源(Resource)或目標(biāo),任何訪問(wèn)控制機(jī)制都是為了保護(hù)系統(tǒng)的資源。對(duì)象包括:文件、目錄,數(shù)據(jù)庫(kù)表、行、字段,磁盤(pán)空間,打印機(jī),甚至CPU周期等。 會(huì)話(Session)在RBAC0中是比較隱晦的一個(gè)元素。RBAC標(biāo)準(zhǔn)定義:每個(gè)會(huì)話是一個(gè)映射,一個(gè)用戶到多個(gè)角色的映射。當(dāng)一個(gè)用戶激活他所有角色的一個(gè)子集時(shí),建立一個(gè)會(huì)話。每個(gè)會(huì)話和單個(gè)用戶關(guān)聯(lián),每個(gè)用戶可以關(guān)聯(lián)到一個(gè)或多個(gè)會(huì)話。當(dāng)用戶執(zhí)行一段過(guò)程(Process)或一個(gè)動(dòng)作(Action)時(shí),將使用到相關(guān)的Role(所有Role的子集);這個(gè)過(guò)程就可以稱(chēng)為一個(gè)會(huì)話。
2、RBAC1 RBAC1(Hierarchical RBAC)引入角色間的繼承關(guān)系。 角色間的繼承關(guān)系可分為一般(General)繼承關(guān)系和受限(Limited)繼承關(guān)系。一般繼承關(guān)系僅要求角色繼承關(guān)系是一個(gè)絕對(duì)偏序關(guān)系,允許角色間的多繼承。而受限繼承關(guān)系則增加了職責(zé)關(guān)系的分離,進(jìn)一步要求角色繼承關(guān)系是一個(gè)樹(shù)結(jié)構(gòu)。一般繼承的RBAC和受限繼承的RBAC兩者的區(qū)別在于:前者是圖;而后者可以有多個(gè)父節(jié)點(diǎn)但只能有一個(gè)子節(jié)點(diǎn),是一個(gè)反向樹(shù)結(jié)構(gòu)。 RBAC1模型如圖3: 圖3:RBAC1模型 角色繼承用于解決復(fù)雜組織機(jī)構(gòu)之間的權(quán)限關(guān)系。它是一種“很自然地”對(duì)組織機(jī)構(gòu)層次中權(quán)限和責(zé)任的映射。如:總經(jīng)理→部門(mén)經(jīng)理→業(yè)務(wù)員。角色繼承的方向和用戶的關(guān)系方向相反,即權(quán)限最小的在頂端:業(yè)務(wù)員→部門(mén)經(jīng)理→總經(jīng)理。如:若所有role_salesman(業(yè)務(wù)員)的權(quán)限都是role_Mgr(經(jīng)理)的權(quán)限,那么role_Mgr繼承自role_salesman。
3、RBAC2 RBAC2(Constraining RBAC)模型中添加了責(zé)任分離(Separation of Duty ,SoD)關(guān)系;這是RBAC最復(fù)雜的部分。RBAC2的約束規(guī)定了權(quán)限被賦予角色時(shí),或角色被賦予用戶時(shí),以及當(dāng)用戶在某一時(shí)刻激活一個(gè)角色時(shí)所應(yīng)遵循的強(qiáng)制性規(guī)則。責(zé)任分離包括靜態(tài)責(zé)任分離(Static Separation of Duty,SSD)和動(dòng)態(tài)責(zé)任分離(Dynamic Separation of Duty,DSD)。約束(Constraining)與用戶-角色-權(quán)限關(guān)系一起決定了RBAC2模型中用戶的訪問(wèn)許可。 圖4:RBAC2模型 RBAC標(biāo)準(zhǔn)定義:職責(zé)關(guān)系分離(SoD)用于增強(qiáng)利益沖突策略,這種策略某些組織機(jī)構(gòu)可能會(huì)需要,即避免用戶超出其當(dāng)前職位合理的權(quán)限等級(jí)。簡(jiǎn)單地說(shuō),就是避免兩個(gè)角色間的沖突。如:會(huì)計(jì)和出納,在一般公司都不允許同一個(gè)人兼任。因此在分配角色的時(shí)候,應(yīng)該禁止這兩種角色賦給同一人。 靜態(tài)責(zé)任分離(SSD),即在系統(tǒng)初始化時(shí),當(dāng)角色授給用戶時(shí)來(lái)判斷是否將沖突的角色給了同一用戶。在RBAC標(biāo)準(zhǔn)中,沖突的角色被定義為一個(gè)二元關(guān)系,就是說(shuō),任何一個(gè)用戶只能擁有其中的一個(gè)。 動(dòng)態(tài)責(zé)任分離(DSD),指相沖突的角色可以同時(shí)給一個(gè),但是在一次會(huì)話中不能同時(shí)扮演兩個(gè)沖突的角色。如:在超市POS系統(tǒng)中,ywf可以是收銀員或收銀員主管(ROLE)。收銀員必須經(jīng)過(guò)主管才能打開(kāi)收銀機(jī)的抽屜修改某次結(jié)賬錯(cuò)誤。如果收銀員角色的一個(gè)單獨(dú)的行為中需要從收銀員切換到主管,那么DSD要求,這個(gè)用戶(USER)必須先放棄收銀員角色;即,當(dāng)該收銀員正在收銀時(shí)發(fā)現(xiàn)錯(cuò)誤,必須要先關(guān)閉抽屜,然后再次以主管身份打開(kāi)抽屜才行。
4、RBAC3 RBAC3包含了RBAC1和RBAC2,既提供了角色間的繼承關(guān)系,又提供了責(zé)任分離關(guān)系。參圖4。 |
|
來(lái)自: Lucia‘s doc > 《資料整理》