張榮榮,甘清華
1(河南師范大學(xué) 軟件學(xué)院,新鄉(xiāng) 453007)
2(易思科訊(深圳)有限公司 研發(fā)部,深圳 518057)
隨著Internet 網(wǎng)絡(luò)的普及,信息安全是企業(yè)的頭等大事[1].有效的權(quán)限機(jī)制是充分發(fā)揮系統(tǒng)功能的前提.現(xiàn)代企業(yè)越來越體現(xiàn)為多公司、多工廠、多地點的集團(tuán)化發(fā)展模式,管理復(fù)雜,涉及人員多,職能多,分工細(xì)致,對權(quán)限控制的要求越來越高、越來越細(xì),而且企業(yè)的業(yè)務(wù)變化也變得越來越快.因此,具有可復(fù)用性和可擴(kuò)展性的功能完善的權(quán)限機(jī)制是一個企業(yè)信息系統(tǒng)必不可少的部分.近些年,對于企業(yè)級別安全管理的研究得到普遍關(guān)注[2-4],但是目前基于角色訪問控制(RBAC)的授權(quán)模式權(quán)限體系,大部分只能針對設(shè)定的組織內(nèi)進(jìn)行權(quán)限控制,有的也可以在不同組織之間復(fù)制角色授權(quán),但是彼此之間缺乏聯(lián)系.當(dāng)新增加業(yè)務(wù)涉及到新部門或者新第三方的時候,這些授權(quán)模式就很難滿足企業(yè)的要求.本文在RBAC 的基礎(chǔ)上,引入組織,實現(xiàn)三維授權(quán),快速響應(yīng)業(yè)務(wù)的變化.
權(quán)限管理主要有3 種方法[4,5]:(1) 基于安全級別、集中管理的強(qiáng)制訪問控制(Mandatory Access Control,MAC),它的主要特征是對所有主體及其所控制的客體實施強(qiáng)制訪問控制.它為這些主體及客體指定敏感標(biāo)記,然后,系統(tǒng)通過這些標(biāo)記來決定一個主體是否能夠訪問某個客體,因此,系統(tǒng)可以防止特洛伊木馬的攻擊.MAC 對專用的或簡單的系統(tǒng)安全保護(hù)是有效果,但對通用、大型系統(tǒng)不太有效果;(2) 基于授權(quán)規(guī)則、自主管理的自主訪問控制(Discretionary Access Control,DAC),它是指主體對客體進(jìn)行管理,由主體決定是否將客體訪問的權(quán)限或者部分訪問權(quán)限授權(quán)給其他主體,因此,主體定義自我客體的訪問權(quán)限時,不會影響到其他客體,但是,DAC 為了最大程度的適應(yīng)系統(tǒng)應(yīng)用過程,一般會對權(quán)限定義得較低,用以保證任何主體在訪問過程中不會出現(xiàn)無法訪問的問題,所以DAC 一般適用于通用的、大型系統(tǒng),對于安全性要求不是太高的系統(tǒng);(3)基于角色的訪問控制(RBAC)[6],其中RBAC96和ARBAC97 是RBAC 領(lǐng)域的基準(zhǔn)模型,ARBAC97提出了模型內(nèi)自我管理和分布式管理的思想,但是存在管理遞歸問題.SARBAC 和ARBAC02 是針對ARBAC97 改進(jìn)的訪問控制模型.SARBAC 模型提出了管理范圍(Administrative Scope)的概念,設(shè)計了專門用于管理角色層次關(guān)系的RHA 系列,包括RHA1、RHA2、RHA3、RHA4;ARBAC02 保留了ARBAC97模型的主要特征,增加了新的概念—組織結(jié)構(gòu),改進(jìn)了粗粒度授權(quán).然而,目前很多企業(yè)的業(yè)務(wù)變化比較快,需要迅速調(diào)整業(yè)務(wù)流程,一般的基于RBAC 的授權(quán)很難對新的業(yè)務(wù)流程進(jìn)行管控.
本文在RBAC 的基準(zhǔn)模型基礎(chǔ)上引入了組織和角色組,增加授權(quán)的維度,以求解決對新部門或者涉及新的第三方的權(quán)限授權(quán)問題.本文中組織區(qū)別于ARBAC97中引進(jìn)的組織結(jié)構(gòu),除了隔離權(quán)限,還包括隔離業(yè)務(wù)流程和基礎(chǔ)資料等,并引入組織之間關(guān)系(匯報關(guān)系,上下級關(guān)系等),增加一個組織就相當(dāng)于增加了一套相對獨立的業(yè)務(wù)系統(tǒng).這套系統(tǒng)又是跟其他組織之間存在著信息流、物流和資金流的同步和互通,能快速地響應(yīng)業(yè)務(wù)變化.組織從微觀講是一個公司內(nèi)的不同業(yè)務(wù)部門,例如財務(wù)部門,采購部門,銷售部門等;從宏觀來講,是不同的公司,供應(yīng)商,工廠等,組織起到隔離公司業(yè)務(wù)權(quán)限、流程和基礎(chǔ)資料等功能,方便子公司擴(kuò)展和集團(tuán)的戰(zhàn)略調(diào)整.角色組是多個互斥角色的集合,能給小企業(yè)和個體用戶在單用戶下集中管理業(yè)務(wù).
總的來說,在RABC 的基礎(chǔ)上,引入組織概念,把角色、業(yè)務(wù)流等基本環(huán)境隔離到不同的維度,可以快速地響應(yīng)集團(tuán)公司業(yè)務(wù)變化.角色組則是把業(yè)務(wù)和角色集中到同一維度,方便對小企業(yè)和個體用戶的集中管理.
權(quán)限策略的基本思路:首先權(quán)限依賴于組織,每個組織具有不同屬性,綁定不同業(yè)務(wù),對應(yīng)不同的業(yè)務(wù)權(quán)限,所以,組織決定權(quán)限.同時,用戶被組織所隔離,用戶在組織中行使權(quán)限,因此,角色組織中隔離、脫離了組織的角色是無意義的;其次,角色組,角色,用戶和權(quán)限都是被組織分隔在不同的環(huán)境中的,用戶對應(yīng)著角色或者角色組,權(quán)限對應(yīng)著角色或者直接對應(yīng)著用戶.
組織分為控制單元和業(yè)務(wù)單元,控制單元是用于劃分不同獨立財務(wù)核算的公司或者子公司的操作單元.每個控制單元隔離不同組織的財務(wù)核算;業(yè)務(wù)單元是具有業(yè)務(wù)功能的組織單元,對應(yīng)相應(yīng)抽象的業(yè)務(wù)權(quán)限,每個單元下都有若干角色或者包含多個角色的角色組,每個角色有若干權(quán)限,同時每個單元下面又有可能有多個不同團(tuán)隊(用戶組),每個用戶組具有相應(yīng)不同權(quán)限.宏觀的層次大概分為:組織->權(quán)限、業(yè)務(wù)單元->權(quán)限、角色(組)->權(quán)限、用戶組->權(quán)限,如圖1所示.下面從微觀的角度分析角色之間關(guān)系,組織和組織之間的關(guān)系,角色與組織之間關(guān)系.
圖1 多維權(quán)限結(jié)構(gòu)圖
角色的設(shè)計遵循RBAC96 和ARBAC97 的模式[7]:
(1)角色之間存在父子關(guān)系,但跟面向?qū)ο蟮睦^承有所不同,父角色擁有子角色的全部公共權(quán)限,但不能訪問子角色的私用權(quán)限.
(2)一個用戶可以擁有多個角色,但是不能存在互斥的角色,互斥角色就是防止用戶作假,例如審核員與采購員互斥,財務(wù)會計與銷售員互斥等.
(3)角色組是一組角色的組合,這是為需要多個角色的用戶方便授權(quán)而設(shè)計的.登陸到系統(tǒng)中只能有一個角色,但是該用戶可以自行切換到相應(yīng)角色,執(zhí)行相應(yīng)操作.
角色依賴于一個組織,角色只能在某個組織(公司)下建立.一般一個公司常用的組織有財務(wù)組織、采購組織、銷售組織,庫存組織.組織在這里起到隔離作用,同樣角色被隔離于不同的組織空間內(nèi),它們之間互不干涉,這對一些大型商務(wù)電子網(wǎng)站和多公司的集團(tuán)公司比較重要.由于使用的用戶從屬于不同的公司,然而這些用戶可能扮演著同樣的角色,但是相同角色的用戶未必權(quán)限就相同,這就需要組織來隔離.
對于大的集團(tuán)公司來說,旗下?lián)碛胁煌淖庸?因此需要不同的控制單元來進(jìn)行劃分他們之間財務(wù)核算和基礎(chǔ)資料.不同的子公司再在控制單元下劃分相應(yīng)的組織.
業(yè)務(wù)單元是具有業(yè)務(wù)功能的組織單元,執(zhí)行組織下的不同業(yè)務(wù)內(nèi)容,與對應(yīng)的組織單元形成匯報關(guān)系或者上下級關(guān)系.
在用戶登錄系統(tǒng)后,首先通過控制單元隔離到對應(yīng)的核算單元,接著判斷用戶所處的業(yè)務(wù)單元,限定業(yè)務(wù)權(quán)限范圍.如果組織下還存在細(xì)分的業(yè)務(wù)單元,則再細(xì)分權(quán)限的范圍,在組織中一般會存在若干角色,接著根據(jù)用戶的角色(角色組),授予該組織的業(yè)務(wù)權(quán)限.如果不存在對應(yīng)角色,則把該組織的全部業(yè)務(wù)權(quán)限授予用戶.登錄的用戶一般根據(jù)用戶所處的業(yè)務(wù)單元、角色來決定的用戶的完成業(yè)務(wù)的最小權(quán)限,生成對應(yīng)的操作菜單,如圖2所示.本文采用Java 語言實現(xiàn)權(quán)限的粗粒度控制和細(xì)粒度控制和基于MS SQL Server 2005 的數(shù)據(jù)庫設(shè)計.
圖2 權(quán)限控制流程圖
本文采用面向?qū)ο笳Z言Java 實現(xiàn)粗粒度權(quán)限和細(xì)粒度權(quán)限控制,分別對應(yīng)著功能權(quán)限和實體權(quán)限.功能權(quán)限(function permission)給用戶提供對單據(jù)的增加(add)、刪除(delete)、修改(update)、查看(view)和審核(audit) 5 個基本權(quán)限,共同實現(xiàn)功能權(quán)限接口(ifunction permission),開發(fā)人員可以根據(jù)需求實現(xiàn)功能權(quán)限接口開發(fā)其他功能權(quán)限.實體權(quán)限(object permission) 主要分為讀權(quán)限(read)、寫權(quán)限(write)和鎖權(quán)限(lock),讀權(quán)限可以細(xì)分為對某些字段的可見和不可見;寫權(quán)限細(xì)分到對某個(某些)字段的可寫或者不可寫,這在審核的功能權(quán)限中要經(jīng)常使用到;鎖權(quán)限一般針對某個單據(jù)掛起的權(quán)限.實體權(quán)限的共同接口是IObjectPermission.
Public Interface IFunctionPermission {
Permission getFunctionPermission(User user,
Role role,
Organization org,
ControlUnit unit)
throws Exception;
Menu getAvailableMenu(Permission permission)throws Exception;
}
Public Interface IObjectPermission {
Permission getObjectPermission(User user,
ICompositeObjectID objectID)
throws Exception;
Boolean checkAccess(User user,
ICompositeObjectID object,int permission)
throws Exception;
}
考慮到Internet 網(wǎng)絡(luò)的及時性,為提高系統(tǒng)響應(yīng)速度,專門設(shè)置常用數(shù)據(jù)管理服務(wù)器,這些系統(tǒng)屬性和用戶權(quán)限常用數(shù)據(jù)將長駐內(nèi)存,會把所有業(yè)務(wù)用戶的權(quán)限分配,組織分配、角色分配和對應(yīng)的菜單樹,在Web Server 啟動過程中一次性從數(shù)據(jù)庫讀到內(nèi)存中,用戶登陸的過程中直接讀取內(nèi)存中準(zhǔn)備好的實體對象數(shù)據(jù).
數(shù)據(jù)庫是系統(tǒng)運行的基礎(chǔ),權(quán)限系統(tǒng)模塊成功的關(guān)鍵.在本文中的權(quán)限系統(tǒng)模塊涉及到權(quán)限項表(T_Permission),組織權(quán)限表(T_OrgPermission),角色權(quán)限表(T_RolePermission),業(yè)務(wù)權(quán)限(T_Bussiness Permission);用戶實體涉及用戶角色組織關(guān)系表(T_UserRoleOrg)、角色表(T_Role)、用戶表(T_User)、用戶組表(T_UserGroup)、控制單元(T_ControlUnit)、組織表(T_Org);字段級數(shù)據(jù)控制涉及數(shù)據(jù)對象權(quán)限表(T_DataObject Access),字段權(quán)限控制策略表(T_FieldAccessStrategy).用戶角色組織關(guān)系建立起用戶、角色、組織的關(guān)系,控制單元起到隔離各個組織(公司).權(quán)限項銜接組織、角色、業(yè)務(wù),組織鏈接角色,用戶屬于組織,分配角色.圖3為各個主要表的概念模型.
圖3 概念模型
本權(quán)限模塊已經(jīng)在制造和零售行業(yè)的ERP 系統(tǒng)中得到應(yīng)用,權(quán)限模塊主要分為:(1) 組織單元管理;(2)角色(組)管理;(3)用戶管理;(4)訪問控制規(guī)則管理.其中組織單元管理包括建立組織單元、公司,添加對應(yīng)的業(yè)務(wù)單元,用戶組,人員以及組織之間的關(guān)系;角色管理主要是建立對應(yīng)的角色,添加對應(yīng)的用戶,下面以采購員授權(quán)為例說明.
首先創(chuàng)建采購員所在的組織單元—采購組織,這樣就限定了采購員的業(yè)務(wù)權(quán)限,接著創(chuàng)建該人員的角色—采購員,進(jìn)入訪問控制規(guī)則管理模塊創(chuàng)建規(guī)則,如圖4所示的授權(quán)界面,其主要包含業(yè)務(wù)對象、授權(quán)對象和權(quán)限動作,采購業(yè)務(wù)對象是復(fù)合數(shù)據(jù)集,因此選擇復(fù)合數(shù)據(jù)集;授權(quán)對象包含成員、角色組和組織,用戶可以選擇多維度授權(quán):(1) 可以選擇角色直接授權(quán);(2)選擇通過組織獲取的業(yè)務(wù)權(quán)限進(jìn)行授權(quán);(3)通過成員,選擇對應(yīng)的用戶和相應(yīng)權(quán)限動作授權(quán).
圖4 授權(quán)操作界面
基礎(chǔ)資料,業(yè)務(wù)流程,角色等基本環(huán)境是可以通過組織隔離和封存,通過三維授權(quán)模式,用戶很容易根據(jù)新業(yè)務(wù),復(fù)制和刪除已有的業(yè)務(wù)模塊,形成新的業(yè)務(wù)模塊和授權(quán)機(jī)制.因為這樣就很容易實現(xiàn)對新業(yè)務(wù)控制了,極大提高軟件可復(fù)用性,減少開支.
為了滿足跨國跨地區(qū)的供應(yīng)鏈和多公司集團(tuán)企業(yè)中分工的精細(xì)化,集中控制,分層管理的需求,本文探討和開發(fā)了獨立的權(quán)限管理模塊.該模塊采用RBAC模式作為基礎(chǔ),實現(xiàn)業(yè)務(wù)權(quán)限最小化,增加了組織和角色組,能快速地管理新的業(yè)務(wù)流程,降低授權(quán)的復(fù)雜度和管理難度.采用組織進(jìn)行業(yè)務(wù)環(huán)境的隔離,很好地支持集團(tuán)公司的擴(kuò)張,能夠很容易地控制新的業(yè)務(wù);采用角色組使小型企業(yè)粗粒度管理,減少人員管理.總的來說,三維權(quán)限控制提高了系統(tǒng)的適應(yīng)性和安全性.