摘要
本文在RBAC基本思想的基礎(chǔ)上,增加資源權(quán)限的概念,設(shè)計了在企業(yè)應(yīng)用系統(tǒng)中用戶權(quán)限控制的一種具體的簡單實現(xiàn)方法。
關(guān)鍵字 用戶權(quán)限控制
名詞解釋
資源權(quán)限:資源指的是納入企業(yè)應(yīng)用的一切需要管理的信息實體,如進銷存系統(tǒng)中的進貨訂單;資源權(quán)限則是系統(tǒng)將要在這些資源的基礎(chǔ)上進行的訪問使用權(quán)限的控制;
引言
企業(yè)應(yīng)用系統(tǒng)對安全問題有較高的要求,傳統(tǒng)的訪問控制方法DAC(Discretionary Access Control,自主訪問控制模型)、MAC(Mandatory Access Control,強制訪問控制模型)難以滿足復(fù)雜的企業(yè)環(huán)境需求。因此,NIST(National Institute of Standards and Technology,美國國家標準化和技術(shù)委員會)于上世紀90年代初提出了基于角色的訪問控制方法,實現(xiàn)了用戶與訪問權(quán)限的邏輯分離,更符合企業(yè)的用戶、組織、數(shù)據(jù)和應(yīng)用特征。
本文將首先介紹RBAC(Role Based Access Control)的基本思想,在此基礎(chǔ)上,給出企業(yè)應(yīng)用系統(tǒng)中實現(xiàn)R-F-RBAC(Role-Function-Resource Based Access Control,基于角色-功能-資源的權(quán)限控制)的一種具體方法。
RBAC的基本思想可簡單地用圖1來表示,即把整個訪問控制過程分成兩步:訪問權(quán)限與角色相關(guān)聯(lián),角色再與用戶關(guān)聯(lián),從而實現(xiàn)了用戶與訪問權(quán)限的邏輯分離。
由于RBAC實現(xiàn)了用戶與訪問權(quán)限的邏輯分離,因此它極大的方便了權(quán)限管理。例如,如果一個用戶的職位發(fā)生變化,只要將用戶當前的角色去掉,加入代表新職務(wù)或新任務(wù)的角色即可,角色/權(quán)限之間的變化比角色/用戶關(guān)系之間的變化相對要慢得多,并且委派用戶到角色不需要很多技術(shù),可以由行政管理人員來執(zhí)行,而配置權(quán)限到角色的工作比較復(fù)雜,需要一定的技術(shù),可以由專門的技術(shù)人員來承擔(dān),但是不給他們委派用戶的權(quán)限,這與現(xiàn)實中情況正好一致。
而R-F-RBAC的設(shè)計思路是在RBAC基礎(chǔ)上的一個發(fā)展,引入了資源的概念。何所謂資源,大體來說可以是納入系統(tǒng)管理的信息,在技術(shù)實現(xiàn)層面可以是一張表、一條或一列記錄、甚至可以是表的一個單元格。在實踐使用中,一些高安全級別額的企業(yè)應(yīng)用,僅僅將權(quán)限控制到功能是不夠的,要求能控制某些用戶只能操作到指定的系統(tǒng)內(nèi)容。
案例分析
這里我們用一個簡單的應(yīng)用模型實例對R-F-RBAC進行深入分析,即給某企業(yè)應(yīng)用假設(shè)一個安全級別較高的合同管理子模塊,這個模塊涉及如下元素:
·合同文件:根據(jù)業(yè)務(wù)要求分為三個等級(項目級、部門級、公司級);
·具體功能:根據(jù)實際功能要求分為草擬、上報、會簽、批核;
·操作角色:根據(jù)公司行政職位設(shè)置有項目經(jīng)理、部門經(jīng)理、總經(jīng)理;
·操作人員:公司的內(nèi)部人員A項目經(jīng)理張三、甲部門經(jīng)理李四、總經(jīng)理王二;
系統(tǒng)的安全需求為A項目經(jīng)理張三只能草擬并上報僅限于A項目的項目級別合同文件,甲部門經(jīng)理李四只能草擬、上報、會簽率屬于甲部門下的項目級或部門級的合同文件,而總經(jīng)理王二則有權(quán)任意操作整個公司的三個級別的合同文件,可將此模型歸納為如下表格:
人員 | 角色 | 功能 | 資源 |
王二 | 總經(jīng)理 | 草擬、上報、會簽、批核 | 三個級別的合同文件 |
李四 | 部門經(jīng)理 | 草擬、上報、會簽 | 甲部門下的項目級或部門級的合同文件 |
張三 | 項目經(jīng)理 | 草擬、上報 | 僅限于A項目的項目級別合同文件 |
解決方案
為此我們要設(shè)計如下幾張關(guān)鍵的數(shù)據(jù)表:
·用戶表: 記錄用戶的相關(guān)信息,UserID作為唯一的用戶標識;
·角色表: 記錄角色的相關(guān)信息,RoleID作為唯一的角色標識;
·模塊及功能表:記錄模塊相關(guān)信息及模塊的相關(guān)功能,分為主子關(guān)系表;
·資源表: 記錄系統(tǒng)中的所有需要高安全控制的資源信息,其中ResTable是資源對應(yīng)的數(shù)據(jù)表名(如合同信息表),ResTerm則是給定該資源的條件(如甲部門下的項目級或部門級的合同文件)用于限定數(shù)據(jù)提取范圍;
由于本文提到的R-F-RBAC的設(shè)計思路均考慮用戶可以授予多角色,因此我們需要建立用戶-角色對應(yīng)表,用來記錄某用戶可能對應(yīng)的若干角色信息,同樣需要建立的是角色-功能對應(yīng)表和角色-資源對應(yīng)表,以徹底剝離用戶與權(quán)限訪問間的關(guān)系;數(shù)據(jù)庫關(guān)系圖(僅涉及關(guān)鍵字段)如下:
程序?qū)崿F(xiàn)
代碼實現(xiàn)應(yīng)分為三大部分:
·權(quán)限數(shù)據(jù)維護:該部分主要實現(xiàn)用戶、角色、功能、資源等基礎(chǔ)信息的維護,給系統(tǒng)管理員一個便利的操作接口;
·權(quán)限數(shù)據(jù)處理:指的是在程序內(nèi)部實現(xiàn)權(quán)限調(diào)用接口,如根據(jù)調(diào)用者提供的模塊及用戶的信息給出應(yīng)該提供可操作數(shù)據(jù)和功能;
·權(quán)限數(shù)據(jù)引用:在UI層具體的處理用戶對應(yīng)的組合權(quán)限,如根據(jù)得到的功能權(quán)限信息控制UI上按鈕、菜單等功能元素的顯隱活可用性,或根據(jù)得到的資源權(quán)限條件組合提數(shù)條件以達到某些用戶只能操作到指定的系統(tǒng)內(nèi)容的控制級別;