摘要:基于對RBAC模型及相關模型中角色繼承規則,引入權限組等概念,提出了一個改進的角色與權限層次關系模型。在此模型上進行訪問控制應用的設計,集成活動目錄技術作為統一的人員庫,形成了一個較為完善的訪問控制解決方案,使基于角色的訪問控制更為靈活與利于理解。
關鍵詞:訪問控制;基于角色的訪問控制;角色繼承;權限繼承;活動目錄
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2011)04-0838-04
Access Control Solution with Inheritable Role and Permission Model
CHEN Qi
(Department of Computer Science and Technology, Tongji University, Shanghai 201804, China)
Abstract: Based on the RBAC model and related role inheritance rules, concepts such as permission group and an improved role hierarchy and permission hierarchy model are introduced. Based on this model and integration with Active Directory as a unified user database, a more comprehensive access control solution is formed. It enables role-based access control more flexible and conducive to understanding.
Key words: access control; RBAC; role inheritance; permission inheritance; active directory
1 概述
企業中越來越多的業務需要各種軟件的支撐。隨著軟件使用的不斷增長,對如何有效、安全地對用戶權限進行管理是發展中需要解決的一個問題。與此同時,在不同的軟件中使用不同的用戶登錄方式等,將帶來繁瑣與冗余問題的產生,降低管理效率。訪問控制作為計算機網絡信息安全管理的主要策略,通過某種途徑顯式地允許或限制用戶、組或角色對信息資源的訪問能力及范圍。
常用的自主訪問控制(DAC)和強制訪問控制(MAC)方法由主體與訪問權限直接發生關系,根據主客體的所屬關系或主客體的安全級來決定主體是否具有對客體的訪問權。當訪問用戶的種類繁多、數量巨大并動態變化時,使用傳統的訪問控制方法變得非常困難[1]。基于角色訪問控制RBAC(Role Based Access Control) 是一種已經被廣泛應用于大型企業的計算機網絡中實施訪問控制的訪問控制技術,Sandhu等提出的RBAC96 模型得到了學術界的廣泛認可[2]。
RBAC96模型包括了RBAC0、RBAC1、RBAC2、RBAC3四個模型。
RBAC0包含四個基本要素:用戶、角色、會話和訪問權限。用戶在一次會話中激活所屬角色的一個子集,獲得一組訪問權限,即可對相關客體執行規定的操作,任何非顯式授予的權限都是被禁止的。
RBAC1是對RBAC0的擴充,在RBAC0的基礎上加入了角色層次關系,根據組織內部權力和責任的結構來構造角色與角色之間的層次關系。
RBAC2也是RBAC0的補充,但與RBAC1不同的是RBAC2加進了約束的概念。RBAC2中的約束規則主要有:最小權限、互斥角色、基數約束與角色容量、先決條件、等級間的互斥角色等。而RBAC3模型是對RBAC1和RBAC2的集成,包括角色的層次關系與約束關系。
基于角色訪問控制方法引入角色的概念作為中介,管理員根據需要定義各種角色, 并設置合適的訪問權限, 而用戶根據其責任再被指派為不同的角色。這樣, 整個訪問控制過程就分成了兩部分, 即訪問權限與角色相關聯, 角色再與用戶相關聯, 從而實現了用戶與訪問權限的邏輯分離?;谠撽P系模型,將職責分離原則用于了系統權限管理中,通過利用角色與權限之間較為穩定的變化來簡化權限管理,提高了權限管理的效率。
在該關系模型中,能夠通過角色的繼承關系進行子角色權限與父角色權限的繼承,并通過引入私有角色這一定義來限制權限的繼承。如果通過增加新的私有角色來保留所需要的權限不被繼承,那么將會增加角色的數量,且角色關系的繼承與實際管理中的角色繼承之間的對應關系也將變得更為復雜,使得原先引入角色以期簡化權限管理的效果降低。角色繼承機制與具體權限分配方法的完善,是該模型的仍需要進行進一步研究的區域。
通過對RBAC相關的研究與企業實際業務需求的研究,現提出了一個基于RBAC模型的角色繼承與權限繼承模型。主要特點是增加了權限的許可類型,歸納了角色繼承中的權限有效值計算,以及對權限進行分組,引入權限組及其繼承的相關概念,以滿足實際系統應用中的現實權限管理需求,增加角色與權限關系的靈活性。特別地對于快速成長中的企業與軟件應用系統,能提高權限管理效率與直觀性,降低相應的管理成本。
2 角色繼承與權限繼承模型的描述與定義
2.1 元素的描述與定義
用戶:用戶是一個可以獨立訪問數據或用數據表示的資源的主體,用USERS表示用戶集合。一般情況下指人或登錄帳戶。
權限:權限是對數據或用數據表示的資源進行訪問的許可。用PERMISSIONS 表示一個權限集合。
角色:角色是指一個組織或任務中的工作或位置, 它代表了一種資格、權利和責任。用ROLES表示一個角色集合。
權限組:權限組表示一組權限的集合。用PGROUPS 表示該集合,即?堝PERMISSIONS?哿PGROUPS。
元素之間的定義如下關系:
用戶角色委派:用戶角色委派是一個二元關系,設UR?哿USERS×ROLES是一個用戶角色委派關系集合,那么(u, r) ∈UR 表示用戶u 被委派了一個角色r。
角色權限委派:角色權限委派是一個三元關系,設RP?哿ROLES×PERMISSIONS×TYPE是一個角色權限委派關系集合,則(r,p,t) ∈RP表示角色r與權限p具有設置t。這里把許可權限設為允許和拒絕兩種值,即t ∈{ALLOW,DENY}。
用戶權限集合:令P(r)為角色r所擁有的權限委派集合。
角色繼承:角色繼承是一個二元關系,設RI?哿ROLES×ROLES是一個繼承關系集合,則(r1,r2)∈RI表示角色r2繼承角色r1,記為r1→r2。如果r1→r2,那么對于?坌p∈P(r1),有p∈P(r2)。
2.2 角色最終權限有效值的計算
當角色之間有繼承時,涉及到角色所擁有權限集合的有效值計算。定義如下的繼承規則來計算權限有效值,這里將角色r與權限p具有設置的有效值t設為V(r,p):
規則1:顯式權限在繼承權限之前
規則2:拒絕權限設置在允許權限設置之前
規則3:繼承距離較近權限在繼承距離較遠權限之前
對于規則2,當顯式權限設置相沖突或相同距離的繼承權限設定相沖突時,應用該規則。
因此,對于角色r1、r2、r3、r4且r1→r2 →r3,r1 →r4:
如果r1同時定義了對于p的兩個的委派設置,一個為允許一個為拒絕,最終有效值為拒絕;
?坌p: (r1,p,t1)∈P(r1), (r1,p,t2)∈P(r1) ?圯 V(r1,p)= t1∧t2
如果r1與r2同時定義了對于p的委派設置,顯式權限設置優先,即r1權限設置生效:
?坌p: (r1,p,t1)∈P(r1), (r2,p,t2)∈P(r2) ?圯 V(r1,p)=t1
如果r2與r3同時定義了對于p的委派設置,距離較近權限設置優先,即r2權限設置生效:
?坌p: (r1,p,t1)=?覫, (r2,p,t2)∈P(r2) ,(r3,p,t3)∈P(r3)?圯 V(r1,p)=t2
如果r2與r4同時定義了對于p的委派設置,則最終有效值為邏輯與,即等距離情況下如果存在拒絕則最終有效值為拒絕:
?坌p: (r1,p,t1)=?覫, (r2,p,t2)∈P(r2), (r4,p,t4)∈P(r4) ?圯V(r1,p)=t2∧t4
對于角色繼承中的權限最終有效值的計算,偽代碼如下:
function GetAccessPermission (User u, Permission p)
Queue1=User.Roles
while (Queue1.Length>0)
Queue2=NULL
foreach r in Queue1
if GetPermission(r,p)=DENY then return DENY end if
VisitedQueue.Enqeue(p)
end foreach
foreach r in Queue1
if GetPermission(r,p)=ALLOW then return ALLOW end if
Queue2.Enqeue(p.Parents)
end foreach
Queue1=Queue2.Subtract(VisitedQueue)
end while
return NULL
end function
2.3 擴展至權限組的角色最終權限有效值的計算
權限組權限集合:令PG(pg)為權限組pg所擁有的權限集合。
權限組繼承:權限組繼承是一個二元關系,設PI?哿PGROUPS ×PGROUPS是一個繼承關系集合,則(pg1,pg2) ∈PI表示權限組pg2繼承權限組pg1,記為pg1→pg2. 如果pg1→r2, 那么對于?坌p ∈PG(pg1) , 有p ∈PG (pg2).
角色權限組委派:角色權限組委派是一個三元關系,設RG?哿ROLES×PGROUP×TYPE是一個權限配置關系集合,則(r,pg,t) ∈RG表示角色r與權限組pg具有設置t。
擴展角色權限委派為角色權限組委派后,角色最終權限有效值的計算也相應擴展。當角色與權限之間沒有設定時,將擴展為該角色與權限組之間所擁有權限集合的計算。對于可繼承的權限組,角色與權限組的有效值計算規則與可繼承角色與權限的計算規則基本相同,描述如下:
步驟1:角色r與權限p之間設置了權限有效值t,返回t;否則轉步驟2。
步驟2:當前權限或權限組沒有父權限組,返回空;否則轉步驟3。
步驟3:按廣度優先,遍歷當前權限或權限組的父權限組與角色r之間設置,如果存在一個或多個設置,返回有效值的邏輯與;否則轉步驟2。
對于角色與可繼承權限組權限最終有效值的計算,偽代碼如下:
function GetPermissionExtend (Role r, Permission p)
if GetPermission(r,p)<>NULL then return GetPermission(r,p) end if
Queue1=p.Parents
while (Queue1.Length>0)
Queue2=NULL
foreach pg in Queue1
if GetPermission(r,pg)=DENY then return DENY end if
VisitedQueue.Enqeue(pg)
end foreach
foreach pg in Queue1
if GetPermission(r,pg)=ALLOW then return ALLOW end if
Queue2.Enqeue(pg.Parents)
end foreach
Queue1=Queue2.Subtract(VisitedQueue)
end while
return NULL
end function
3 基于該模型的訪問控制應用
對實際業務的需求進行分析與研究后,引入了權限組的概念,該權限組可與角色之間能委派權限許可,并可被繼承。由于權限對應于與其特定操作并具有原子性,因而權限組在角色與權限之間增加了一層邏輯層。在應用中,權限組雖然不是實體操作,但能作為權限的集合對業務邏輯進行進一步抽象,加強單以組織結構為劃分原則的角色分配中不足的靈活性與邏輯直觀性。
舉例而言,在業務邏輯中常常需要對申請與審批環節進行交錯的權限許可。可以通過增加審批組的角色而加以區分,但使用該方式將會造成額外的角色出現,增加了角色的數量,不能真實地反映組織管理結構。其次,當審批環節本身的權限發生變化,當多個角色直接與權限設置了許可,此時需要修改的許可映射數量將相對于角色數量成倍增長。另一方面,當業務需要對一組特定高級別權限進行拒絕訪問設置時,增加權限組進行限制將比增加角色進行限制更直觀并符合管理要求。因此引入權限組后能減少角色與權限直接映射的數量,簡化了多個權限按集合進行許可的業務邏輯。
在應用系統中使用可繼承角色及權限組時仍然需要考慮如下實際業務需求:
比較增加角色與增加權限組之后,增加的映射關系數量以及此類映射的穩定性。
過多層次的權限組將會降低權限判斷的直觀性,在已有的角色繼承層次上增加管理的復雜度。
對于角色或權限組繼承,算法按廣度優先進行計算,允許出現環路的層次,但此情況在現實管理上是沒有實際意義的,應當避免。
角色和權限組的設定原則是實際業務邏輯,避免將業務邏輯反約束于權限模型。
3.1 模型的應用解決方案
該應用解決方案的架構如圖1所示。
3.2 活動目錄作為用戶庫
對用戶、角色以及用戶角色分配的實現,在基于Windows的軟件平臺上,以減少角色的重復設置為目的,最大可能地利用現有的IT管理投資,使用活動目錄作為角色設置與分配的基礎。
活動目錄是一種事務性數據庫,通過使用結構化的數據存儲作為目錄信息的邏輯化、分層結構基礎,采用面向對象的樹形結構對它所在的域網絡上的共享資源和用戶信息進行邏輯化的分層管理。使用其中的“組織單元容器對象”和“組對象”可以有效地進行用戶角色和權限信息的管理,“組織單元容器”對象,用來裝載用戶、組、打印機等對象,提供了“委派控制”的功能可以用來設定管理權,通過給一個管理人員僅在一個容器中創建或修改對象的權力,就可以把他限制在那個容器中;而“組對象”的“Member”屬性以及用戶對象的“MemberOf”屬性可以方便地實現用戶角色的安全管理和指派。為了保證域控制器上的目錄數據一致性,通過定期與事件觸發,通過標準網絡協議進行復制。
因此在用戶賬戶管理中,我們使用活動目錄作為統一的用戶庫,通過域用戶作為解決方案中的用戶,滿足了操作系統與軟件系統的單一用戶帳戶登錄的功能。在活動目錄中,利用活動目錄提供的安全服務,減少了該安全代碼量,提高了賬戶安全設置的靈活度和統一性。與此同時,在組織內使用統一的用戶登錄與認證方式,將能提高管理效率,簡化管理復雜度。
3.3 權限組件數據庫
權限組件數據庫使用基于SQL Server的關系數據庫的解決方案,按本模型的描述與定義與按第三范式原則進行數據庫模式與表的建立,并基于活動目錄的域用戶進行訪問控制,以區分例如管理員、一般用戶及訪客的操作權限級別,增加數據庫的安全性。
3.4 同步模塊
同步模塊負責將活動目錄中的用戶、組織單元容器和組對象信息按一定格式同步到主數據庫中?;顒幽夸浭褂幂p量目錄訪問協議(LDAP),同步模塊通過LDAP可以提取活動目錄中的信息。在編程接口上,.net框架存在命名空間System.DirectoryServices,包含了各種對活動目錄進行操作的方法。通過調用該命名空間進行LDAP查詢語句,并使用以下兩種活動目錄信息同步方案:
定時同步:系統按設定的日程,遍歷對象空間并將結果更新至主數據庫中。在遍歷時可以通過判斷對象的更新時序號USN(Update Sequence Number),進行增量更新。
手動同步:系統按管理員的請求,手動觸發一次同步。
3.5 權限設置模塊
權限設置模塊負責權限的設置與存儲功能。由于權限配置是一個三元關系,因此模塊提供角色權限委派、角色權限組委派的關系設置,權限與權限組關系設置,權限組繼承關系設置的創建、修改、刪除等基礎功能。通過權限驗證模塊的有效值計算功能模塊,提供按用戶出發、角色出發、權限出發和權限組出發的不同委派關系設置及最終有效值的視圖。
3.6 權限驗證模塊
應用系統向權限驗證模塊提出用戶賬戶與權限請求,權限驗證模塊從主數據庫中提取相關數據,運用本模型的定義和規則,計算該次請求的最終有效值并反饋給應用系統。
臨時用戶權限委托
實際業務中,當用戶臨時由于特殊原因,需要將自身的權限委托給其他用戶。在該委托關系生效時,權限驗證模塊同時計算委托用戶與被委托用戶的權限有效值,當發生重復時按邏輯或進行結果計算并反饋給應用系統,以此計算規則滿足該業務需求。
緩存
在應用中,往往一個角色將對特定數量的權限頻繁提出驗證請求,而在角色層次與權限組層次的數量都達到較大規模時,計算復雜度將以平方數級別增長。因而通過使用緩存技術將反復進行的相同計算結果(會話結果)進行緩存,將提高驗證的速度并降低系統負載。因而本模塊提供驗證請求的會話結果緩存功能,將角色的權限驗證結果存入主數據庫中進行緩存。一旦由于角色、權限及相關設置的修改,將觸發該緩存的有效期終止,并在下一次相同驗證請求發生時,重新計算有效值并存入緩存。
4 結束語
在對基于角色訪問控制模型的分析與研究基礎上,通過定義角色繼承、權限組以及權限組繼承作為用戶與被訪問客體的中間媒介,使得權限控制管理的復雜度得到了降低,提高了權限控制的靈活性。在此模型基礎上,通過對現實中的業務邏輯進行分析,集成了活動目錄技術作為統一用戶庫并提出了較為完善的訪問控制解決方案。下一步的研究工作將在此模型的基礎上,進一步研究角色與權限委派中訪問設置類型的擴展,將該類型擴展為更細粒度的定義,以使得本模型成為一個應用性更好的訪問控制模型。
參考文獻:
[1] 鐘華,馮玉琳,姜洪安.擴充角色層次關系模型及其應用[J].軟件學報,2000,11(6):779-784.
[2] Sandhu R S,Coyne E J,Feinstein H L,et,al.Role-based access control models[J].IEEE Computer,1996,29(2):38-47.
[3] 鞠成東,廖明宏.基于RBAC 模型的角色權限及層次關系研究[J].哈爾濱理工大學學報,2005,10(4):95-99.
[4] 唐瑞春,毛健,徐建良,等.基于活動目錄的通用授權管理平臺的設計與實現[J].中國海洋大學學報,2006,36(6):1013-1018.
[5] Kalam A A E,Baida R E,Balbiani P,et,al.Organization based access control[C]//Policies for Distributed Systems and Networks,2003.Proceedings.POLICY 2003.IEEE 4th International Workshop on,2003:120-131.
[6] Qi Guo,Vaidya J,Atluri V.The Role Hierarchy Mining Problem:Discovery of Optimal Role Hierarchies[C]//Computer Security Applications Conference,2008.ACSAC 2008. Annual,2008:237-246.
[7] How Active Directory Searches Work[EB/OL].http://technet.microsoft.com/en-us/library/cc755809.aspx.