許俊峰,許珊珊,劉 鑫
(杭州電子科技大學理圖形圖像研究所,浙江杭州310018)
近年來,信息管理系統(tǒng)隨著計算機應用技術(shù)的快速發(fā)展變的越來越復雜,系統(tǒng)的安全問題越來越重要,而訪問控制是整個系統(tǒng)安全的重要組成部分。人們提出了各種各樣的滿足系統(tǒng)安全管理需求的訪問控制模型。傳統(tǒng)的訪問控制模型主要包括自主訪問控制模型(Discretionary Access Control,DAC)和強制訪問控制模型(Mandatory Access Control,MAC)等。由Sandhu R提出的RBAC96(Role-Based Access Control,RBAC)模型[1]和ARBAC97模型[2]引進了“角色”的概念。在RBAC模型中,先將訪問權(quán)限先分配給角色,然后再將用戶分配給適當?shù)慕巧?從而獲得相應角色的權(quán)限。但RBAC模型屬于靜態(tài)的分配權(quán)限,它沒有將任務從角色中分離出來[3],而且沒有考慮到工作流[4]。所謂任務,就是在系統(tǒng)中所要進行的操作的統(tǒng)稱。工作流是為完成某一目標而由多個相關(guān)任務(活動)構(gòu)成的業(yè)務流程?;谌蝿盏脑L問控制(Task-Based Access Control,TBAC)模型[5,6]從應用出發(fā),基于工作流建模。TBAC模型依據(jù)任務和任務狀態(tài)的不同,對權(quán)限進行動態(tài)管理,是一種基于實例的訪問控制模型。在RBAC的基礎(chǔ)上Sejong Oh等提出了基于任務和角色的訪問控制模型(Task-role-based Access Control,T-RBAC)已成為目前工作流訪問控制的主要方式。T-RBAC模型不是將訪問權(quán)限分配給角色,而是將訪問權(quán)限分配給任務,然后任務分配給角色[7],用戶通過動態(tài)指派的角色獲取執(zhí)行的任務,進而獲取權(quán)限。
在實際的工作流中,一個工作流實例包含一個或多個任務,對每個任務而言,可能需要多個角色來協(xié)作完成,而且每個角色集中可能包含多個用戶。因為擁有相同角色的用戶間執(zhí)行的任務實例不一定相同,所以任務實例僅通過判斷用戶的角色來動態(tài)分配權(quán)限會導致?lián)碛邢嗤巧牟煌脩糸g的“越權(quán)”訪問。
為解決上述問題,該文根據(jù)RBAC模型和工作流管理系統(tǒng)的特征,提出了基于實例團隊和任務的RBAC訪問控制模型(IGT_RBAC)。
基于實例團隊和任務的RBAC訪問控制(IGT-RBAC)模型在RBAC模型的基礎(chǔ)上引入了實例團隊(Instance Group)和任務(Task)的概念。如圖1所示。
圖1 IGT-RBAC模型圖
該文給出如下形式化定義:
(1)用戶和角色。用戶是指訪問計算機系統(tǒng)資源的主體,通常指人;用USERS表示系統(tǒng)中所有用戶的集合。角色指在企業(yè)組織或者一個任務中某一個用戶擁有或期望擁有的一種職責或地位,用ROLES表示系統(tǒng)中所有角色組成的集合;
(2)權(quán)限。權(quán)限是對計算機系統(tǒng)被保護的數(shù)據(jù)或資源進行訪問和操作的許可,被定義為信息對象和其訪問模式的組合[3];用PERMS表示系統(tǒng)中所有權(quán)限的集合;
(3)任務和會話。任務是一項工作的最小組合,它可以表示為一種權(quán)限的集合;用TASKS表示系統(tǒng)中所有任務的集合。任務在運行中的每一次執(zhí)行(即任務實例),系統(tǒng)就會創(chuàng)建一次會話,用戶通過會話來動態(tài)的激活角色;
(4)權(quán)限和任務分派關(guān)系。任務在執(zhí)行時所需要的最小權(quán)限集。用一個二元組表示PTA(permission-id,task-id),其中PTA?PERMS×TASKS;
(5)任務和角色的分派關(guān)系。一個角色可以執(zhí)行多項任務;一項任務可以分派給多個角色。用一個二元組表示TRA(task-id,role),其中TRA?TASKS×ROLES;
(6)用戶和角色的分派關(guān)系。一個用戶可以擁有多個角色;一個角色可以分派給多個用戶。用一個二元組表示URA(user-id,role),其中URA?USERS×RLOES;
(7)實例團隊分派關(guān)系。用一個三元組表示IGA(task-id,instance-id,users),其中users?USERS。任務每執(zhí)行一次實例,就確定了執(zhí)行本次實例的所有用戶的集合,稱之為本次執(zhí)行的實例團隊;
(8)角色繼承。它定義了企業(yè)內(nèi)部角色間的繼承關(guān)系;
(9)任務繼承。它定義了任務間的繼承關(guān)系,用一個二元組表示TH(task-id,task-id),其中TH?TASKS×TASKS。如果任務T2繼承自任務T1,則的T2的所有團隊成員也必須是T1的成員。
IGT-RBAC模型還遵循以下幾個約束條件:
(1)任務狀態(tài)。對工作流任務來說,包括未啟動狀態(tài),激活狀態(tài),掛起狀態(tài),完成狀態(tài)等。任務只有處于激活狀態(tài)才能激活角色分派權(quán)限,任務處于其它狀態(tài)時即使用戶不能激活自己的角色,也就不能獲取操作權(quán)限;
(2)最小權(quán)限。賦予用戶的權(quán)限不能超過他執(zhí)行任務時所需的權(quán)限。任務在執(zhí)行時,需要先確定執(zhí)行這項任務的最小權(quán)限集,然后將用戶獲取的權(quán)限限制在最小權(quán)限集范圍之內(nèi);
(3)職責分離。任意用戶不能同時擁有兩個互斥的角色,如一個用戶在同一個任務中不能既是申請者,又是該申請的批復者。同一個角色也不可承擔兩個要求權(quán)限分離的任務[8];
(4)任務約束。如果任務Ti和Tj在實例級是互斥的,并且實例Ti和Tj是兩個不同的工作流實例,職責分離原則不允許用戶既執(zhí)行Ti又執(zhí)行Tj。
IGT-RBAC模型的主要思想是將權(quán)限分配給任務,任務執(zhí)行開始時指派實例團隊,再將任務分配給角色,角色通過任務與權(quán)限相關(guān)聯(lián),用戶通過角色和實例團隊獲取權(quán)限。
根據(jù)企業(yè)的層次結(jié)構(gòu)和職權(quán)抽象出角色,確定用戶和角色的分派關(guān)系(URA)。對工作流任務來說,任務都具有相應的操作權(quán)限,任務將執(zhí)行任務的權(quán)限分派給角色(TRA)。在實際應用中,任務只有被實例化后才能執(zhí)行,但角色的分派只與任務有關(guān)而與任務實例無關(guān)。任務在實例化的時候確定完成本次任務的用戶集合,即實例團隊(IG?USERS)。
用戶在任務實例化后才能激活自己的角色,進而獲取執(zhí)行該任務的權(quán)限,因而權(quán)限的分配是動態(tài)的。用戶獲取權(quán)限的過程如圖2所示。
圖2 IGT-RBAC中用戶獲取權(quán)限過程
在建筑協(xié)同設計流程中,可以將一個小區(qū)的建筑規(guī)劃設計看作是一個項目,而小區(qū)里每幢樓的規(guī)劃設計稱為該項目的一個單體。在實際實現(xiàn)時,整個項目有一個總的設計流程,每個單體也都有自己獨立的單體流程,通過單體流程來分析IGT-RBAC模型的權(quán)限分派過程:
單體流程有個主流程:啟動節(jié)點、階段一的節(jié)點5、階段二的節(jié)點9,結(jié)束節(jié)點。每個專業(yè)的每個階段都有一個子流程:其中階段一包括節(jié)點1到節(jié)點4;階段二包括節(jié)點6到節(jié)點8。主流程啟動后,各專業(yè)流程隨主流程啟動而開始執(zhí)行,且各自獨立運行互不影響。當所有專業(yè)的節(jié)點4都執(zhí)行完后交回主流程的節(jié)點5;所有專業(yè)的節(jié)點8都執(zhí)行完后交回主流程的節(jié)點9。主流程的節(jié)點9執(zhí)行完后整個流程結(jié)束。由于采用的是狀態(tài)機工作流,可以根據(jù)流程邏輯設置流程中的任一節(jié)點的跳轉(zhuǎn)狀態(tài),使其執(zhí)行完后跳轉(zhuǎn)到該流程中的任一其它節(jié)點。
單體的流程如表1所示:其中0表示未執(zhí)行,箭頭表示正在執(zhí)行,1表示已執(zhí)行,每一個小方格定義為一個節(jié)點。
表1 單體流程示意圖
IGT-RBAC模型對工作流系統(tǒng)的訪問控制是從用戶登錄系統(tǒng)后對某一個想要進行操作的任務實例的節(jié)點的訪問申請開始,首先通過用戶的登錄信息獲取系統(tǒng)中用戶的當前激活的角色集以判斷是否有執(zhí)行該任務的權(quán)限,再檢查該任務實例的狀態(tài)并根據(jù)不同的狀態(tài)得到可對該任務實例節(jié)點的操作集合及執(zhí)行該任務的角色集合,比如任務處于完成狀態(tài)則僅可能有查看權(quán)限等,然后比較用戶的激活角色集和執(zhí)行節(jié)點任務所需的角色集,如果該節(jié)點所需角色集為用戶當前激活角色集的子集則說明該用戶已經(jīng)擁有了執(zhí)行該任務所需的角色要求,最后再比較該用戶是否屬于執(zhí)行該任務的實例團隊,若屬于則根據(jù)得到的該任務節(jié)點的操作集合賦予用戶執(zhí)行該任務應有的最小權(quán)限集。
建筑協(xié)同設計工作流系統(tǒng)中當前用戶對某任務節(jié)點提出訪問申請后系統(tǒng)驗證用戶能否獲取權(quán)限的具體實現(xiàn)步驟如下:
(1)執(zhí)行BoolAssignPerm ission(user-id,task-id,instance-id,node-id)函數(shù)檢查用戶能否成功獲取權(quán)限,該函數(shù)返回一個布爾值,若為true獲取成功,false則獲取失敗,具體步驟如下。
1)根據(jù)URA策略,系統(tǒng)調(diào)用GetUserActiveRoleSet(user-id)檢查并記錄該用戶可以激活的角色集userRoles;
2)系統(tǒng)調(diào)用GetTaskInstanceStatus(task-id,instance-id,node-id)獲取任務節(jié)點的當前狀態(tài),如果為終止狀態(tài)則直接返回false,否則根據(jù)不同的狀態(tài)得到相應狀態(tài)調(diào)用GetTaskRolesInfo(task-id,node-id)獲取任務角色信息taskRoles;
3)判斷taskRoles是否為userRoles的一個子集,是則轉(zhuǎn)到(4);否則返回false;
4)根據(jù)IGA策略,通過調(diào)用GetInstanceGroup(task-id,instance-id)得到該任務實例的實例團隊ins-Group;如果user-id屬于insGroup,轉(zhuǎn)(5);否則返回false;
5)調(diào)用CheckUserCurConstraints(user-id,instance-id,node-id)檢查用戶當前的約束,若滿足當前約束條件,則返回true;否則返回false;
(2)若步驟1返回true,說明該用戶可以擁有與該任務節(jié)點相關(guān)的權(quán)限,然后需要執(zhí)行GetMessageAllowed(instance-id)以遍歷工作流當前正在執(zhí)行的狀態(tài)中已經(jīng)啟用的活動,如果當前活動節(jié)點已經(jīng)啟用并且是一個事件驅(qū)動活動,則執(zhí)行FindMessageAllowed(compositeActivity,messages)方法找到該活動允許的所有事件名,即用戶在該任務節(jié)點上可以執(zhí)行的事件列表,最后根據(jù)TPA策略,調(diào)用GetTaskPermissions(task-id,node-id,event-id)分派給該用戶執(zhí)行任務時的最小操作權(quán)限集permissions;至此用戶可以根據(jù)得到的權(quán)限集(permissions)執(zhí)行相關(guān)的操作。若步驟1返回false,則用戶獲取權(quán)限失敗,結(jié)束。
該文提出了一種基于實例團隊和任務的RBAC訪問控制模型,并成功應用在某建筑設計院工作流管理系統(tǒng)中。IGT-RBAC模型對權(quán)限的分派不僅僅是根據(jù)用戶動態(tài)激活的角色,而是通過增加實例團隊的概念來分派權(quán)限,有效地防止了激活不同任務實例的擁有相同角色的不同用戶非法訪問不屬于自己實例的資源,提高了系統(tǒng)的安全性。
[1] Sandhu R,Coyne E J.Role—based access controlmodels[J].IEEECom puter,1996,29(2):38-47.
[2] Sandhu R S,Bhamidipati V,Munawer Q.The ARBAC97model for role-based adm inistration of roles[J].ACM Trans,1999,2(1):105-135.
[3] Sejong Oh,Seog Park.Task-role-based access controlmodel[J].In formation Systems,2003,28(5):533–562.
[4] 范玉順.工作流管理技術(shù)基礎(chǔ)[M].北京:清華大學出版社,2001:7-13.
[5] 鄧集波,洪帆.基于任務的訪問控制模型[J].軟件學報,2003,14(1):76-81.
[6] Thomas R.K.,Sandhu R S.Task-based authorization controls(TBAC):a fam ily ofmodels for active and enterprise-oriented authorizationmanagement[C].London:Chapman&Hall:International Federation for Information Processing,1997,166-181.
[7] Workflow Management Coalition.The workflow reference model[R].W inchester:WfMC,1995,1-55.
[8] 宋善德,劉偉.基于任務-角色的訪問控制模型[J].計算機工程與科學,2005,27(6):4-9.