摘要:軟件系統(tǒng)建模一般不包括安全建模,系統(tǒng)安全策略和安全機(jī)制往往作為開發(fā)人員在系統(tǒng)開發(fā)后期對(duì)系統(tǒng)的補(bǔ)充和完善的措施。這種不規(guī)范的安全需求處理為系統(tǒng)后期安全維護(hù)及系統(tǒng)之間的集成帶來莫大隱患。該文闡述RBAC的安全建模與系統(tǒng)通常UML建模。
關(guān)鍵詞:安全建模;RBAC;UML;RBAC模型
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2009)15-3948-03
UML Modeling of Software and RBAC Security Model
ZHANG Sai-nan, WEI Hong-yan, QIAO Zheng-hong, LEI Xiao-yu
(PLA. University of Science and Technology, Nanjing 211100, China)
Abstract: The modeling of software system generally does not include security model, system security strategy and mechanism are often taken as the supplement and improvement to system in the later period of its development. This kind of nonstandard processing of security requirements brings great hidden danger for the system in later security maintenance and the system integration. This paper introduces RBAC security model and generally UML model.
Key words: security modeling; RBAC; UML; RBAC design model
1 UML簡介
UML(統(tǒng)一建模語言,Unified Modeling Language)是一種定義良好、易于表達(dá)、功能強(qiáng)大且普遍適用的可視化建模語言。它融入了軟件工程領(lǐng)域的新思想、新方法和新技術(shù)。它的作用域不限于支持面向?qū)ο蟮姆治雠c設(shè)計(jì),還支持需求分析開始的軟件開發(fā)的全過程。在系統(tǒng)分析階段,一般用UML來畫很多圖,主要包括用例圖、狀態(tài)圖、類圖、活動(dòng)圖、序列圖、協(xié)作圖、構(gòu)建圖、配置圖等等,要畫哪些圖要根據(jù)具體情況而定。
1.1 用例圖
用例圖描述了系統(tǒng)提供的一個(gè)功能單元。用例圖的以一種可視化的方式理解系統(tǒng)的功能需求,包括基于基本流程的\"角色\"關(guān)系,以及系統(tǒng)內(nèi)用例之間的關(guān)系。用例圖一般表示出用例的組織關(guān)系。要在用例圖上顯示某個(gè)用例,可繪制一個(gè)橢圓,然后將用例的名稱放在橢圓的中心或橢圓下面的中間位置。要在用例圖上繪制一個(gè)角色,可繪制一個(gè)人形符號(hào)。角色和用例之間的關(guān)系使用簡單的線段來描述,如圖1所示。
1.2 類圖
類圖表示不同的實(shí)體(人、事物和數(shù)據(jù))如何彼此相關(guān);換句話說,它顯示了系統(tǒng)的靜態(tài)結(jié)構(gòu)。類圖可用于表示邏輯類,還可用于表示實(shí)現(xiàn)類,實(shí)現(xiàn)類就是程序員處理的實(shí)體。實(shí)現(xiàn)類圖或許會(huì)與邏輯類圖顯示一些相同的類。然而,實(shí)現(xiàn)類圖不會(huì)使用相同的屬性來描述,因?yàn)樗芸赡芫哂袑?duì)諸如Vector和HashMap這種事物的引用。
類在類圖上使用包含三個(gè)部分的矩形來描述,如圖2所示。最上面的部分顯示類的名稱,中間部分包含類的屬性,最下面的部分包含類的操作。
1.3 序列圖
序列圖顯示具體用例的詳細(xì)流程。它幾乎是自描述的,并且顯示了流程中不同對(duì)象之間的調(diào)用關(guān)系,同時(shí)還可以很詳細(xì)地顯示對(duì)不同對(duì)象的不同調(diào)用。
序列圖有兩個(gè)維度:垂直維度以發(fā)生的時(shí)間順序顯示消息/調(diào)用的序列;水平維度顯示消息被發(fā)送到的對(duì)象實(shí)例。
1.4 狀態(tài)圖
狀態(tài)圖表示某個(gè)類所處的不同狀態(tài)和該類的狀態(tài)轉(zhuǎn)換信息。有人可能會(huì)爭論說每個(gè)類都有狀態(tài),但不是每個(gè)類都應(yīng)該有一個(gè)狀態(tài)圖。
如圖4所示,狀態(tài)圖的符號(hào)集包括5個(gè)基本元素:初始起點(diǎn),它使用實(shí)心圓來繪制;狀態(tài)之間的轉(zhuǎn)換,它使用具有開箭頭的線段來繪制;狀態(tài),它使用圓角矩形來繪制;判斷點(diǎn),它使用空心圓來繪制;以及一個(gè)或者多個(gè)終止點(diǎn),它們使用內(nèi)部包含實(shí)心圓的圓來繪制。要繪制狀態(tài)圖,首先繪制起點(diǎn)和一條指向該類的初始狀態(tài)的轉(zhuǎn)換線段。狀態(tài)本身可以在圖上的任意位置繪制,然后只需使用狀態(tài)轉(zhuǎn)換線條將它們連接起來。
1.5 活動(dòng)圖
活動(dòng)圖表示在處理某個(gè)活動(dòng)時(shí),兩個(gè)或者更多類對(duì)象之間的過程控制流。活動(dòng)圖可用于在業(yè)務(wù)單元的級(jí)別上對(duì)更高級(jí)別的業(yè)務(wù)過程進(jìn)行建模,或者對(duì)低級(jí)別的內(nèi)部類操作進(jìn)行建模。
活動(dòng)圖的符號(hào)集與狀態(tài)圖中使用的符號(hào)集類似。像狀態(tài)圖一樣,活動(dòng)圖也從一個(gè)連接到初始活動(dòng)的實(shí)心圓開始?;顒?dòng)是通過一個(gè)圓角矩形來表示的。活動(dòng)可以通過轉(zhuǎn)換線段連接到其他活動(dòng),或者連接到判斷點(diǎn),這些判斷點(diǎn)連接到由判斷點(diǎn)的條件所保護(hù)的不同活動(dòng)。結(jié)束過程的活動(dòng)連接到一個(gè)終止點(diǎn)(就像在狀態(tài)圖中一樣)。作為一種選擇,活動(dòng)可以分組為泳道,泳道用于表示實(shí)際執(zhí)行活動(dòng)的對(duì)象。
2 RBAC簡介
RBAC的核心思想就是將訪問權(quán)限與角色相聯(lián)系,通過給用戶分配合適的角色,讓用戶與訪問權(quán)限相聯(lián)系。角色是根據(jù)企業(yè)內(nèi)為完成各種不同的任務(wù)需要而設(shè)置的,根據(jù)用戶在企業(yè)中的職權(quán)和責(zé)任來設(shè)定他們的角色。用戶可以在角色間進(jìn)行轉(zhuǎn)換,系統(tǒng)可以添加、刪除角色,還可以對(duì)角色的權(quán)限進(jìn)行添加、刪除。這樣通過應(yīng)用RBAC將安全性放在一個(gè)接近組織的自然層面上進(jìn)行管理。
RBAC策略主要由RBAC核心策略、RBAC繼承策略、職責(zé)分離策略組成。
RBAC核心策略是RBAC的本質(zhì)。RBAC核心策略是指權(quán)限和角色相關(guān),用戶被賦予相應(yīng)的角色而獲得角色的權(quán)限。用戶與角色相關(guān)聯(lián),角色與權(quán)限相關(guān)聯(lián),這兩個(gè)關(guān)聯(lián)沒有基數(shù)的限制,也就是一個(gè)用戶經(jīng)授權(quán)可以擁有多個(gè)角色,一個(gè)角色可以授予多個(gè)用戶;一個(gè)角色可以被授予多種操作權(quán)限,一種操作權(quán)限也可以授予多個(gè)角色。核心策略還具有了用戶會(huì)話的概念,一個(gè)用戶在激發(fā)他或她所屬角色的某些子集時(shí),建立了一個(gè)會(huì)話(即擁有處于激活狀態(tài)、以用戶身份運(yùn)行的進(jìn)程)。一個(gè)用戶可以激活多個(gè)會(huì)話,但每個(gè)會(huì)話只能對(duì)應(yīng)一個(gè)用戶。用戶在這個(gè)會(huì)話中能夠執(zhí)行的操作依賴于這個(gè)會(huì)話激活的角色以及賦予這個(gè)角色的權(quán)限。
為了提高效率,避免相同權(quán)限的重復(fù)設(shè)置,RBAC采用了“角色繼承”的概念,定義了這樣的一些角色,它們有自己的屬性,但可能還繼承其他角色的屬性和權(quán)限。如果角色r1繼承了角色r2,那么r1將擁有r2的所有權(quán)限,角色r1還可以定義屬于自己的權(quán)限。繼承關(guān)系是自反的、傳遞的、非對(duì)稱的。角色繼承把角色關(guān)聯(lián)起來,能夠很自然地反映組織內(nèi)部人員之間的職權(quán)、責(zé)任關(guān)系。
系統(tǒng)安全策略要求用戶不能超出職位應(yīng)有的訪問權(quán)限,而且要盡量減少同一個(gè)用戶同時(shí)分配兩個(gè)角色后產(chǎn)生欺騙行為的可能。那么角色間就存在互斥的關(guān)系,角色分配的時(shí)候就需要考慮到哪些角色間是存在互斥關(guān)系的,“職責(zé)分離”原則就是基于這方面考慮的,“職責(zé)分離”可以有靜態(tài)(SSD)和動(dòng)態(tài)(DSD)兩種實(shí)現(xiàn)方式。
靜態(tài)職責(zé)分離(SSD)指定角色的互斥關(guān)系,用于用戶指派階段。避免同一用戶擁有互斥的角色。實(shí)現(xiàn)簡單,角色互斥語義關(guān)系清楚,便于管理。
動(dòng)態(tài)職責(zé)分離(DSD)指定角色的互斥關(guān)系,用于角色激活階段。允許同一用戶擁有某些互斥的角色,但是不允許該用戶同時(shí)激活互斥的角色。更靈活,直接與會(huì)話掛鉤,適應(yīng)實(shí)際管理需要,缺點(diǎn)是實(shí)現(xiàn)復(fù)雜,不易管理。RBAC的模型如圖5所示。
圖5中關(guān)系的基數(shù)默認(rèn)為1,關(guān)聯(lián)上的箭頭表示基數(shù)為多,比如,用戶與會(huì)話之間是一對(duì)多的關(guān)系,在圖中所有其他的關(guān)系都是多對(duì)多的關(guān)系。Role (Hierarchy)標(biāo)簽表示角色間的繼承關(guān)系;SSD標(biāo)簽和DSD標(biāo)簽表示角色間的互斥關(guān)系。
3 RBAC模式
UML支持模式的創(chuàng)建,模式中可以包含用UML表示的模式模型以及可以參數(shù)化的模板參數(shù)。在使用模式的時(shí)候,可以通過一些工具的幫助,實(shí)現(xiàn)對(duì)模式的使用。
為了實(shí)現(xiàn)RBAC模型的重用,把RBAC策略看著模式,使用UML類圖來描述RBAC模式,這樣可以通過實(shí)例化UML類圖來實(shí)現(xiàn)RBAC模型的重用。RBAC模式類圖如圖6所示。圖6描述了具有角色繼承和職責(zé)分離特性的RBAC模式圖。
圖6由類和關(guān)聯(lián)組成。類包含屬性(如Role類中的Name : String)和操作(如Role類中的GrantPermission)。關(guān)聯(lián)(如UserAssignment)由關(guān)聯(lián)名稱和關(guān)聯(lián)基數(shù)組成。
User類用來描述用戶,具有下列操作:
1) CreateSession:創(chuàng)建一個(gè)新的會(huì)話
2) DeleteSession:刪除一個(gè)會(huì)話
3) AssignRole:與角色建立關(guān)聯(lián)
4) DeassignRole:刪除與角色的關(guān)聯(lián)
Role類用來描述角色,具有下列操作:
1) GrantPermission:為角色指派權(quán)限
2) RevokePermission:移除已為角色指派的權(quán)限
3) AddInheritance:添加直接繼承角色
4) DeleteInheritance:刪除直接繼承角色
5) CheckSSD:檢查一個(gè)角色與一個(gè)給定的角色是否有SSD關(guān)系
6) CheckAccess:檢查角色是否具有特定的權(quán)限
7) CheckDSD:檢查一個(gè)角色與一個(gè)給定的角色是否有DSD關(guān)系
Session類用來描述會(huì)話,具有下列操作:
1) AddActiveRole:在一個(gè)會(huì)話中激活一個(gè)角色
2) DropActiveRole:在一個(gè)會(huì)話中移除一個(gè)角色
3) CheckAccess:檢查角色是否具有對(duì)對(duì)象做某種操作的權(quán)限
通過實(shí)例化模式中的類、關(guān)系,可以得到具體系統(tǒng)的實(shí)例化類圖。
4 結(jié)論
本文介紹了UML模型的建模、RBAC模型以及靜態(tài)的RBAC模型與系統(tǒng)的設(shè)計(jì)模型。下一步的研究工作就是把抽象的RBAC模式映射到具體的系統(tǒng),然后再與設(shè)計(jì)模型集成。以UML技術(shù)為基礎(chǔ),以圖形的方式描述了RBAC模型與設(shè)計(jì)模型的集成步驟,然后再使用UML對(duì)象圖描述了角色和權(quán)限的分配。
參考文獻(xiàn):
[1] 殷兆麟.UML及其建模工具的使用[M].北京:清華大學(xué)出版社,2004.
[2] 喬穎,須德,戴國忠.一種基于角色訪問控制(RBAC) 的新模型及其實(shí)現(xiàn)機(jī)制[J].計(jì)算機(jī)研究與發(fā)展,2000,37(1).
[3] Ahn G J,Sandhu R.Role-based Authorization Constraints Specification[C].ACM Transactions on Information and Systems Security,2000.
[4] Barker S.Security Policy Specification in Logic[C].Las Vegas:Proceedings of the International Conference on Artificial Intelligence,NV,2000.
[5] Barker S,Rosenthal A.Flexible Security Policies in SQL[C].Canada:Proceedings of the 15th Annual IFIP WG 11.3 Working Conference on Data and Applications Security,Niagara-onthe-Lake,2001.