基於角色和用戶組的擴展訪問控制模型

  在信息系統安全機制中,訪問控制是一項重要機制,有着許多重要應用。訪問控制或權限管理系統是當前計算機應用系統重複開發率最高的模塊之一。在企業中,不同的應用系統幾乎都擁有一套獨立的權限管理系統,不同的權限管理系統在數據存儲、權限訪問和訪問控制機制等方面都可能不一樣。近年來,訪問控制的研究發展很快,有許多訪問控制模型被提出[1~3]。建立規範的訪問控制模型是實現嚴格訪問控制策略所必需的,因此,訪問控制模型的研究具有十分重要的現實意義。


  目前, 基於角色訪問控制模型(rolebased access control,RBAC)一直是系統安全管理的研究熱點,在應用系統中也得到了很好的應用[4~6]。但是,筆者發現在目前大多數RBAC的實際應用中,屬於相同角色的用戶對功能對象都具有相同的訪問權限,而屬於同一角色的不同用戶對數據或資源對象的訪問權限卻是不同的。其對資源的權限控制往往是根據實際訪問控制要求,直接以用戶爲對象授予權限,將用戶對數據或資源部分的訪問權限用數據庫中的某些業務數據來表示。在授權時預先將這些數據手工從相關業務表中抽取出來,以靜態形式存儲於資源權限表中,查權時再通過查表方法來確定用戶所擁有的資源權限。但是,由於這些權限數據中包含了大量的業務數據,隨着用戶角色或職能的變動,系統管理員必須手工更新大量對應的權限數據,這樣不但增加了他們的工作負擔而且極易造成數據的不一致。針對以上問題,本文在RBAC基礎上加入用戶組,使用戶的功能和資源權限由角色和用戶組共同來確定。


  1 基於角色的訪問控制模型


  傳統的訪問控制,如自主訪問控制(discretionary access control)和強制訪問控制(mandatory access control)是以用戶爲基本對象授予權限,這使得大型複雜系統的授權管理繁雜,且容易出錯。隨着對多用戶、多系統的研究不斷深入,角色的概念逐漸形成,並逐步產生了以角色爲中心的訪問控制模型,即RBAC。RBAC 包含三個實體,即用戶(user)、角色(role)和權限(privilege)。用戶是對數據對象進行操作的主體,可以是人、機器人和計算機等;權限是對某一數據對象可操作的權利。角色的概念源於實際工作中的職務;一個具體職務代表了在工作中處理某些事務的權利。角色管理是大型數據庫管理用戶的一種思想,將這個概念引入到授權管理中,則角色作爲中間橋樑將用戶與權限聯繫起來。一個角色與權限管理可以看做是該角色擁有的一組權限集合,與用戶關聯又可以看做是若干具有系統身份的用戶集合。基於角色的訪問控制技術的核心思想是將訪問權限轉換成角色的權限,通過給用戶分配不同的角色,達到賦予用戶不同權限的目的。它需要管理員根據情況創建角色,然後將有關權限賦予給此角色,最後將該角色授予合適的用戶,這樣用戶就可以獲得該用戶所擁有的權限。

 

  RBAC模型如圖1所示。用戶和角色的關聯表示若干具有相同身份的用戶擁有的許可集,一個用戶可被賦予若干角色,一個角色也可以被賦予給若干個具體用戶,兩者之間是多對多的關係。角色和權限的關聯表示角色擁有的一組權限的集合,一個角色可以具有多項權限,一項權限也可以被賦予給多個不同的角色,它們之間也是多對多的關係。RBAC使訪問控制適應性更強。管理者可以通過調節用戶所屬的角色、角色相關的操作與角色之間的層次關係,靈活地控制用戶訪問資源的方式。而且,很容易將角色結構與部門內部用戶結構結合起來,達到簡化管理、明確責任的目的。從這些特點可以看出,引入角色概念實現了用戶與權限的邏輯分離,極大地方便了權限的管理,這也是本文選擇基於RBAC發展訪問控制擴展模型的原因。

青島網站建設,青島網站設計


  2 引入用戶組後的擴展型訪問控制模型(ERBAC)


  2.1 用戶組定義
  在RBAC的規範中沒有提到關於用戶是如何組織的,爲了使系統適合於分散式權限管理,加入了用戶組這一概念,它是指一羣用戶的集合。很多系統在行業實際應用中,由於行業部門機構龐大,假如系統不引入用戶組,當爲部門內部用戶授權時就顯得比較混亂,授權也顯得非常繁瑣。當按樹型結構方式將行業內所涉及的部門按行政或其他隸屬關係進行組織,授權就會清晰得多。而且當某個組的所有用戶職能相同時,可以創建一個組角色,然後將這個角色授予整個組,則整個組的人員均獲得了權限;當改變該組角色的權限時,整個組的權限也相應地改變了,從而大大簡化了授權管理。用戶是系統中權限控制的訪問主體,引入用戶組是非常有必要的。

 
  2.2 用戶組與角色關係
  既然可以直接對用戶組授權,那麼是否用戶組就可以代替角色呢?從上面的分析可知,當用戶組內人員職能相同的情況下,用戶組能夠代替角色,這也是人們常把基於用戶組的訪問控制模式看成基於角色的訪問控制模式的原因。但是,同一用戶組內的用戶有的職能不同,假如以組的授權模式授權,則組內職能不同的用戶就會越權,整個系統顯然是不安全的。再對RBAC中的角色分析得知,角色和用戶組雖有相似之處,卻有着根本區別:組是用戶的集合, 而不是權限的集合;角色作爲中介,既是用戶又是權限的集合體。因此,用戶組是不能代替角色的。

 
  2.3 ERBAC模型
  在大型企業系統中,由於用戶衆多、業務對象龐雜,使得角色的定義在權限管理中比較複雜。用戶的業務需求靈活多變,系統的功能和數據資源可能不斷增加或更新,權限也在隨之變化;同時,系統用戶由於工作職責的需要,各自的權限也可能相應變化。因此,角色的定義通常隨時間和部門的調整發生變化;同時,多個角色的權限往往相互重疊,無法區別對數據資源的訪問權限。如果僅僅採用通過調整角色的定義來改變授權,則難以滿足複雜情況變化的需要。在目前大多數RBAC的實際應用中,屬於相同角色的用戶對功能對象都具有相同的訪問權限,而屬於同一角色的不同用戶對數據或資源對象的訪問權限卻是不同的。例如在某管理信息系統中,屬於相同角色但部門不同的用戶對每個功能模塊的菜單、窗口和按鈕等功能對象的訪問操作都是相同的,但其在相同的功能操作界面中只能訪問屬於自己部門的數據。用戶對功能對象的訪問權限完全可以按照RBAC的方法來管理,即管理員根據情況創建角色,然後將有關功能權限賦予此角色,最後將該角色授予合適用戶,這樣用戶就可以獲得該用戶所擁有的功能權限。現在的關鍵是如何靈活地解決用戶對數據資源對象的個性化訪問要求呢?經過觀察筆者發現,系統的數據是按部門或用戶組來組織的,因此可以以用戶組爲單位來分配數據資源權限。本文基於這種思想,在RBAC基礎上增加用戶組資源權限賦予,採用對角色和用戶組混合授權的方法,使得權限控制更加靈活和安全。圖2是採用對用戶組和角色混合授權的擴展型基於角色的權限控制模型(extended rolebased access control,ERBAC)。

 


  ERBAC模型的描述如下:如果某個用戶U對某個對象O具有的權限記爲P(U,O),則有如下關係:
  P(U,O)=Pr(R(u),OF)∪Pg(G(u),OR)。其中,Pr(R(u),OF)是通過用戶U所屬的角色R對功能對象OF的權限;Pg(G(u),OR)是通過用戶所在部門授權所確定的對資源對象OR的權限;P(U,O)是Pr和Pg兩者的並集,即用戶所屬角色對功能對象的權限與用戶所在部門對資源對象的權限之和。

  ERBAC模型除了RBAC模型的角色授權外,增加了用戶組對數據資源進行授權。其中,用戶與角色、角色與功能權限以及用戶組與資源權限之間都是多對多的關係。授權分爲功能授權和資源授權兩步,用戶所擁有的權限爲用戶所屬角色的功能權限和用戶所屬部門的資源權限之和。這種採用混合授權的方法不僅有效解決了角色定義、用戶職責、功能和資源等動態變化對系統所帶來的問題,更增強了對用戶授權的靈活性和可維護性。當權限授權後, 一個具體的用戶要求訪問系統某模塊的功能時,系統同時判斷該用戶所屬角色和用戶所在用戶組,同時判斷角色所擁有的功能權限和用戶組擁有的資源權限,這樣用戶就可得到自身全部擁有的功能和資源權限。根據上述授權方法和權限訪問控制,ERBAC模型在企業應用中佔有很大優勢:
  a)用戶、用戶組、角色以及權限的設置將企業結構和崗位人員職責簡單地映射到企業應用系統中,使得對系統權限部分的設計和應用更加直觀、靈活,易於管理和維護;
  b)如果企業需求中某工作崗位職責變更,無須逐一更改處於該崗位的所有工作人員的權限,而只需更改執行該崗位職責的角色權限;
  c)若企業某些用戶的職責發生變動,所在用戶組或部門無變動時,只需簡單地修改用戶角色即可;
  d)當企業某些用戶進行了部門調遣,而用戶的職責沒發生變動,只需更改用戶的所屬用戶組,這樣用戶對資源的權限相應地發生了改變,而無須對用戶進行資源的一一授權;
  e)如果企業某些用戶的職責與所屬部門同時發生變動,需要同時修改用戶角色和用戶的所屬用戶組,這樣用戶的功能和資源權限得到了相應的修改。
  ERBAC 模型的這些特點使得系統權限維護相當簡單快捷、安全有效,非常適合於大型企業組織的系統開發。


  3 ERBAC的設計與實現


  3.1 ERBAC基本設計
  ERBAC的基本思想是:用戶與功能、用戶與資源不直接發生關係,而是分別增加角色和用戶組,繼而增加用戶—角色關係表和用戶組—用戶關係表,使用戶與功能、用戶與資源發生關係,如圖3所示。其中,用戶組通過用戶組—資源關係表爲用戶組分配資源,用戶組通過用戶組—用戶關係表爲用戶組添加用戶,用戶通過用戶—角色關係表爲用戶授予角色,角色通過角色—功能關係表爲角色分配功能,這樣用戶與功能、用戶與資源就產生了相應的關係。

 


  3.2 數據庫設計
  根據整個流程可將ERBAC系統分爲不同的功能模塊,並可將用戶按部門分爲不同權限的訪問用戶。根據上述設計思路,用戶及權限信息均被保存在系統的數據庫九張表中,即用戶表、用戶組表、角色表、功能權限表、資源權限表、用戶組與資源關係表、用戶組與用戶關係表、用戶與角色關係表、角色與功能關係表。各表詳細設計及其關係如圖4所示。

 


  ERBAC的目的是建立用戶與功能和資源之間的對應關係。由圖4可知,用戶與功能、用戶與資源不直接發生關係,而是分別增加角色和用戶組,繼而增加用戶—角色關係表和用戶組—用戶關係表,使用戶與功能、用戶與資源發生關係。這樣處理的好處在於使得用戶和角色的增加和維護相對獨立,不發生相互干擾,使得數據庫的設計變得更加靈活,用戶和角色之間也可以建立動態的對應關係。角色與功能之間也不直接相關,而是通過角色—功能表發生關係,從而避免了角色和功能之間的相互影響,使得角色與功能之間也形成了動態的對應關係。而用戶—用戶組—資源之間的設計也是如此,這樣更易於數據庫的維護。

 
  3.3 ERBAC的實現
  筆者以Visual C# 2005爲開發工具,數據庫爲Oracle 10g,設計實現了某信息管理系統中的訪問控制模塊,並使用模擬數據對本文的模型進行了實驗驗證。與一般的信息管理系統相比,該系統具有組織機構龐大、內部人員行政隸屬等關係複雜、用戶職責變化頻繁、用戶數量多等特點。本文設計的ERBAC模型很好地適應了該信息管理系統的特點,有效解決了角色定義、用戶職責、功能和資源等動態變化對系統所帶來的問題,增強了對用戶授權的靈活性和可維護性。訪問控制系統在一定程度上獨立於整個信息管理系統,具有很好的可重用性。


  在訪問控制系統中,由系統管理員動態地對各個用戶組的用戶設置不同的訪問權限。在打開系統時,首先啓動用戶登錄界面,當輸入用戶名和密碼後,系統根據存儲在數據庫中用戶與角色關係表、角色與功能關係表確定哪些頁面或窗體能夠使用,對於每一窗體的每一個按鈕,根據用戶的角色判斷按鈕是否可用,無效的設置爲灰色;同時根據存儲在數據庫中用戶與用戶組關係表、用戶組與資源關係表確定哪些資源或數據可以使用。其基本流程如圖5所示。

 

 
  4 結束語


  ERBAC模型通過對用戶和角色混合授權,有效地彌補了RBAC角色授權機制的缺陷,符合現代企業組織結構的管理特點,使得整個系統權限管理方便靈活、安全有效,在實際應用系統的用戶權限管理中取得了良好的效果。同時,該模型具有很強的通用性,可廣泛應用於其他系統權限管理。

發佈了32 篇原創文章 · 獲贊 5 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章