基於角色管理的系統訪問控制

rockypeng發表於2013-10-09

引言(Introduction)

1.1. 關鍵詞定義(Definitions)

有關定義說明如下:

安全管理:計算機技術安全管理的範圍很廣,可以包括網路安全性、資料安全性、作業系統安全性以及應用程式安全性等。很多方面的安全性管理大都已經有成熟的產品了,我們只需根據自己需要有選擇性的使用就可達到自己的目的了。本文中有關關涉及”安全管理”一詞均只針對本公司推出的應用中有關物件與資料而言範圍有限。

主體:即可以象應用系統發出應用請求任何實體,包括各種使用者、其它與本系統有介面的應用程式、非法入侵者。系統必須具有識別主體的能力,介面實際上也是由使用者登記的,故主要問題是校驗使用者身份的合法性,系統應建立使用者鑑別機構以驗證使用者身份。

使用者:使用者就是一個可以獨立訪問計算機系統中的資料或者用資料表示的其它資源的主體,我們用USERS表示一個使用者集合。使用者在一般情況下是指人。

許可權:許可權是對計算機系統中的資料或者用資料表示的其它資源進行訪問的許可。我們用PERMISSION表示一個許可權集合。可分為物件訪問控制和資料訪問控制兩種。

物件訪問控制:用一個二元組來表示:(控制物件,訪問型別)。其中的控制物件表示系統中一切需要進行訪問控制的資源。我們將引入一套完整的資源表示方法來對系統中出現的各類資源進行定義和引用(詳見後述)。訪問型別是指對於相應的受控物件的訪問控制,如:讀取、修改、刪除等等。

資料訪問控制:如果不對資料訪問加以控制,系統的安全性是得不到保證的,容易發生資料洩密事件。所以在許可權中必須對物件可訪問的資料進行按不同的等級給予加密保護。我們同樣用一個二元組來表示:(控制物件,謂詞)。

許可權最終可以組合成如下形式:(控制物件,訪問型別,謂詞)。

角色:角色是指一個組織或任務中的工作或位置,它代表了一種資格、權利和責任。我們用ROLES表示一個角色集合。

使用者委派:使用者委派是USERS與ROLES之間的一個二元關係,我們用(u,r)來表示使用者u被委派了一個角色r。

許可權配置:許可權配置是ROLES與PERMISSION之間的一個二元關係,我們用(r,p)來表示角色r擁有一個許可權p。

 

回頁首

需求分析

根據我們在本行業多年積累下來的經驗,參考了其它同行的成功經驗整合了先進的思想,我們有能力為我們自己的應用系統開發一套功能完善而且又靈活方便的安全管理系統。使開發人員從許可權管理重複勞動的負擔中解放出來,專心致力於應用程式的功能上的開發。 通過收集公司從事MIS專案開發經驗豐富的軟體工程師對在各種情況下的對應系統的安性提出的需求做出瞭如下的總結。

本系統在安全管理方面要考慮如下幾個方面問題。

2.1. 角色與使用者

需求: 
角色由使用者(這個使用者與下一行的”使用者”應該不是同一個定義,”客戶”好像合適一些?不錯,此處的使用者確是有些偏於指向我們合同意義的客戶,但是我認為與下面定義的”使用者”不存在什麼本質上的區別,因為客戶最終也是以在系統中登記的使用者身份來使用本系統,使用者所能完成的功能也就是客戶的需求。兩者之間的細微區別讀者可自己通過上下文加區分)自行定義,根據業務崗位不同可以定義多個角色。

登入系統,首先需要向系統申請註冊,同一個使用者只能在系統中登記一次。

使用者是登入系統的楔子,角色是使用者許可權的基礎。使用者可以扮演多個角色。

將某一角色授予某一使用者時,許可權不能超越該角色許可權,但可以小於該角色許可權。

使用者口令與資料庫訪問口令加密

分析說明

  • 每個使用者在系統中由一個唯的USERID標識。
  • 使用者通過系統登入介面登入系統,系統通過加密演算法驗證使用者身份和判斷使用者是否已經登入系統。如果登入成功通知Application preference service和安全管理系統儲存使用者登入資訊。
  • 角色由使用者根據自己的設想的組織機構進行新增設定,提供一個專門的模組用來設定組織機構,使用者通過組織機構(定義?部門機構還是後面提到的”機構是實現和執行各種策略的功能的集合”)方便地進行角色管理。例如:使用者可以通過部門機構來進行角色的管理,部門採用編號分層的方式,編號的每兩位為一個層次。例如一級部門編號為兩位,二級部門編號為四位依此類推下去直到將全厂部門機構建立樹狀結構圖。這類資料僅為方便使用者管理角色而存在,在系統的其他方面不存在任何意義。
  • 每個角色在系統中也是由一個唯一角色編號來標識,同時必須儲存使用者所設定的機構資訊,一般來說每個角色只需要儲存自己所在機構的程式碼即可。

2.2. 選單控制

需求 
此選單乃系統業務功能選單。由業務功能模組列表和使用者選單定製共同組成。每個使用者可以擁有自己的選單,也可以直接採用角色預設選單(當使用者同時充當多個角色並且許可權重複時,重複的許可權僅一次有效)

分析說明

  • 為了方便使用者進行許可權組織管理,需要在系統中建立一張業務功能模組列表,在使用者介面上表示為樹狀分層結構。
  • 業務功能模組以使用者定製選單來體現,仍然採用編號分層方式,編號的每兩位為一個層次。並標明一個層次是子選單還是業務模組,子選單隻有一種可否被訪問的許可權設定,業務模組許可權由系統管理員或授權使用者進行設定。對每個業務模組設定它的物件控制、記錄增刪改控制和記錄集控制。當使用者擁有對業務模組的某一許可權時,必需對處於它上級的子選單有可被訪問的許可權。刪除某一個級子選單時將提示使用者他的下級選單與功能模組都將被刪除掉。
  • 當使用者同時充當多個角色並且許可權重複時,重複的許可權僅一次有效,使用者擁有他充當的所有角色的許可權的並集。
  • 使用者與角色擁有的系統許可權查詢時以業務功能模組列表的樹狀結構顯示出來。

2.3. 物件控制

需求 
物件是指應用系統視窗中的可視物件,如選單項、按鈕、下拉選單框、資料編輯控制元件及資料編輯控制元件的欄位等。物件控制通過角色與使用者授權來實現。

物件控制包括對物件屬性的控制可對資料編輯控制元件中的資料記錄的維護許可權:

  • 物件屬性:使能/禁止、可視/遮蔽
  • 記錄維護:增加、刪除、修改的組合

分析說明

  • 將每個業務模組可進行屬性設定的物件由程式設計師事先設定或由售後技術支援工程師指導使用者加入。
  • 在系統管理員或授權使用者進行設定業務模組的每種許可權時,設定使用者在擁有該業務模組這種許可權時的物件屬性。沒有設定屬性的物件在儲存物件資訊的時候,使用者許可權資訊中不被儲存。

2.4. 記錄集控制

需求 
記錄集的控制是通過條件設定來實現,因此,需要控制記錄集的資料庫表需要設定專門的記錄集篩選欄位,而篩選條件由使用者根據崗位自進定義,建立過濾表,統一管理。

分析說明

  1. 在對使用者設定業務模組許可權時,同時在過濾表中設定本模組的資料編輯控制元件的資料篩選條件,篩選條件是組成SQL語句的WHERE條件子句迫使當前訪問的模組根據篩選條件對資料編輯控制元件的SQL語句進行重組,並檢索資料。
  2. 當存在需要從資料庫中多個表取資料的情況時,過濾表中存在多條記錄,每一條記錄記錄一個資料編輯控制元件取數的篩選條件。
  3. SQL語句的WHERE子句的生成與校驗可以通過的SQL語法分析服務,利用物件所提供的函式分析SQL語句,擷取WHERE條件子句,校驗新組合的SQL語句的合法性。

2.5. 許可權分佈管理

需求 
上述提到的許可權管理內容應該滿足既可集中管理,也可分散管理的目標。

分析說明

  1. 許可權管理由系統管理員集中管理,系統管理員工作負擔過大,難對所有崗位的分工有全面和具體的瞭解,對許可權作出標準細緻的劃分,對於大型的管理系統適合於把一部分設定許可權的交由一些比較高階的使用者來進行,有利於各崗位細緻協調的工作。這就是許可權的分散管理。
  2. 要實現許可權的分散管理,就須對授權模組進行一些授權管理,這要求整個系統的授權安全管理工作要做到細緻,不要出現許可權的漏洞使一些高階使用者擁有過大的許可權。
 

回頁首

方案設計

3.1. 安全保護策略

從上面各方面的需求分析來看,我們需要一套既行之有效,又方便靈活的安全管理方案。要採用各種控制機構和密碼保護技術。安全保護策略是設計安全可靠系統的準則,通常涉及下列幾個方面:

  1. 區分安全策略與安全機構。
  2. 策略是資訊保安性的高階指導,策略出自對使用者要求,裝置環境、機構規則、法律約束等方面的詳細研究。策略重要性在於指導作用。而機構是實現和執行各種策略的功能的集合。完善的機構是實施正確安全策略的物質基礎。故一般要求機構能實現不同的策略,以便策略變動時無需要更換安全機構。

  3. 安全策略:企業資訊管理系統是一個大型的分散式資料資源管理系統,它包括資訊量巨大以及不同程度的資訊敏感度,各種有訪問需求的使用者,使得其安全管理非常複雜。基於角色的系統安全控制模型是目前國際上流行的先進的安全管理控制方法。我們的安全管理系統也根據自身的需要有選擇性的吸收其部分思想。其特點是通過分配和取消角色來完成使用者許可權的授予和取消,並且提供了角色分配規則和操作檢查規則。安全管理人員根據需要定義各種角色,並設定合適的訪問許可權,而使用者根據其責任和資歷再被指派為不同的角色。這樣,整個訪問控制過程就分成兩個部分,即訪問許可權與角色相關聯,角色再與使用者關聯,從而實現了使用者與訪問許可權的邏輯分離,如下圖所示,角色可以看成是一個表達訪問控控制策略的語義結構,它可以表示承擔特定工作的資格。

     

    由於實現了使用者與訪問許可權的邏輯分離,基於角色的策略極大的方便了許可權管理。例如,如果一個使用者的職位發生變化,只要將使用者當前的角色去掉,加入代表新職務或新任務的角色即可。研究表明,角色/許可權之間的變化比角色/使用者關係之間的變化相對要慢得多,並且委派使用者到角色不需要很多技術,可以由行政管理人員來執行,而配置許可權到角色的工作比較複雜,需要一定的技術,可以由專門的技術人員來承擔,但是不給他們委派使用者的許可權,這與現實中情況正好一致。除了方便許可權管理之外,基於角色的訪問控制方法還可以很好的地描述角色層次關係,實現最少許可權原則和職責分離的原則。 

  4. 安全保護機構:本系統的安全保護機構基本上是於上面的安全策略相互適應的,系統保護的總體結構示意如下: 
     
    保護機構應負責阻止一切物理破壞和使用者可能的操作破壞,後者歸結為主體可用何種方式訪問哪些物件。主體、訪問型別、物件是我們要討論的保護機構主要成分 
  5. 安全管理的職責:安全管理有集中管理與分散管理兩種。前者意指一切權利都由負責系統安全工作的專職人員或小組組掌握,他(們)決定使用者的訪問權利,控制系統安全一切方面。後者是指不同的管理員控制著系統安全的不同方面,管理系統的不同部分,決定不同使用者的訪問權利,甚至允許物件所有者轉讓訪問物件的權利,集中管理,安全可靠但不靈活;分散管理則應考慮避免漏洞和協調一致的問題。本系統因是針對大的集團企業管理的產品許可權分配比較複雜,故採用了集中管理與分散管理相結合的形式。
  6. 訪問控制策略。它提供決定使用者訪問權利的依據。其中最重要的一個普遍的原則是”需者方知策略”(the need-to-know)。也就是說,只有一個工作需要的,才是他應該知道的。它從原則上限制了使用者不必要的訪問權利,從而堵截了許多破壞與洩露資料資訊的途經。按照這一原則授予使用者的權利,是使用者能完成工作的最小權利集合,故也稱之為”最少特權策略”。
  7. 資訊流動控制。只限制使用者的訪問權利而不考慮資料流動是極其危險的。例如,在考勤時各部門的主管只能為自己部門的職員考勤,人事部可以提取全部資料,因此在提取資料時一定要加以限制。控制資料流動以防止無權使用者在資料流動後獲得訪問權利。
  8. 密碼變換。對於非常機密資料可變換為密碼存貯,使得不知道密碼的入侵者無法破譯所得到的資料密碼。密碼變換能防止洩密,但不能保護資料資訊不被破壞。
  9. 軟硬結合保護。這是安全保護的基本策略,許多硬保護功能是軟體難以實現的,有些即使能實現,效率也不高。
  10. 對安全遭到破壞的響應。各種保護機構都有可能遭到破壞,因此係統必須制訂檢測破壞手段與處置措施。

3.2. 安全管理機構分析

3.2.1. 功能框架示意圖


  • 內部總體功能框架圖
     

  • 外呼叫的功能框架示意圖
     

3.2.2. 主要功能元件的職責 
3.2.2.1. 物件定義工具與許可權定義工具

  1. 物件定義工具。 
    物件是指系統中各種功能模組、資料、介面元素(包括選單、按鈕等各種介面上能控制的控制元件)等,它們是主體能訪問的各種物件。由於物件的機密程度不等,受到的保護程度亦有差別。系統中的物件均由程式設計師通過系統提供的物件定義工具事先定義好系統要控制的物件。系統也只能控制這些事先已定義好的物件,因此,物件定義是整個系統的核心步驟直接影響後面的各個安全控制環節。建議由開發程式設計師進行初始化配置。物件定義的包括如下幾步:
    • 功能模組定義:系統中除部分公用的介面、公用功能模組外,其它均為業務功能模組是使用者完成各自不同的業務功能的主要算途徑,也是我們安全管理要保護的重點物件,所以我們必須對業務功能模組定義。有定義的功能模組物件我們就有可能組織許可權根據使用者需要完成的工作配置使用者業務功能選單,這也符合”最少特權策略”。
    • 介面元素控制:除了功能選單要受到控制外,如要控制功能模組的介面元素其功能模組介面元素也需定義,大部分介面元素均包含有相關的業務功能操作,所以對相應操作的介面元素是進行定義是有必要的。
    • 資料資訊控制:業務功能模組的大部分介面元素是顯示和運算元據內容的基礎,也是使用者對讀取資料和運算元據的主要途徑,為了資料資訊的安全有必要對這介面元素的運算元據予以採取安全保密措施。這就需要對這些介面元素定義相關的資料約束條件。

    • 物件定義(流程) 流程圖如下
       
  2. 許可權定義工具。 
    在定義好系統物件的前提下,定義物件的在不同情況的的訪問型別,希望物件在不同情況下具有不同的訪問型別,這就需要定義物件的許可權。定義許可權就是是定義物件訪問控制和資料訪問控制。為了表述方便我們對許可權用一個三元組符號來表示P(o,t,p),其中o 表示訪問物件;t 表示訪問型別;p 表示謂詞。表示在謂詞p為真時對於物件o可進行t型別的訪問。許可權定義系統安全管理基礎步驟之一,只有給各種物件定義好訪問的許可權,才能給角色配置許可權,基於角色管理才能成為可能。系統提供定義許可權工具,請程式設計師根據實際需求定義物件的許可權。 
    定義許可權的流程圖如下:
     

3.2.2.2. 角色定義與許可權配置

  1. 角色定義。 
    基於角色的訪問控制方法的思想就是把對使用者的授權分成兩部份,用角色來充當使用者行駛許可權的中介。這樣,使用者與角色之間以及角色與許可權之間就形成了兩個多對多的關係。系統提供角色定義工具允許使用者根據自己的需要(職權、職位以及分擔的權利和責任)定義相應的角色。角色之間有相應繼承的關係,當一個角色r1繼承另一個角色r2時,r1就自動擁有了r2的訪問許可權(表示r1->r2)。角色繼承關係自然的反映了一個組織內部權利和責任的關係,為方便許可權管理提供了幫助。角色繼承關係提供了對已有角色的擴充和分類的手段,使定義新的角色可以在已有角色的基礎上進行,擴充就是通過增加父角色的許可權去定義子角色,分類通過不同子角色繼承同一父角色來體現。另外還允許多繼承,即一個角色繼承多個父角色,多繼承體現對角色的綜合能力。 
    角色定義示流程圖如下:
     
  2. 許可權配置。 
    角色是一組訪問許可權的集合,一個使用者可以是很多角色的成員,一個角色也可以有很多個許可權,而一個許可權也可以重複配置於多個角色。許可權配置工作是組織角色的許可權的工作步驟之一,只有角色具有相應的許可權後使用者委派才能具有實際意義。 
    許可權配置流程圖如下:
     

3.2.2.3. 使用者、使用者組定義

  1. 使用者定義。 
    系統的最終使用者是使用者,因此必須建立使用者的鑑別機構,登記使用者的身份資訊。在系統中定義可登入的使用者作業系統是系統安全管理所必須步驟,也是人與系統的介面。
  2. 使用者組定義。 
    為了本系統適用於分散式許可權管理,加入了使用者組的概念,是指一群使用者的集合。方便許可權管理使用者組也可以委派角色,當使用者被加入使用者組時自動對使用者的所在使用者組擁有的角色進行了委派。為了便於分散式許可權管理系統同時還支援對部分組的許可權進行下發方式處理,授權特定的使用者對使用者組的使用者許可權進行管理。

3.2.2.4. 許可權審查 
在授權完成後可檢查登入使用者所的擁有的能力表資訊,審查給使用者的許可權是合適,如不合適可重新進行使用者委派和收回部分許可權的處理。目前系統只能以對使用者組管理的模式對一個使用者組內的使用者可進行部分許可權收回處理。

3.2.2.5. 使用者鑑別機構 
安全保護的首要問題是鑑別使用者身份。目前有三種方法可用:第一、利用使用者的物理特徵(聲波、指紋、相貌、簽名)。這在理論是最可靠的,但由於物理特徵可能隨時間變化且記錄尚欠成熟等原因,使該方法未能廣泛應用。第二、利用使用者特有的證件,如身份證、機器可讀卡先考片,其缺點是證件可能被別人複製或冒用。第三、利用使用者知道的某件能證明其身份的約定(如口令)。這是當前較為常用的方法。本系統採用第三種方法。

使用者名稱稱 標識 其它情況
CHENDA GOOD … …
… … … … … …

如上表所示是使用者鑑別機構儲存的一張登記有每個使用者名稱稱、標識和有關情況的表,表中的使用者名稱通常是公開的,標識則是保密的,當使用者要訪問系統時,須首先把自已的名稱和標識登記到系統中(即出示證件)。這時使用者鑑別系統機構檢查使用者的標識是否與用表中的標識一致,是則認為使用者身份己得到證實,否則認為是假冒,系統將拒絕使用者要求執行的操作。口令是最常用的一種標識,通常由若干字母、數字組合而成。系統只允許使用者連續兩次或三次登記口令,如果都不對則要等待一段較長的時間才成重新登記,這種延長時間的方法能夠有效的防止冒名者猜測口令的可能。

3.2.2.6. 訪問控制機構 
杜絕對系統非法訪問主要方法是訪問控制。使用者系統的訪問規則可以用訪問規則表示,根據安全策略用訪問規則給0使用者授權。訪問控制就是要處理怎樣表達和核對訪問規則的問題。從形式上來說,一條訪問規則可以寫成四元組的形式(u,o,t,p)可前已有許可權表示形式重新表示為(u,P)。系統的訪問控制分為模組級控制和介面元素級控制。

 

存貯和檢查訪問規則是訪問控制機構須解決的部問題。本系統為考慮執行速度根據系統中角色、許可權配置、使用者委派等關係動態地的組成一張使用者能力表儲存在系統中根據上述配置資訊改變由系統動態生成和儲存。能力表(也稱C-表)是存貯和核對訪問規則的一種有效形式。能力表是面向主體的,用以說明主體能對那個訪問物件執行何種操作。能力表的基本形式如下:

Si J (oi1,ti1,pi1) ……….. (oij,tij,pij)

其中Si表示第I個主體;j為Si可訪問的資料物件的個數;(oi1,ti1,pi1)為訪問許可權。全部主體的能力表的集合即為系統的全部訪問規則。當某個訪問請求需進行生效檢查時,則按訪問請求的主體找到能力表逐項核對以決定其是否有效。

安全管理控制核心

安全管理控制核心是系統安全管理的核心控制部分,它在系統中控制整個系統的安全控制工作,由它決定系統是否啟動安全管理,在什麼情況下呼叫訪問控制機構,根據情況編寫訪問規則,如何將已有的訪問規則應用於控制,存貯訪問規則。

 

回頁首

系統評價

4.1. 系統特點(自評)

安全管理系統核心思想是在基於角色控制思想的基礎上提取改進而來的,上述功能模型能較好œ鶴悴_房_⑷嗽碧岢齙南低撤夢士刂菩棖蟆7治鋈縵攏_/p>

    1. 實現了系統開發過程中的職責分離,系統的安全管理部分被作為整個系統的核心控制部分,單獨的被分離出來制定一些整個系統通用的安全準則。程式設計師在開發時不要過多的考慮程式安全性的問題只需要遵系統的安全準則即可,而是把主要精力花費在系統的業務功能上。
    2. 有效的利用系統已有的資源減少系統的冗餘,使系統的條理更加清楚。對已有功能模組只需設定不同的特徵引數和對各種介面元素實施不同的訪問型別控制,就能產生不同控制效果不需程式設計師再進行編寫程式的工作。
    3. 基於角色對使用者組進行訪問控制:對一組使用者比對單個使用者進行訪問控制更加合理,使用者組代表了具有相近工作性質的一組使用者的集合,可以委派完成使用者組工作的角色以控制使用者組的許可權範圍(當然我們也可以把角色看成是我們系統中一個特定使用者組)。同時支援角色的繼承和多繼承。通過改變使用者的當前角色集就可以改變使用者的許可權,而改變某種角色所含的許可權時又可以改變一組使用者的許可權,基於這種訪問控制方式有3個方面的作用:(1)簡化了許可權管理,避免直接在使用者和資料之間進行授權和取消。研究表明,使用者所具有的許可權易於發生改變,而某種角色所對應的許可權更加穩定;(2)有利於合理劃分職責,使用者只有其所應具有許可權,這樣可以避免越權行為,有關使用者組的關係描述正是對此的支援;(c)防止權力濫用,敏感的工作分配給若干個不同的使用者完成,需要合作的操作序列不能由單個使用者完成。
    4. 支援動態地改變使用者的許可權:安全管理考慮了訪問許可權不是靜態,而是動態的情況。所有物件的許可權均用三元組來表示P(o,t,p)主體在系統中的訪問規則用四元組來表示(s,o,t,p)。當產品系統使用工作流時,可通過產品平臺與安全管理控制核心的介面,重新為編寫訪問規則,動態修改主體能力表。動態分配使用者完成當前工作流環節所需的許可權。
    5. 許可權的相互關聯:各種許可權不是互相獨立而是相互關聯的,而且許可權可以有感知其它用使用者操作,這可以描述有關協同許可權。功能例如在給資料編輯控制元件授權只讀許可權時,收回使用者對資料插入和刪除許可權,該許可權允許感知其它使用者的操作,諸如某使用者改變了資料等等。
    6. 提供方便的授權/取消機制和檢查機制:只要進行簡單的賦值操作即可完成授權,同時由角色分配規則和主體訪問規則控制則指導模型式的應用。
    7. 使用者之間的授權關係:依據角色指派關係,執行系統中的使用者自身可以對角色進行管理,這提供了又一種動態改變使用者許可權的手段。通常,角色指派的權力都在系統中具有管理責任的使用者手中。

      原文連結:http://www.ibm.com/developerworks/cn/security/syscontrol/


相關文章