摘要:提出了一個(gè)工作流管理中基于規(guī)則策略的訪問(wèn)控制模型,給出了規(guī)則模型的集合表達(dá)和定義,重點(diǎn)分析了規(guī)則解釋器的實(shí)現(xiàn)和關(guān)鍵算法,最后給出了一個(gè)應(yīng)用。
關(guān)鍵詞: 工作流管理系統(tǒng); 訪問(wèn)控制; 基于角色的訪問(wèn)控制; 規(guī)則表達(dá)式
中圖分類(lèi)號(hào):TP309文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1001-3695(2008)03-0885-03
工作流管理系統(tǒng)是一個(gè)快速發(fā)展的領(lǐng)域,它使用戶可以設(shè)計(jì)、分析、執(zhí)行和監(jiān)控其業(yè)務(wù)過(guò)程,對(duì)流程進(jìn)行高效管理。隨著工作流管理系統(tǒng)的應(yīng)用日趨廣泛,其安全問(wèn)題引起了人們?cè)絹?lái)越多的關(guān)注。信息安全的基本服務(wù)為認(rèn)證、機(jī)密性、訪問(wèn)控制、數(shù)據(jù)完整和不可否認(rèn),受保護(hù)的數(shù)據(jù)有工作流控制數(shù)據(jù)、工作流相關(guān)數(shù)據(jù)和工作流應(yīng)用數(shù)據(jù)。本文關(guān)注的是應(yīng)用數(shù)據(jù)的訪問(wèn)控制保護(hù)。
當(dāng)前在工作流管理系統(tǒng)中進(jìn)行應(yīng)用數(shù)據(jù)訪問(wèn)控制的主要是RBAC機(jī)制。為了實(shí)現(xiàn)與業(yè)務(wù)邏輯相關(guān)的細(xì)粒度權(quán)限控制,通用做法是提供一種上下文敏感的能夠擴(kuò)展到較細(xì)粒度的訪問(wèn)控制模型。例如,文獻(xiàn)[1]通過(guò)向工作流引擎提交角色屬性認(rèn)證的方法,提出了一種在不影響現(xiàn)有網(wǎng)絡(luò)工作流系統(tǒng)的前提下使用RBAC的實(shí)驗(yàn)框架,保證了任務(wù)和過(guò)程只能由限定的用戶完成。文獻(xiàn)[2]將訪問(wèn)許可歸結(jié)為實(shí)體之間的沖突,提出了沖突實(shí)體管理范式(conflicting entities administration paradigm,CoAP),很好地解決了工作流環(huán)境中的責(zé)任分離問(wèn)題。在細(xì)化控制目標(biāo)粒度、歸納訪問(wèn)控制約束、擴(kuò)展RBAC模型以適應(yīng)對(duì)工作流應(yīng)用數(shù)據(jù)嚴(yán)格保護(hù)的過(guò)程中,人們做了很多有意義的工作。例如,文獻(xiàn)[3]從一個(gè)醫(yī)護(hù)領(lǐng)域的例子出發(fā),提出了工作流系統(tǒng)中基于謂詞表達(dá)式的訪問(wèn)控制模型。文獻(xiàn)[4]中定義了一種以邏輯程序檢查授權(quán)規(guī)約的語(yǔ)言,并基于該語(yǔ)言提出了角色分配計(jì)劃算法。該算法得到一個(gè)將角色和用戶分派到不同任務(wù)的計(jì)劃,從而滿足相關(guān)的訪問(wèn)許可。文獻(xiàn)[5]將工作流看做綁定了授權(quán)規(guī)約的任務(wù)集合的視圖,認(rèn)為訪問(wèn)控制的各種規(guī)約可以由通用形式即分配規(guī)約(entailment constraint)表示,從而將工作流管理信息和訪問(wèn)控制信息更好地結(jié)合起來(lái)。文獻(xiàn)[6]給出了如何利用應(yīng)用程序中的上下文信息作出訪問(wèn)控制判斷的抽象描述,并以一種面向?qū)ο蟮恼Z(yǔ)言為例實(shí)現(xiàn)了與上下文相關(guān)的細(xì)粒度權(quán)限的限制。這些研究通常以特定的應(yīng)用場(chǎng)景為出發(fā)點(diǎn),使用不同的實(shí)現(xiàn)形式如謂詞表達(dá)式[3]、規(guī)約定義語(yǔ)言[4]、分配規(guī)約[5]、上下文約束[6]等,很好地解決了權(quán)限分離的問(wèn)題。但是工作流管理系統(tǒng)中的業(yè)務(wù)規(guī)則千差萬(wàn)別,通常不能使用語(yǔ)言或算法等方法進(jìn)行一般化處理,需要一個(gè)具有更強(qiáng)表達(dá)能力的系統(tǒng)來(lái)表示各種復(fù)雜的授權(quán)。
筆者認(rèn)為各種訪問(wèn)許可規(guī)則均可以被抽象為規(guī)則表達(dá)式,由此提出了一個(gè)工作流管理中基于規(guī)則策略的訪問(wèn)控制模型,將訪問(wèn)許可規(guī)則從工作流管理系統(tǒng)中分離出來(lái),構(gòu)建了一個(gè)相對(duì)獨(dú)立的規(guī)則表達(dá)式系統(tǒng)模型,從而提供靈活、
獨(dú)立、可復(fù)用的授權(quán)規(guī)則管理。
1規(guī)則模型
1.1工作流訪問(wèn)控制模型
基于角色的工作流環(huán)境中,訪問(wèn)控制模型一般定義為[7,8]
M={roles,users,sessions,permissions,tasks,process}。
該多元組中的元素為:
roles表示角色集合,通常指在一個(gè)組織背景下的職能,根據(jù)授權(quán)附有相關(guān)語(yǔ)義;
users表示用戶集合;
sessions表示會(huì)話集合,它是用戶使用系統(tǒng)的特定實(shí)例,定義了一個(gè)活動(dòng)角色的子集;
OBJS表示對(duì)象的集合;
OPS表示對(duì)對(duì)象實(shí)施訪問(wèn)操作的集合,如創(chuàng)建、修改、刪除、查看、更新等;
permissionsOBJS×OPS表示權(quán)限集合,是對(duì)象與操作之間的多對(duì)多關(guān)系;
tasks表示一個(gè)工作流中任務(wù)的集合;
process=2tasks表示業(yè)務(wù)流程,它是由若干任務(wù)組成的集合。
1.2規(guī)則模型的集合表達(dá)
在工作流訪問(wèn)控制模型的基礎(chǔ)上,參照RBAC標(biāo)準(zhǔn)[9],本文定義規(guī)則模型為
M={operands,operators,rules}。
該多元組中的元素為:
constants是常量集合;
attributes是實(shí)體對(duì)象的安全屬性集合,環(huán)境變量看做是sessions的安全屬性;
operands=constantsuattributes表示操作數(shù)集合;
operators表示運(yùn)算符集合,包括比較運(yùn)算符、集合運(yùn)算符、布爾運(yùn)算符等;
domain(oprnd:operands)是獲得操作數(shù)運(yùn)算的值域的函數(shù);
domain(oprtr:operators)是獲得操作符運(yùn)算的值域的函數(shù);
rules=2operands×operators, c∈rules: c|→{(oprnd1,…, oprndsx,oprtr)| oprnd1,…, oprndsx∈operands,oprtr∈operators}∧{domain(oprnd1)∪…∪ domain(oprndsx)domain(oprtr)},表示規(guī)則集合;
permissionAssignmentspermissions×roles表示角色與權(quán)限的多對(duì)多分配關(guān)系;
userRoleAssignmentsusers×roles表示用戶與角色的多對(duì)多關(guān)系;
taskParticipantstasks×roles表示角色參與完成任務(wù)的多對(duì)多關(guān)系;
taskAssignmentstasks×users表示任務(wù)分配到用戶的多對(duì)多關(guān)系;
authentications={permissions, permissionAssignments, userRoleAssignments, taskParticipants,taskAssignments }是工作流實(shí)體之間的關(guān)系,統(tǒng)一稱(chēng)之為授權(quán);
constraintedAuthentica ̄tionsauthentications×rules表示受規(guī)則約束的授權(quán)。
在這個(gè)定義下,工作流可以看做是一組有序的taskParticipant的集合,訪問(wèn)控制可以看做對(duì)授權(quán)authentications的規(guī)則約束檢查,即是否限制在constraintedAuthentications中。從文獻(xiàn)[10]中的論述可以看到,各種策略規(guī)則可以形式化為操作數(shù)集合上的關(guān)系、集合與布爾運(yùn)算和訪問(wèn)許可位元(permission bit)的配對(duì),表示對(duì)任務(wù)分配和對(duì)象訪問(wèn)的允許或禁止。
1.3規(guī)則的定義
本文對(duì)規(guī)則模型中具體授權(quán)規(guī)則的定義如下:
operands:
〈wfEntity〉 ::= 〈atomVariable〉|〈wfFun〉 ′(′ 〈wfEntity〉 {,〈wfEntity〉} ′)′
〈wfSet〉 ::= 〈setVariable〉|′(′ 〈wfEntity〉 {,〈wfEntity〉} ′)′
operators:
〈compareExp〉 ::= 〈wfEntity〉 〈comOp〉 〈wfEntity〉
其中:〈ComOp〉 ::= ′=′ | ′<>′ | ′>′ | ′≥′ | ′<′ | ′≤′
〈setExp〉 ::= 〈wfEntity〉 〈elementOp〉〈 wfSet〉 | 〈wfSet〉 〈setOp〉 〈wfSet〉
其中:〈elementOp〉 ::=′∈′|′′,〈setOp〉 ::= ′′|′′|′′
〈andExp〉 ::= 〈rule〉 ′and′ 〈rule〉
〈orExp〉 ::= 〈rule〉 ′or′ 〈rule〉
〈notExp〉 ::= ′not′ 〈rule〉
rules:
〈rule〉 ::= 〈compareExp〉| 〈setExp〉 | 〈andExp〉 | 〈orExp〉 | 〈notExp〉
一條規(guī)則是比較、集合或布爾運(yùn)算的一種。規(guī)則可以由工作流實(shí)體之間的比較運(yùn)算獲得,也可以由實(shí)體和實(shí)體集合以及實(shí)體集合之間的集合運(yùn)算獲得,還可以對(duì)規(guī)則進(jìn)行布爾運(yùn)算以產(chǎn)生新的規(guī)則。
采用這個(gè)規(guī)則表達(dá)式定義可以充分滿足復(fù)雜授權(quán)規(guī)則的需求。例如規(guī)則R1,如果一個(gè)當(dāng)前角色為“申請(qǐng)登記”的用戶U執(zhí)行了任務(wù)T1,那么他不能執(zhí)行任務(wù)T2,可以表示為 P(R1)=not(((u|→t1) ∈taskRoleParticipant)∧((u|→t2)∈taskRoleParticipant)∧((u|→Rregister)∈userRoleAssignments))。
2規(guī)則解釋器的實(shí)現(xiàn)
本文中使用規(guī)則解釋器實(shí)現(xiàn)訪問(wèn)控制模型,從而提供細(xì)粒度、可復(fù)用的授權(quán)規(guī)則管理。模型實(shí)現(xiàn)如圖1所示。
圖1Rule解釋器
圖1中rule類(lèi)是一個(gè)抽象表達(dá)式類(lèi),抽象表達(dá)式聲明了一個(gè)抽象的規(guī)則解釋操作。其中:_conflictEntities是實(shí)體變量wfEntity的集合,它定義了對(duì)應(yīng)規(guī)則的沖突實(shí)體集,由一個(gè)hash_map模板容器類(lèi)實(shí)現(xiàn)。Rule的兩個(gè)主要成員函數(shù):a)是求值函數(shù)evaluate,即在某個(gè)上下文環(huán)境中計(jì)算rule的值。Rule中的變量在規(guī)則解釋時(shí)由上下文對(duì)象context根據(jù)當(dāng)前rule涉及的工作流實(shí)體wfEntity或?qū)嶓w集合wfSet進(jìn)行賦值。b)替換函數(shù)replace,即用一個(gè)規(guī)則替代其他規(guī)則中的一個(gè)變量以產(chǎn)生新的規(guī)則,從而可以表示復(fù)雜多變的授權(quán)規(guī)則。
Context是一個(gè)全局類(lèi),表示運(yùn)行解釋時(shí)所需的上下文實(shí)例,如當(dāng)前用戶、執(zhí)行的任務(wù)、執(zhí)行的操作以及操作對(duì)象和其他環(huán)境變量等。運(yùn)行時(shí)為了將對(duì)象OBJS的操作OPS和規(guī)則表達(dá)式中的操作數(shù)關(guān)聯(lián),筆者使用了一種稱(chēng)為對(duì)象信息映射的機(jī)制。這種機(jī)制對(duì)于所有的工作流實(shí)體和應(yīng)用對(duì)象都實(shí)現(xiàn)了一個(gè)注冊(cè)方法,每個(gè)注冊(cè)方法都會(huì)對(duì)應(yīng)于一個(gè)規(guī)則系統(tǒng)中的一個(gè)操作數(shù)。例如,在對(duì)象操作OPS中,對(duì)象屬性對(duì)應(yīng)規(guī)則表達(dá)式中的簡(jiǎn)單操作數(shù),對(duì)象函數(shù)對(duì)應(yīng)規(guī)則表達(dá)式中的復(fù)雜操作數(shù),從而建立了從對(duì)象操作OPS到規(guī)則運(yùn)算表達(dá)式操作數(shù)的映射。相關(guān)的規(guī)則運(yùn)算將會(huì)限制在對(duì)象OBJS這個(gè)抽象層次上。
WfEntity可以是rule中的一個(gè)變量t,也可以是一個(gè)常量,如某個(gè)任務(wù)T1,還可以作為實(shí)體函數(shù)wfFun的參數(shù)或結(jié)果。WfSet是wfEntity的集合,它可以是一個(gè)實(shí)體函數(shù)wfFun的返回值,也可以是一個(gè)集合常量。
RuleAtomOperand是一個(gè)抽象表達(dá)式的操作數(shù),作為抽象表達(dá)式rule的子類(lèi)compareExp或setExp的成員變量被實(shí)現(xiàn)。RuleSetOperand是若干ruleAtomOperand的集合,用于完成集合運(yùn)算終結(jié)符的解釋。
CompareExp表示wfEntity之間的比較表達(dá)式。WfEntity的比較包括是否相等,對(duì)應(yīng)于定義中的“=”“<>”;對(duì)于角色實(shí)體來(lái)說(shuō)還有可能表示繼承關(guān)系;對(duì)于任務(wù)來(lái)說(shuō)可能表示組成任務(wù)的子任務(wù)和這個(gè)任務(wù)之間的隸屬關(guān)系,對(duì)應(yīng)于定義中的“>”“<”,等等。
SetExp表示元素包含elementOfExp和集合包含setCompareExp兩種集合表達(dá)式。元素包含表示一個(gè)實(shí)體wfEntity和一個(gè)wfSet之間的包含關(guān)系。當(dāng)wfEntity是wfSet的一個(gè)元素時(shí),對(duì)應(yīng)于定義中的wfEntityWfSet。集合包含表示兩個(gè)實(shí)體集合wfSet之間的包含關(guān)系。
AndExp、notExp、orExp是非終結(jié)符表達(dá)式。它們使用一個(gè)抽象的rule指針,各自維護(hù)了一組rule實(shí)例變量作為操作數(shù)并對(duì)其作布爾運(yùn)算。這個(gè)rule指針可能指向它們自身、compareExp或setExp。
3關(guān)鍵算法
在任務(wù)分配過(guò)程assignUsertoTask中,將任務(wù)task分配給用戶user時(shí)作授權(quán)規(guī)則檢查。它首先檢查用戶是否具有執(zhí)行任務(wù)所需的角色權(quán)限,滿足條件后再檢查相應(yīng)的授權(quán)規(guī)則。如果成功則返回對(duì)應(yīng)的taskAssignment,空對(duì)象表示不符合規(guī)則約束。
TaskAssignment * assignUsertoTask (user : ID,task : ID) {
boolean lb_passed=true;
lb_passed=checkUserQualified(user, task);
//檢查user是否具有執(zhí)行任務(wù)所需的角色權(quán)限
if lb_passed //如果具有執(zhí)行任務(wù)的角色,檢查相應(yīng)的授權(quán)規(guī)則
{//獲得與任務(wù)task相關(guān)的taskAssignment授權(quán)關(guān)系集合
Authentications=task.getTaskAssignments();
/*獲得與用戶user相關(guān)的taskAssignment授權(quán)關(guān)系集合,并與authentications集合合并*/
Authentications=authentications∪user.getTaskAssignments();
for every authentication in authentications{
//對(duì)于authentications集合中的每個(gè)authentication,獲取對(duì)應(yīng)規(guī)則
rule=GetAuthenticationRule(Authentication);
lb_passed = rule.Evaluate(); //得到規(guī)則的運(yùn)算結(jié)果
if !(lb_passed) exit; //若授權(quán)失敗,跳出循環(huán)結(jié)束任務(wù)分配
}
if lb_passed //若授權(quán)成功,分配任務(wù)
newTaskAssignment = new TaskAssignment(task, user);
else
newTaskAssignment=1; //否則返回失敗標(biāo)志
return newTaskAssignment;
}
其中:檢查用戶是否具有執(zhí)行任務(wù)的角色權(quán)限,是任務(wù)分配的前提。
Boolean checkUserQualified(user: ID, task: ID){
Boolean lb_passed=1;
UserRoles=assignedUserRoles(user);
//獲得用戶所能扮演的角色集合
TaskRoles=participantTaskRoles(task);
//獲得完成任務(wù)所需具備的角色集合
if taskRolesuserRoles
//判斷用戶扮演的角色集合包括完成任務(wù)所需的角色集合
lb_passed = true;//用戶具有執(zhí)行任務(wù)的資格
else
lb_passed = 1;//否則,用戶不具備執(zhí)行任務(wù)的資格
return lb_passed;
}
在對(duì)象訪問(wèn)過(guò)程中,對(duì)象層次上的規(guī)則檢查chessAccess在用戶申請(qǐng)對(duì)對(duì)象進(jìn)行操作時(shí)觸發(fā)。它根據(jù)用戶、對(duì)象及操作來(lái)判斷訪問(wèn)控制結(jié)果。首先判斷當(dāng)前用戶要求的對(duì)象操作是否屬于用戶的權(quán)限集合;其次判斷相關(guān)的授權(quán)規(guī)則是否滿足。
Boolean checkAccess(user: ID, ojbect: ID, operation: ID){
boolean lb_passed=true;
new permissionUnderCheck(object, operation);
//得到用戶要求的權(quán)限
Permissions=userPermissions(user); //得到用戶所具有的權(quán)限
//判斷用戶是否具有要求的權(quán)限
if permissionUnderCheckepermissions{
//這里的授權(quán)就是指用戶所具有的對(duì)象上的權(quán)限
Authentications=permissions
for every authentication in authentications{
//對(duì)于authentications集合中的每個(gè)authentication,獲取對(duì)應(yīng)規(guī)則
rule=getAuthenticationRule(authentication);
lb_passed = rule.Evaluate(); //得到規(guī)則的運(yùn)算結(jié)果
if ! lb_passed exit; //如果為1,跳出循環(huán),禁止用戶訪問(wèn)
}
}
else
lb_passed = 1;//禁止用戶訪問(wèn)和操作
return lb_passed
}
4結(jié)束語(yǔ)
本文給出了工作流管理系統(tǒng)中訪問(wèn)控制的規(guī)則表達(dá)。其中規(guī)則解釋器的操作數(shù)由工作流實(shí)體類(lèi)提供,使用實(shí)體類(lèi)提供的各種函數(shù),通過(guò)對(duì)象信息映射系統(tǒng)將其映射到規(guī)則表達(dá)式系統(tǒng)中,所以規(guī)則表達(dá)式具有很靈活的表達(dá)能力,可以表示各種特定應(yīng)用的授權(quán)規(guī)則。
在筆者開(kāi)發(fā)的法院信息化工程法院綜合信息系統(tǒng)中,建立和應(yīng)用了基于規(guī)則策略的訪問(wèn)控制模型。法院綜合信息系統(tǒng)是在江蘇省和天津市100多家法院使用的基于關(guān)系數(shù)據(jù)庫(kù)Sybase的大型應(yīng)用系統(tǒng)。法院的業(yè)務(wù)有很強(qiáng)的流程性,其承辦人變更、審限管理等流程中涉及的訪問(wèn)許可規(guī)則會(huì)根據(jù)不同法院的管理模式而變化,而且針對(duì)不同的數(shù)據(jù)對(duì)象會(huì)有不同的操作權(quán)限限制,所以對(duì)訪問(wèn)控制提出了較為復(fù)雜的要求。本文使用工作流來(lái)對(duì)業(yè)務(wù)過(guò)程進(jìn)行建模,并將應(yīng)用數(shù)據(jù)的所有授權(quán)規(guī)則存放在一個(gè)規(guī)則庫(kù)中。這些規(guī)則根據(jù)應(yīng)用程序的上下文配置,由會(huì)話期間的對(duì)象訪問(wèn)事件觸發(fā),使用獨(dú)立的規(guī)則解釋器進(jìn)行解釋?zhuān)芎玫睾?jiǎn)化了業(yè)務(wù)過(guò)程中的授權(quán)管理。而且使用者可以根據(jù)本法院不同的流程和權(quán)限設(shè)置修改授權(quán)規(guī)則,從而提高了系統(tǒng)的授權(quán)靈活性。
參考文獻(xiàn):
[1]AHN G J, SANDHU R, KANG M, et al. Injecting RBAC to secure a Webbased workflow[C]//Proc of the 5th ACM Workshop on Rolebased Access Control. 2000:110.
[2]BOTHA R A, ELOFF J H P. Separation of duties for access control enforcement in workflow environment[J]. IBM System Journal EndtoEnd Security, 2001,40(3):666-682.
[3]WU S L, SHETH A, MILLER J, et al. Authorization and access control of application data in workflow systems[J]. Journal of Intelligent Information System, 2002,18(1):71-94.
[4]BERTINO E, FERRARI E, ATLURI V. The specification and enforcement of authorization constrains in workflow management systems[J]. ACM Transactions on Information and System Security, 1999,2(1):65104.
[5]CRAMPTON J. On the satisfiablility of constraints in workflow systems[EB/OL].(2004). http://www.rhul.ac.uk/ mathematics/techreports.
[6]STREMBECK M, NEUMANN G. An integrated approach to engineer and enforce context constraints in RBAC environments[J]. ACM Transactions on Information and System Security, 2004,7(3):392-427.
[7]ESSMArR W, PROBST S, WEIPPL E. Rolebased access controls: status, disseminations, and prospects for generic security mechanisms[J]. Electronic Commerce Research, 2004, 4(1-2):127156.
[8]BOTHA R A. CoSAWoE:a model for context sensitive access control in workflow environments[D]. [S.l.]: Department of Computer Science, Rand Afarikanns University, 2001: 79-85.
[9]FERRAIOLO D F, SANDHU R, GAVRILA S. Proposed NIST stan ̄dard for rolebased access control[J]. ACM Transactions on Information and System Security, 2001,4(3):224-274.
[10]COVINGTON M J, LONG Wende, SRINIVASAN S. Securing contextaware applications using environment roles[C]//Proc of the 6th ACM Symposium on Access Control Models and Technologies. 2001: 10-20.
“本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文”