通用數(shù)據(jù)權(quán)限管理系統(tǒng)設(shè)計(jì)(一)
作者:逸云
前言:
本文提供一種集成功能權(quán)限和數(shù)據(jù)權(quán)限的解決方法,以滿足多層次組織中權(quán)限管理方面的集中控制。本方法是RBAC(基于角色的訪問(wèn)控制方法)的進(jìn)一步擴(kuò)展和延伸,即在功能權(quán)限的基礎(chǔ)上增加數(shù)據(jù)權(quán)限的管理,實(shí)現(xiàn)數(shù)據(jù)權(quán)限和功能權(quán)限的集中處理。
解釋:
功能權(quán)限:能做什么的問(wèn)題,如增加銷售訂單;
數(shù)據(jù)權(quán)限:能在哪里干什么的問(wèn)題,如察看北京分公司海淀銷售部張三的銷售訂單;
術(shù)語(yǔ):
資源:系統(tǒng)中的資源,主要是各種業(yè)務(wù)對(duì)象,如銷售單、付款單等;
操作類型:對(duì)資源可能的訪問(wèn)方法,如增加、刪除、修改等;
功能:對(duì)資源的操作,是資源與操作類型的二元組,如增加銷售單、修改銷售單等;
數(shù)據(jù)類型:業(yè)務(wù)系統(tǒng)中常用的數(shù)據(jù)權(quán)限類型,如公司、部門(mén)、項(xiàng)目、個(gè)人等;
數(shù)據(jù)對(duì)象:具體的業(yè)務(wù)對(duì)象,如甲公司、乙部門(mén)等等,包括所有涉及到數(shù)據(jù)權(quán)限的對(duì)象值;
權(quán)限:角色可使用的功能,分角色的功能權(quán)限和角色的數(shù)據(jù)權(quán)限;
角色:特定權(quán)限的集合;
用戶:參與系統(tǒng)活動(dòng)的主體,如人,系統(tǒng)等。
通用數(shù)據(jù)權(quán)限管理系統(tǒng)設(shè)計(jì)(二)
方法說(shuō)明:
在實(shí)際應(yīng)用中,數(shù)據(jù)權(quán)限的控制點(diǎn)一般相對(duì)固定,如針對(duì)公司、部門(mén)、個(gè)人、客戶、供應(yīng)商等,也就是說(shuō)數(shù)據(jù)權(quán)限一般針對(duì)指定數(shù)據(jù)類型下的一些數(shù)據(jù)對(duì)象。
本方法中,數(shù)據(jù)權(quán)限的依賴于功能權(quán)限,是對(duì)功能權(quán)限的進(jìn)一步描述,說(shuō)明角色在指定的功能點(diǎn)上的數(shù)據(jù)控制權(quán)限。
本方法中采用“沒(méi)有明確規(guī)定即視為有效”的原則,如果沒(méi)有定義功能的數(shù)據(jù)權(quán)限,則說(shuō)明該角色具有該功能的全部的權(quán)限。如果定義了功能的某種類型的數(shù)據(jù)權(quán)限,則該用戶只具有該類型下指定數(shù)據(jù)的數(shù)據(jù)權(quán)限。
這段話比較繞口,下面舉個(gè)例子實(shí)際例子。
某公司有北京銷售部、上海銷售部和廣州銷售部三個(gè)銷售部,現(xiàn)在需要定義幾種角色:
銷售總監(jiān) -- 能察看所有銷售部的銷售訂單;
北京銷售經(jīng)理 -- 只能察看北京銷售部的所有銷售訂單;
上海銷售經(jīng)理 -- 只能察看上海銷售部的所有銷售訂單;
廣州銷售經(jīng)理 -- 只能察看廣州銷售部的所有銷售訂單;
上述角色的定義如下:
-------------------------------------------------------------------
角色名稱 功能 數(shù)據(jù)類型 數(shù)據(jù)對(duì)象
-------------------------------------------------------------------
銷售總監(jiān) 察看銷售訂單
北京銷售經(jīng)理 察看銷售訂單 部門(mén) 北京
上海銷售經(jīng)理 察看銷售訂單 部門(mén) 上海
廣州銷售經(jīng)理 察看銷售訂單 部門(mén) 廣州
-------------------------------------------------------------------
上述定義中,銷售總監(jiān)只定義了功能權(quán)限,而沒(méi)有定義數(shù)據(jù)權(quán)限,所以銷售總監(jiān)能夠察看所有的銷售訂單;而其他幾位銷售經(jīng)理分別定義了這一功能的數(shù)據(jù)權(quán)限,所以只能察看指定部門(mén)的銷售訂單。
在實(shí)際應(yīng)用中,往往會(huì)出現(xiàn)部門(mén)分組,組長(zhǎng)能夠察看本組所有人員處理的銷售訂單的情況,以及某些情況下,某些人只能察看本人的銷售訂單的情況,這些特殊情況在上述的說(shuō)明中無(wú)法解決,需要在設(shè)計(jì)和實(shí)現(xiàn)中進(jìn)行處理。
北京銷售代表 -- 只能察看北京銷售部的本人的所有銷售訂單;
北京銷售代表 察看銷售訂單 部門(mén) 北京
個(gè)人
通用數(shù)據(jù)權(quán)限管理系統(tǒng)設(shè)計(jì)(三)--數(shù)據(jù)庫(kù)設(shè)計(jì)
我們先來(lái)看看傳統(tǒng)的基于角色的權(quán)限管理系統(tǒng),如下圖所示,最簡(jiǎn)單的基于角色的權(quán)限管理由系統(tǒng)功能、系統(tǒng)角色、系統(tǒng)用戶、角色功能和用戶角色五部分組成。
圖一:基于角色的數(shù)據(jù)庫(kù)結(jié)構(gòu)
為實(shí)現(xiàn)數(shù)據(jù)權(quán)限控制,在設(shè)計(jì)上對(duì)基于角色的權(quán)限管理進(jìn)行擴(kuò)充,如下圖所示:
圖二:通用數(shù)據(jù)權(quán)限管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
對(duì)比兩張圖,我們可以看到,他們之間的主要變化為:
1、 增加系統(tǒng)資源信息和操作類型信息,系統(tǒng)資源為樹(shù)形結(jié)構(gòu)、如銷售模塊、銷售訂單等;操作類型記錄可能的操作,如增加、刪除、修改、查看、查詢等,系統(tǒng)功能是資源與操作類型的組合,對(duì)資源的操作就是系統(tǒng)功能。
2、 增加數(shù)據(jù)對(duì)象類型和數(shù)據(jù)對(duì)象兩張表,數(shù)據(jù)對(duì)象類型記錄系統(tǒng)中需要控制的對(duì)象類型,如部門(mén)、庫(kù)房、員工、客戶、供應(yīng)商等;數(shù)據(jù)對(duì)象記錄各對(duì)象類型的對(duì)象實(shí)例,如北京銷售部、上海銷售部、張三、李四等等。(獨(dú)立保存的好處后面會(huì)說(shuō)到)
3、 增加系統(tǒng)資源與數(shù)據(jù)對(duì)象類型的關(guān)聯(lián)表(多對(duì)多),本表為配置表,說(shuō)明某種資源可能需要的控制點(diǎn),如銷售訂單與部門(mén)類型的關(guān)聯(lián)可能涉及到分部門(mén)分配權(quán)限;銷售訂單與客戶的關(guān)聯(lián)可能涉及到按客戶分配權(quán)限等等。
4、 增加數(shù)據(jù)對(duì)象與角色權(quán)限的關(guān)聯(lián),這張表是真正最終實(shí)現(xiàn)數(shù)據(jù)權(quán)限管理的所在地。
通過(guò)這種設(shè)計(jì),能夠最小化地減少對(duì)原有權(quán)限系統(tǒng)的更改,并且可以很靈活地增加數(shù)據(jù)的控制點(diǎn)。在產(chǎn)品化軟件的設(shè)計(jì)中使用,能夠靈活滿足客戶的需要。
下一篇文章將討論這種結(jié)構(gòu)如何滿足第二部分功能需求的問(wèn)題,如果時(shí)間允許,將對(duì)程序的設(shè)計(jì)做進(jìn)一步闡述。
本設(shè)計(jì)方法已應(yīng)用于自行開(kāi)發(fā)的通用供應(yīng)鏈管理系統(tǒng)中,歡迎指正。