国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于角色的多維度對象訪問控制方法

      文檔序號:7962058閱讀:254來源:國知局
      專利名稱:基于角色的多維度對象訪問控制方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)庫的安全解決方案,尤其是涉及對數(shù)據(jù)庫的訪問控制方法。
      背景技術(shù)
      訪問控制(Access Control)或者說授權(quán)(Authorization)。訪問控制是眾多計(jì)算機(jī)安全解決方案中的一種,是最直觀自然的一種方案。信息安全的風(fēng)險(xiǎn)可以被寬泛的歸結(jié)為CIA信息機(jī)密性(Confidentiality)、信息完整性(Integrity)和信息可用性(Availability)。訪問控制主要為信息機(jī)密性和信息完整性提供保障。具體來說對軟件系統(tǒng)提供如下控制允許被授權(quán)的主體對某些客體的訪問;拒絕向非授權(quán)的主體提供服務(wù)。
      RBAC(Role Based Access Control)基于角色的訪問控制模型。訪問控制存在多種主流的實(shí)現(xiàn)模型,包括自主訪問控制,強(qiáng)制訪問控制,以及RBAC。在RBAC中,在用戶(User)和訪問權(quán)限(Permission)之間引入角色(Role)的概念,用戶與特定的一個(gè)或多個(gè)角色相聯(lián)系,角色與一個(gè)或多個(gè)訪問許可權(quán)相聯(lián)系,角色可以根據(jù)實(shí)際的工作需要生成或取消。RBAC在管理大型網(wǎng)絡(luò)應(yīng)用安全時(shí)表現(xiàn)出靈活和經(jīng)濟(jì)性。
      根據(jù)對不同復(fù)雜度權(quán)限的需求,RBAC參考模型定義了三部分組件,分別是1.Core RBAC核心角色訪問控制模型2.Hierarchical RBAC分級角色訪問控制模型3.Constraining RBAC強(qiáng)制角色訪問控制模型Core RBAC定義了RBAC模型最基本的五個(gè)元素User人或機(jī)器,Role角色,Operations可執(zhí)行的反映,Objects資源對象,Permissions許可。
      User代表人,但是也可以時(shí)一臺機(jī)器,agent,或其他任何智能系統(tǒng)。
      Role表示一個(gè)工作職責(zé),在一個(gè)組織機(jī)構(gòu)環(huán)境中的工作職責(zé)。該職責(zé)可以關(guān)聯(lián)一些關(guān)于權(quán)力和責(zé)任的語義。例如部門經(jīng)理,工單維護(hù)人員等。
      Permission是一個(gè)許可,對在一個(gè)或多個(gè)Objects上執(zhí)行Operation的許可。我們說,一條數(shù)據(jù)庫記錄,這不是權(quán)限。刪除,這也不是權(quán)限。只有“對數(shù)據(jù)庫記錄的刪除“,才是權(quán)限。另外,RBAC標(biāo)準(zhǔn)中定義的權(quán)限指正權(quán)限。
      Operation是程序的可執(zhí)行的反映,被User調(diào)用和執(zhí)行。Operation的類型取決于實(shí)現(xiàn)系統(tǒng)的類型。例如文件系統(tǒng)可能的操作為讀寫、執(zhí)行等,數(shù)據(jù)庫系統(tǒng)則是CRUD。
      Objects表示資源對象,任何訪問控制機(jī)制都是為了保護(hù)系統(tǒng)的資源。Objects可能包括文件、目錄、數(shù)據(jù)庫表、行、字段等,甚至于磁盤空間、打印機(jī)、CPU周期都是資源。
      Session會話。用戶每次通過建立會話來激活角色,得到相應(yīng)的訪問權(quán)限RBAC是關(guān)系模型,關(guān)注點(diǎn)在于角色Role和用戶User、許可Permission的關(guān)系。稱為User Assignment(UA)和Permission Assignment(PA)。關(guān)系的左右兩邊都是Many-to-Many關(guān)系。
      分層RBACHierarchal RBAC引入了角色繼承的概念,約束的RBAC增加了職責(zé)關(guān)系分離的部分。這兩個(gè)模型是對Core RBAC的擴(kuò)展。
      CN200410095998.4對保護(hù)數(shù)據(jù)的用戶進(jìn)行識別、認(rèn)證和授權(quán)的方法,通過用戶在注冊區(qū)域的輸入字段中輸入的用戶標(biāo)識(NAME=“姓名1”;“姓名2”;“姓名G”;…)識別該用戶;將輸入的用戶標(biāo)識(NAME)和由該用戶輸入的密碼(PW=“pw1”;“pw2”;“pwG”;…)組合,并用單向加密函數(shù)轉(zhuǎn)換為認(rèn)證該用戶的系統(tǒng)標(biāo)識(token1,token2,token3…);至少將系統(tǒng)標(biāo)識(token1,token2,token3…)以訪問標(biāo)記的形式從注冊區(qū)域發(fā)送到保護(hù)區(qū)域;通過該發(fā)送訪問標(biāo)記授權(quán)該用戶訪問保護(hù)區(qū)域內(nèi)的保護(hù)數(shù)據(jù)。
      CN200410090408.9提供數(shù)據(jù)安全的方法和系統(tǒng),通過使用循環(huán)冗余校驗(yàn)提高數(shù)據(jù)的安全性。使用一個(gè)或更多循環(huán)冗余校驗(yàn)將數(shù)據(jù)編碼,然后將其從一發(fā)射器發(fā)送到一接收器。接收器接收編碼的數(shù)據(jù)并將其解碼,以使用所述一個(gè)或更多循環(huán)冗余校驗(yàn)來確定該數(shù)據(jù)是否由授權(quán)的用戶發(fā)送。
      CN200410095998.4對保護(hù)數(shù)據(jù)的用戶進(jìn)行識別、認(rèn)證和授權(quán)的方法,對保護(hù)數(shù)據(jù)的用戶、尤其是自動化系統(tǒng)的保護(hù)數(shù)據(jù)的用戶進(jìn)行識別、認(rèn)證和授權(quán)的方法,其中通過用戶在注冊區(qū)域的輸入字段中輸入的用戶標(biāo)識(NAME=“姓名1”;“姓名2”;“姓名G”;…)識別該用戶;將輸入的用戶標(biāo)識(NAME)和由該用戶輸入的密碼組合,并用單向加密函數(shù)轉(zhuǎn)換為認(rèn)證該用戶的系統(tǒng)標(biāo)識(token1,token2,token3…);至少將系統(tǒng)標(biāo)識(token1,token2,token3…)以訪問標(biāo)記的形式從注冊區(qū)域發(fā)送到保護(hù)區(qū)域;通過該發(fā)送的訪問標(biāo)記授權(quán)該用戶訪問保護(hù)區(qū)域內(nèi)的保護(hù)數(shù)據(jù)(函數(shù)A,函數(shù)B,函數(shù)C)。
      在Core RBAC模型中,如果系統(tǒng)實(shí)施細(xì)粒度的權(quán)限控制,隨著訪問控制的客體——被管理對象的規(guī)模增長,PA(允許指定Permission Assignment)關(guān)聯(lián)數(shù)量將會急劇膨脹,帶來授權(quán)工作的復(fù)雜性。另外在模型中沒有定義各被管的對象之間的有機(jī)聯(lián)系,無法體現(xiàn)軟件系統(tǒng)宏觀的結(jié)構(gòu),不利于分層次引入管理策略。

      發(fā)明內(nèi)容
      本發(fā)明目的是為解決如上問題,現(xiàn)針對Core RBAC模型進(jìn)行擴(kuò)展。達(dá)到授權(quán)工作簡單,利于分層次引入管理策略。在被管理對象集中引入“對象維度”的概念,不同維度代表對象不同的分類方式,系統(tǒng)中支持多種分類方式并存。我們把擴(kuò)展后的模型稱為基于角色的多維度對象訪問控制技術(shù)MDO-RBAC(Multiple DimensionObjects-Role Based Access Control)。
      基于角色的多維度對象訪問控制方法將系統(tǒng)權(quán)限劃分為數(shù)據(jù)權(quán)限和操作權(quán)限。針對數(shù)據(jù)權(quán)限,系統(tǒng)中所有需要受權(quán)限控制的數(shù)據(jù)實(shí)體都應(yīng)該擁有對應(yīng)的安全管理對象(SecuredObject),將這些安全對象與不同的角色(Role)關(guān)聯(lián),即可完成數(shù)據(jù)權(quán)限的劃分;在該模型中將安全管理對象進(jìn)行了分組,支持在同一運(yùn)行時(shí)對系統(tǒng)中的所有安全管理對象進(jìn)行多種分組方式,每一個(gè)分組方式都稱之為一個(gè)“維度(Dimension)”,而在該維度下的取值,即具體的一個(gè)組別,稱之為“維度取值(DimensionValue)”;在分組之后,可以在系統(tǒng)中建立角色與維度取值之間的關(guān)聯(lián),以達(dá)成數(shù)據(jù)權(quán)限的分配。
      針對操作權(quán)限,設(shè)有虛擬角色(VirtualRole),將虛擬角色與操作權(quán)限(Permission)關(guān)聯(lián),可完成對操作權(quán)限的分配;同時(shí),在模型中建立虛擬角色與角色之間的多對一的關(guān)系,以完成數(shù)據(jù)權(quán)限和操作權(quán)限的融合。
      模型中的用戶(User)最終和角色關(guān)聯(lián),達(dá)到最終的授權(quán)效果。
      基于角色的多維度對象訪問控制方法即MDO-RBAC為關(guān)系型模型,其本身由一些概念和這些概念之間的關(guān)聯(lián)關(guān)系組成。該模型將系統(tǒng)權(quán)限劃分為數(shù)據(jù)權(quán)限和操作權(quán)限。針對數(shù)據(jù)權(quán)限,模型認(rèn)為系統(tǒng)中所有需要受權(quán)限控制的數(shù)據(jù)實(shí)體都應(yīng)該擁有對應(yīng)的安全管理對象(SecuredObject),如果將這些安全對象與不同的角色(Role)關(guān)聯(lián),即可完成數(shù)據(jù)權(quán)限的劃分。但是這樣的關(guān)聯(lián)關(guān)系是復(fù)雜而低效的,因此在該模型中將安全管理對象進(jìn)行了分組,支持在同一運(yùn)行時(shí)對系統(tǒng)中的所有安全管理對象進(jìn)行多種分組方式,每一個(gè)分組方式我們都稱之為一個(gè)“維度(Dimension)”,而在該維度下的取值,即具體的一個(gè)組別,我們稱之為“維度取值(DimensionValue)”。在分組之后,可以在系統(tǒng)中建立角色與維度取值之間的關(guān)聯(lián),以達(dá)成數(shù)據(jù)權(quán)限的分配。針對操作權(quán)限,模型中提出虛擬角色(VirtualRole)的概念,將虛擬角色與操作權(quán)限(Permission)關(guān)聯(lián),可完成對操作權(quán)限的分配。同時(shí),在模型中建立虛擬角色與角色之間的多對一的關(guān)系,以完成數(shù)據(jù)權(quán)限和操作權(quán)限的融合。模型中的用戶(User)最終和角色關(guān)聯(lián),達(dá)到最終的授權(quán)效果。
      本發(fā)明的有益效果通過引入維度這一中間層,將系統(tǒng)中的被管對象有機(jī)組織起來,減少了授權(quán)工作量;同時(shí)系統(tǒng)可通過不同的分類方式達(dá)成靈活多變的管理策略。在被管理對象集中引入“對象維度”的概念,細(xì)化被管對象定義。在不同的維度下將被管對象劃分為多個(gè)組,同時(shí)允許組之間的嵌套,形成樹狀層次關(guān)系;不同維度代表對象不同的分類方式,系統(tǒng)中支持多種分類方式并存。本發(fā)明將系統(tǒng)權(quán)限劃分為數(shù)據(jù)權(quán)限和操作權(quán)限。針對數(shù)據(jù)權(quán)限,系統(tǒng)中所有需要受權(quán)限控制的數(shù)據(jù)實(shí)體都應(yīng)該擁有對應(yīng)的安全管理對象(SecuredObject),將這些安全對象與不同的角色(Role)關(guān)聯(lián),即可完成數(shù)據(jù)權(quán)限的劃分;在該模型中將安全管理對象進(jìn)行了分組,支持在同一運(yùn)行時(shí)對系統(tǒng)中的所有安全管理對象進(jìn)行多種分組方式,每一個(gè)分組方式都稱之為一個(gè)“維度(Dimension)”,而在該維度下的取值,即具體的一個(gè)組別,稱之為“維度取值(DimensionValue)”;在分組之后,可以在系統(tǒng)中建立角色與維度取值之間的關(guān)聯(lián),以達(dá)成數(shù)據(jù)權(quán)限的分配。實(shí)現(xiàn)用戶與訪問權(quán)限的邏輯分離和構(gòu)造角色之間的層次關(guān)系,從而方便了數(shù)據(jù)的安全管理。為實(shí)現(xiàn)RBAC在復(fù)雜環(huán)境中的應(yīng)用。
      基于角色的多維度對象訪問控制技術(shù)的改進(jìn)是即MDO-RBAC為關(guān)系型模型,其本身由一些概念和這些概念之間的關(guān)聯(lián)關(guān)系組成。該模型將系統(tǒng)權(quán)限劃分為數(shù)據(jù)權(quán)限和操作權(quán)限。針對數(shù)據(jù)權(quán)限,模型認(rèn)為系統(tǒng)中所有需要受權(quán)限控制的數(shù)據(jù)實(shí)體都應(yīng)該擁有對應(yīng)的安全管理對象(SecuredObject),如果將這些安全對象與不同的角色(Role)關(guān)聯(lián),即可完成數(shù)據(jù)權(quán)限的劃分。但是這樣的關(guān)聯(lián)關(guān)系是復(fù)雜而低效的,因此在該模型中將安全管理對象進(jìn)行了分組,在分組之后,可以在系統(tǒng)中建立角色與維度取值之間的關(guān)聯(lián),以達(dá)成數(shù)據(jù)權(quán)限的分配。針對操作權(quán)限,模型中提出虛擬角色(VirtualRole)的概念,將虛擬角色與操作權(quán)限(Permission)關(guān)聯(lián),可完成對操作權(quán)限的分配。同時(shí),在模型中建立虛擬角色與角色之間的多對一的關(guān)系,以完成數(shù)據(jù)權(quán)限和操作權(quán)限的融合。模型中的用戶(User)最終和角色關(guān)聯(lián),達(dá)到最終的授權(quán)效果。
      通過引入維度這一中間層,將系統(tǒng)中的被管對象有機(jī)組織起來,減少了授權(quán)工作量;授權(quán)工作簡單,利于分層次引入管理策略。同時(shí)系統(tǒng)可通過不同的分類方式達(dá)成靈活多變的管理策略。


      圖1是本發(fā)明應(yīng)用的軟件框圖,其結(jié)構(gòu)參見現(xiàn)有技術(shù)及說明圖2是用戶及用戶管理類UML類3是角色、虛擬角色及角色管理類UML類4是權(quán)限及權(quán)限管理類圖UML類5是維度、維度取值、SecuredObject及維度管理類UML類6是支撐功能所表示的類7是權(quán)限信息控制邏輯流程8是另一種權(quán)限信息控制邏輯流程圖具體實(shí)施方式
      1實(shí)施背景假設(shè)現(xiàn)有一交換機(jī)監(jiān)控系統(tǒng),管理電信網(wǎng)絡(luò)中的各程控交換機(jī)(SWITCH)。系統(tǒng)維護(hù)人員可以完成如下操作1.交換機(jī)狀態(tài)查詢(SWITCH.READ)2.交換機(jī)啟動及停止(SWITCH.OPER)
      規(guī)定管理員(ADMIN)才能夠進(jìn)行查詢及啟停操作,而普通維護(hù)人員(ATTENDANT)僅能夠查詢交換機(jī)狀態(tài)。在項(xiàng)目的建設(shè)中共有4臺交換機(jī)需要被監(jiān)控管理SWITCH1,SWITCH2,SWITCH3,SWITCH4。依據(jù)地域的劃分,系統(tǒng)將被江蘇省公司(JIANGSU)、南京分公司(NANJING)、蘇州分公司(SUZHOU)同時(shí)維護(hù)。其中SWITCH1、SWITCH2歸南京分公司維護(hù),SWITCH3、SWITCH4歸蘇州分公司維護(hù),而省公司可以同時(shí)維護(hù)這四臺交換機(jī)。依據(jù)部門的劃分,規(guī)定網(wǎng)發(fā)部(DEP.NET)可以維護(hù)SWITCH1、SWITCH4,運(yùn)維部(DEP.RUN)維護(hù)SWITCH2、SWITCH3。也就是說,省公司網(wǎng)發(fā)部可以對SWITCH1、SWITCH4進(jìn)行操作,省公司運(yùn)維部可以對SWITCH2、SWITCH3進(jìn)行操作;南京分公司網(wǎng)發(fā)部可以對SWITCH1進(jìn)行操作,南京分公司運(yùn)維部可以對SWITCH2進(jìn)行操作;蘇州分公司網(wǎng)發(fā)部可以對SWITCH3進(jìn)行操作,蘇州分公司運(yùn)維部可以對SWITCH4進(jìn)行操作。
      現(xiàn)使用本發(fā)明所使用模型實(shí)現(xiàn)上述訪問控制各需求。
      為實(shí)現(xiàn)上述訪問控制需求,模型應(yīng)實(shí)現(xiàn)如下幾個(gè)功能域1.管理功能域(Administrative Functions)創(chuàng)建,管理模型中各元素集合及關(guān)系,以建立訪問控制的多種組件;2.支撐功能域(Supporting System Functions)實(shí)現(xiàn)訪問控制模型功能,用于當(dāng)用戶與系統(tǒng)進(jìn)行交互的時(shí)候插入訪問控制邏輯;3.檢查功能域(Reviews Functions)檢查管理功能的行為結(jié)果,包括查詢、日志、統(tǒng)計(jì)等在該示例中,我們就管理功能域和支撐功能域進(jìn)行描述。
      4.Administrative Functions創(chuàng)建,管理元素集合及關(guān)系,以建立訪問控制的多種組件;5.Supporting System Functions實(shí)現(xiàn)訪問控制模型功能,用于當(dāng)用戶與系統(tǒng)進(jìn)行交互的時(shí)候插入訪問控制邏輯;6.Reviews Functions檢查管理功能的行為結(jié)果,包括查詢、日志、統(tǒng)計(jì)等Administrative Functions首先應(yīng)完成各概念的管理,包括各用戶、角色等等記錄的增刪改查等功能,考慮使用數(shù)據(jù)庫實(shí)現(xiàn)數(shù)據(jù)的存儲,建表語句如下1.用戶CREATE TABLE TC_USER(IDVARCHAR2(32)PRIMARY KEY,NAME VARCHAR2(64),PASSWORD VARCHAR2(32),2.角色CREATE TABLE TC_ROLE(ID VARCHAR2(32)PRIMARY KEY,
      TITLE VARCHAR2(64),DESCRIPTION VARCHAR2(256),VIRTUALROLEID VARCHAR2(32)3.用戶角色關(guān)聯(lián)表CREATE TABLE TC_USER_ROLE(USERID VARCHAR2(32),ROLEID VARCHAR2(32),PRIMARY KEY(USERID,ROLEID)4.虛擬角色CREATE TABLE TC_VIRTUALROLE(IDVARCHAR2(32)PRIMARY KEY,TITLE VARCHAR2(64),DESCRIPTION VARCHAR2(256)5.權(quán)限CREATE TABLE TC_PERMISSION(ID VARCHAR2(32)PRIMARY KEY,TITLEVARCHAR2(64)6.虛擬角色權(quán)限關(guān)聯(lián)表CREATE TABLE TC_VROLE_PERMISSION(VIRTUALROLEID VARCHAR2(32),PERMISSIONIDVARCHAR2(32),PRIMARY KEY(VIRTUALROLEID,PERMISSIONID)7.維度CREATE TABLE TC_DIMENSION(IDVARCHAR2(32)PRIMARY KEY,NAME VARCHAR2(64),TITLE VARCHAR2(64)8.維度取值CREATE TABLE TC_DIMENSIONVALUE(ID VARCHAR2(32)PRIMARY KEY,PARENTIDVARCHAR2(32),DIMENSIONID VARCHAR2(32),TITLE VARCHAR2(64),NAME VARCHAR2(32)9.角色維度取值關(guān)聯(lián)表CREATE TABLE TC_ROLE_DIMENSIONVALUE(
      ROLEID VARCHAR2(32),DIMENSIONVALUEID VARCHAR2(32),PRIMARY KEY(ROLEID,DIMENSIONVALUEID)10.維度取值被管對象關(guān)聯(lián)表CREATE TABLE TC_DV_SO(DVIDVARCHAR2(32),SOIDVARCHAR2(32)考慮到模型中SevuredObject概念來源于軟件系統(tǒng)的各個(gè)數(shù)據(jù)實(shí)體,假設(shè)各數(shù)據(jù)實(shí)體在數(shù)據(jù)庫中存在記錄,可以使用數(shù)據(jù)庫視圖來完成SecuredObject的收集,比如系統(tǒng)中需要將交換機(jī)(Switch)和端口(PortCode)納入訪問控制,可建立如下視圖CREATE OR REPLACE VIEW VC_SECUREDOBJECT(ENTITYID,TYPE,TITLE)AS(SELECT ID,′SWITCH′,NAME FROM TC_SWITCHUNIONSELECT ID,′PORTCODE′,PORTCODE FROM TC_PORTCODEUNIONSELECT ID,TYPE,TITLE FROM TC_GENERALSO)TC_GENELRALSO表為SecuredObject的存儲提供了通用的解決方式,如果系統(tǒng)中數(shù)據(jù)實(shí)體沒有相應(yīng)數(shù)據(jù)表,可以將手動配置記錄在該表中以納入管理。CREATE TABLE TC_GENERALSO(IDVARCHAR2(32)PRIMARY KEY,TITLE VARCHAR2(64),TYPE VARCHAR2(32))Supporting System Functions用戶的授權(quán)信息得到記錄之后,系統(tǒng)在運(yùn)行時(shí)應(yīng)完成對用戶權(quán)限的判斷,以實(shí)現(xiàn)訪問控制模型的功能??蓪l(fā)出業(yè)務(wù)操作請求的用戶信息與系統(tǒng)中記錄的授權(quán)信息進(jìn)行匹配,如果發(fā)現(xiàn)請求在記錄信息允許的范圍之內(nèi),則通過;否則失敗。
      控制過程可分為操作控制和數(shù)據(jù)控制兩步。
      1.操作控制用戶請求的業(yè)務(wù)方法,其方法本身應(yīng)該知道該方法使用什么Permission來控制用戶的請求,因此應(yīng)該業(yè)務(wù)方法應(yīng)該承擔(dān)起選取合適Permission記錄的職責(zé)。并委托模型中提供的通用Authorizator完成對權(quán)限的判斷。
      2管理功能域?qū)崿F(xiàn)首先應(yīng)完成模型中各元素的管理,包括各用戶、角色、虛擬角色、權(quán)限、維度、維度取值等要素記錄的增刪改查等功能。
      2.1類設(shè)計(jì)下面給出管理功能域的類設(shè)計(jì)。類共分為三種,實(shí)體類、管理類和數(shù)據(jù)訪問類。實(shí)體類為模型中的各個(gè)要素;管理類實(shí)現(xiàn)了對這些實(shí)體類的查詢、修改等管理操作,依據(jù)其分管范圍的不同,管理類羅列如下1.UserManager管理用戶的增刪改查,管理用戶和角色之間的關(guān)系分配2.RoleManager管理角色的增刪改查,管理角色和虛擬角色、角色和維度取值之間的關(guān)系分配3.PermissionManager管理權(quán)限的讀取、虛擬角色的增刪改查,管理虛擬角色和權(quán)限之間的關(guān)系分配4.DimensionManager管理SecuredObject的查詢、管理維度、維度取值的增刪改查,管理SecuredObject和維度取值之間的關(guān)系分配。
      各管理類將數(shù)據(jù)庫原子操作委托給數(shù)據(jù)訪問類實(shí)現(xiàn),這里我們將其稱為DAO(數(shù)據(jù)訪問對象)。管理類關(guān)注于面向模型的業(yè)務(wù)操作,并統(tǒng)一協(xié)調(diào)數(shù)據(jù)庫事務(wù)處理。而各DAO關(guān)心某一種數(shù)據(jù)實(shí)體的數(shù)據(jù)庫操作,在該示例中以接口形式描述,具體實(shí)現(xiàn)可以采用JDBC、ORMapping等方式,由于和本發(fā)明沒有直接關(guān)系,這里不再贅述。
      下面以UML類圖的方式給出管理功能域相關(guān)類的靜態(tài)設(shè)計(jì)1.圖2是用戶及用戶管理類UML類圖2.圖3是角色、虛擬角色及角色管理類UML類圖3.圖4是權(quán)限及權(quán)限管理類圖4.圖5是維度、維度取值、SecuredObject及維度管理類以上各類實(shí)現(xiàn)了模型中管理功能域的核心功能,客戶端代碼可以通過調(diào)用各Manager類實(shí)現(xiàn)對模型中各要素的查詢及修改。同時(shí)管理功能域也是支撐功能域的基礎(chǔ),為運(yùn)行時(shí)訪問控制提供基本的數(shù)據(jù)支持。
      2.2數(shù)據(jù)庫設(shè)計(jì)使用數(shù)據(jù)庫實(shí)現(xiàn)模型中各元素的存儲,另下面描述的各表中的記錄均可以通過客戶端代碼調(diào)用管理功能域提供的API生成。建表語句如下1.用戶表記錄系統(tǒng)中所有用戶CREATE TABLE TC_USER(IDVARCHAR2(32)PRIMARY KEY,NAME VARCHAR2(64),PASSWORD VARCHAR2(32),2.角色表記錄系統(tǒng)中所有角色CREATE TABLE TC_ROLE(ID VARCHAR2(32)PRIMARY KEY,TITLE VARCHAR2(64),DESCRIPTIONVARCHAR2(256),
      VIRTUALROLEIDVARCHAR2(32))在該示例中角色表應(yīng)該存在如下各記錄

      3.用戶角色關(guān)聯(lián)表記錄用戶和角色之間多對多的關(guān)聯(lián)關(guān)系CREATE TABLE TC_USER_ROLE(USERID VARCHAR2(32),ROLEID VARCHAR2(32),PRIMARY KEY(USERID,ROLEID)4.虛擬角色表記錄系統(tǒng)中所有虛擬角色CREATE TABLE TC_VIRTUALROLE(ID VARCHAR2(32)PRIMARY KEY,TITLEVARCHAR2(64),DESCRIPTION VARCHAR2(256)在該示例中虛擬角色應(yīng)該存在如下各記錄

      5.權(quán)限表記錄系統(tǒng)中所有權(quán)限點(diǎn)CREATE TABLE TC_PERMISSION(ID VARCHAR2(32)PRIMARY KEY,TITLE VARCHAR2(64))在該示例中權(quán)限表應(yīng)該存在如下各記錄


      6.虛擬角色權(quán)限關(guān)聯(lián)表記錄系統(tǒng)中虛擬角色和權(quán)限點(diǎn)之間多對多的聯(lián)系CREATE TABLE TC_VROLE_PERMISSION(VIRTUALROLEID VARCHAR2(32),PERMISSIONIDVARCHAR2(32),PRIMARY KEY(VIRTUALROLEID,PERMISSIONID)在該示例中虛擬角色權(quán)限關(guān)聯(lián)表應(yīng)該存在如下各記錄

      7.維度表記錄系統(tǒng)中所有維度CREATE TABLE TC_DIMENSION(ID VARCHAR2(32)PRIMARY KEY,NAME VARCHAR2(64),TITLEVARCHAR2(64)在該示例中維度表應(yīng)該存在如下各記錄

      8.維度取值表記錄系統(tǒng)中所有維度取值CREATE TABLE TC_DIMENSIONVALUE(ID VARCHAR2(32)PRIMARY KEY,PARENTIDVARCHAR2(32),DIMENSIONID VARCHAR2(32),TITLE VARCHAR2(64),NAMEVARCHAR2(32)在該示例中維度取值表應(yīng)該存在如下各記錄


      9.角色維度取值關(guān)聯(lián)表記錄系統(tǒng)中角色與維度取值之間的多對多的關(guān)聯(lián)關(guān)系CREATE TABLE TC_ROLE_DIMENSIONVALUE(ROLEID VARCHAR2(32),DIMENSIONVALUEID VARCHAR2(32),PRIMARY KEY(ROLEID,DIMENSIONVALUEID)在該示例中角色維度取值關(guān)聯(lián)表應(yīng)該存在如下各記錄

      10.安全管理對象視圖記錄系統(tǒng)中所有受訪問控制模塊管理的被管理對象考慮到模型中SecuredObject概念來源于軟件系統(tǒng)的各個(gè)被管理對象,假設(shè)各對象在數(shù)據(jù)庫中存在記錄,可以使用數(shù)據(jù)庫視圖來完成SecuredObject的收集,比如系統(tǒng)中需要將交換機(jī)(SWITCH)納入訪問控制,可建立如下視圖<pre listing-type="program-listing">CREATE OR REPLACE VIEW VC_SECUREDOBJECT(ENTITYID,TYPE,TITLE)AS(SELECT ID,′SWITCH′,TITLE FROM TC_SWITCHUNIONSELECT ID,TYPE,TITLE FROM TC_GENERALSO)CREATE TABLE TC_SWITCH( ID VARCHAR2(32)PRIMARY KEY, TITLE VARCHAR2(64),)CREATE TABLE TC_GENERALSO( IDVARCHAR2(32)PRIMARY KEY, TITLE VARCHAR2(64), TYPE VARCHAR2(32))</pre>ENTITYID代表系統(tǒng)中該被管理對象的唯一標(biāo)識;TYPE代表該對象的類型,在這里我們把所有交換機(jī)類型對象的類型定義為“SWITCH”;TITLE為其可識別的名字。
      TC_GENELRALSO表為SecuredObject的存儲提供了通用的解決方式,如果系統(tǒng)中被管理對象沒有象交換機(jī)那樣擁有自己獨(dú)立的數(shù)據(jù)表,可以將其記錄配置在該表中以納入管理。注意需要為對象定義合適的類型。
      這里我們將交換機(jī)信息配置在TC_SWITCH表中,記錄如下

      則視圖VC_SECUREDOBJECT中記錄為

      在該示例中TC_GENERALSO表中不需要配置任何數(shù)據(jù)。
      11.維度取值被管對象關(guān)聯(lián)表記錄系統(tǒng)中維度取值與被管理對象之間多對多的關(guān)聯(lián)關(guān)系CREATE TABLE TC_DV_SO(DVID VARCHAR2(32),SOID VARCHAR2(32)在該示例中維度取值被管對象關(guān)聯(lián)表應(yīng)該存在如下各記錄

      3支撐功能域?qū)崿F(xiàn)用戶的授權(quán)信息得到記錄之后,系統(tǒng)在運(yùn)行時(shí)應(yīng)完成對用戶權(quán)限的判斷,以實(shí)現(xiàn)訪問控制模型的功能。我們將這樣的功能稱為支撐功能域。
      在本示例的實(shí)現(xiàn)中,我們期望將訪問控制介入的邏輯剝離于核心業(yè)務(wù)邏輯之外,即核心業(yè)務(wù)邏輯不必關(guān)心權(quán)限這么一件事。可以通過代理模式實(shí)現(xiàn)該目的。類圖如圖6所示說明1.接口ISwitchService描述了系統(tǒng)提供的業(yè)務(wù)功能交換機(jī)狀態(tài)查詢(read方法)、交換機(jī)啟動(start方法)和交換機(jī)停止(stop方法)2.類SwitchManager實(shí)現(xiàn)這三個(gè)業(yè)務(wù)方法的邏輯3.SwitchService織入訪問控制邏輯控制過程可分為操作權(quán)限控制和數(shù)據(jù)權(quán)限控制兩步。
      3.1操作權(quán)限控制SwitchService實(shí)現(xiàn)操作權(quán)限控制邏輯織入的原理是對每個(gè)需要控制的業(yè)務(wù)方法進(jìn)行包裝,在執(zhí)行真正的業(yè)務(wù)方法之前,根據(jù)上下文環(huán)境獲取調(diào)用該用戶的身份信息,并根據(jù)該業(yè)務(wù)方法所綁定的權(quán)限點(diǎn)進(jìn)行查找匹配,如果該用戶與該權(quán)限點(diǎn)具有關(guān)聯(lián)關(guān)系,則認(rèn)為通過操作權(quán)限的控制,否則應(yīng)該拋出權(quán)限異常。
      這里需要注意的是,用戶請求的業(yè)務(wù)方法,其方法本身應(yīng)該知道該方法使用什么Permission來控制用戶的請求。因此,業(yè)務(wù)方法應(yīng)該承擔(dān)起選取合適Permission記錄的職責(zé)。
      操作權(quán)限查找匹配的詳細(xì)過程由Authorizator組件封裝,SwitchService只需收集用戶和權(quán)限信息,將控制邏輯委托給Authorizator即可。流程如圖7所示以start()方法為例,典型的SwitchService偽代碼如下public void start()throws Exception{User user=getUserFromContext();
      String permissionId="SWITCH.OPER";
      try{authrizator.hasOperationPermission(user,permissionId);
      }catch(PermissionDeniedException e){throw e;
      switchManager.start();
      Authorizator實(shí)現(xiàn)權(quán)限控制的具體方法為獲取該用戶所有角色,并根據(jù)角色獲取對應(yīng)的虛擬角色,虛擬角色記錄了權(quán)限信息,如果在虛擬角色集中最終找到了對應(yīng)Permission,認(rèn)為該用戶具有該操作權(quán)限。偽代碼如下<pre listing-type="program-listing">  public void hasOperationPermission(User user,String permissionId)&lt;br/&gt;throws PermissionDeniedException{   Set roles=user.getRoles();   for(Iterator iter=roles.iterator();iter.hasNext();){   Role role=(Role)iter.next();   Set permissionSet=role.getVirtualRole().getPermissions();   if(permissionSet==null)  continue;   for(Iterator iterl=permissionSet.iterator();iterl.hasNext();)&lt;br/&gt;{  Permission element=(Permission)iterl.next();  if(element.getId().equals(permissionId))  return;  throw new PermissionDeniedException(user,permissionId);</pre>3.2數(shù)據(jù)權(quán)限控制數(shù)據(jù)控制同樣可以通過包裝業(yè)務(wù)方法來實(shí)現(xiàn)。比如當(dāng)用戶請求查詢某些被管理對象的時(shí)候,可以考慮使用過濾器來將用戶不具有數(shù)據(jù)權(quán)限的對象過濾掉過濾器應(yīng)該由各業(yè)務(wù)模塊自行實(shí)現(xiàn),具體流程可以是獲取該用戶所有角色,判斷角色下的DimensionValue的集合,就可以得到SecuredObject的集合,使用該集合作為過濾的依據(jù),在過濾過程中應(yīng)該注意在同一Dimension下各DimensionValue之間,應(yīng)該對SecuredObject取并集,在不同Dimension下應(yīng)該取交集。
      對于那些非查詢類的業(yè)務(wù)操作,可以通過類似的匹配方法,判斷該用戶是否具有對相關(guān)對象的權(quán)限。匹配的詳細(xì)過程可以委托給DataAuthorizator實(shí)現(xiàn)。
      以read方法為例,典型的SwitchService的偽代碼如下public SwitchStatus read(Switch switch)throws Exception{User user=getUserFromContext();
      String securedObjectType="SWITCH";
      try{dataAuthorizator.hasDataPermission(user,switchId,securedObjectType);
      }catch(PermissionDeniedException e){throw e;return switchManager.read(switch);
      dataAuthorizator偽代碼如下:
      public void hasDataPermission(User user,String soId,String soType)throwsPemissionDeniedException{Set securedObjectsUnderUser=dimensionManager.getSecuredObjectsUnderUser(user,soType);
      可以看出,DimensionManager封裝了獲取用戶名下所有安全管理對象的邏輯,由于用戶可以同時(shí)具有一個(gè)或多個(gè)角色,因此,用戶名下所有安全管理對象應(yīng)該是各角色下安全管理對象的并集。
      為了求出某一個(gè)角色下所有該類型的被管理對象的集合,必須先將該角色下所有維度取值按照其維度類型進(jìn)行分組。求出每個(gè)維度取值下關(guān)聯(lián)的被管理對象,同組間先取并集,然后各組間取交集。最終得到被管對象集合。
      權(quán)利要求
      1.基于角色的多維度對象訪問控制方法其特征是在被管理對象集中引入“對象維度”,細(xì)化被管對象定義;在不同的維度下將被管對象劃分為多個(gè)組,同時(shí)允許組之間的嵌套,形成樹狀層次關(guān)系;不同維度代表對象不同的分類方式,系統(tǒng)中支持多種分類方式并存。將系統(tǒng)權(quán)限劃分為數(shù)據(jù)權(quán)限和操作權(quán)限;針對數(shù)據(jù)權(quán)限,系統(tǒng)中所有需要受權(quán)限控制的數(shù)據(jù)實(shí)體都應(yīng)該擁有對應(yīng)的安全管理對象SecuredObject,將這些安全對象與不同的角色Role關(guān)聯(lián),即可完成數(shù)據(jù)權(quán)限的劃分;在該模型中將安全管理對象進(jìn)行了分組,支持在同一運(yùn)行時(shí)對系統(tǒng)中的所有安全管理對象進(jìn)行多種分組方式,每一個(gè)分組方式都稱之為一個(gè)“維度Dimension”,而在該維度下的取值,即具體的一個(gè)組別,稱之為“維度取值DimensionValue”;在分組之后,可以在系統(tǒng)中建立角色與維度取值之間的關(guān)聯(lián),以達(dá)成數(shù)據(jù)權(quán)限的分配。
      2.根據(jù)權(quán)利要求1所述的多維度對象訪問控制方法其特征是針對操作權(quán)限,設(shè)有虛擬角色VirtualRole,將虛擬角色與操作權(quán)限Permission關(guān)聯(lián),可完成對操作權(quán)限的分配;同時(shí),在模型中建立虛擬角色與角色之間的多對一的關(guān)系,以完成數(shù)據(jù)權(quán)限和操作權(quán)限的融合。
      3.根據(jù)權(quán)利要求1所述的多維度對象訪問控制方法其特征是模型中的用戶最終和角色關(guān)聯(lián),達(dá)到最終的授權(quán)效果。
      全文摘要
      基于角色的多維度對象訪問控制方法在被管理對象集中引入“對象維度”的概念,細(xì)化被管對象定義;在不同的維度下將被管對象劃分為多個(gè)組,同時(shí)允許組之間的嵌套,形成樹狀層次關(guān)系;不同維度代表對象不同的分類方式,系統(tǒng)中支持多種分類方式并存。將系統(tǒng)權(quán)限劃分為數(shù)據(jù)權(quán)限和操作權(quán)限。針對數(shù)據(jù)權(quán)限,系統(tǒng)中所有需要受權(quán)限控制的數(shù)據(jù)實(shí)體都應(yīng)該擁有對應(yīng)的安全管理對象,將這些安全對象與不同的角色Role關(guān)聯(lián),即可完成數(shù)據(jù)權(quán)限的劃分;在該模型中將安全管理對象進(jìn)行了分組,支持在同一運(yùn)行時(shí)對系統(tǒng)中的所有安全管理對象進(jìn)行多種分組方式,每一個(gè)分組方式都稱之為一個(gè)“維度”,而在該維度下的取值,即具體的一個(gè)組別。
      文檔編號H04L29/06GK1960252SQ200610085769
      公開日2007年5月9日 申請日期2006年6月30日 優(yōu)先權(quán)日2006年6月30日
      發(fā)明者吳旻哲, 黃小新, 宋海華 申請人:南京聯(lián)創(chuàng)科技股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1