天天看點

基于角色管理的系統通路控制

來源: ibm 作者: 郝斌

基于角色管理的系統通路控制

1. 引言(introduction)

1.1. 關鍵詞定義(definitions)

有關定義說明如下:

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

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

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

權限:權限是對計算機系統中的資料或者用資料表示的其它資源進行通路的許可。我們用permission表示一個權限集合。可分為對象通路控制和資料通路控制兩種。

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

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

權限最終可以組合成如下形式:(控制對象,通路類型,謂詞)。

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

使用者委派:使用者委派是users與roles之間的一個二進制關系,我們用(u,r)來表示使用者u被委派了一個角色r。

權限配置:權限配置是roles與permission之間的一個二進制關系,我們用(r,p)來表示角色r擁有一個權限p。

2. 需求分析

根據我們在本行業多年積累下來的經驗,參考了其它同行的成功經驗整合了先進的思想,我們有能力為我們自己的應用系統開發一套功能完善而且又靈活友善的安全管理系統。使開發人員從權限管理重複勞動的負擔中解放出來,專心緻力于應用程式的功能上的開發。通過收集公司從事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. 方案設計

3.1. 安全保護政策

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

  1. 區分安全政策與安全機構。

    政策是資訊安全性的進階指導,政策出自對使用者要求,裝置環境、機構規則、法律限制等方面的詳細研究。政策重要性在于指導作用。而機構是實作和執行各種政策的功能的集合。完善的機構是實施正确安全政策的物質基礎。故一般要求機構能實作不同的政策,以便政策變動時無需要更換安全機構。

  2. 安全政策:企業資訊管理系統是一個大型的分布式資料資源管理系統,它包括資訊量巨大以及不同程度的資訊敏感度,各種有通路需求的使用者,使得其安全管理非常複雜。基于角色的系統安全控制模型是目前國際上流行的先進的安全管理控制方法。我們的安全管理系統也根據自身的需要有選擇性的吸收其部分思想。其特點是通過配置設定和取消角色來完成使用者權限的授予和取消,并且提供了角色配置設定規則和操作檢查規則。安全管理人員根據需要定義各種角色,并設定合适的通路權限,而使用者根據其責任和資曆再被指派為不同的角色。這樣,整個通路控制過程就分成兩個部分,即通路權限與角色相關聯,角色再與使用者關聯,進而實作了使用者與通路權限的邏輯分離,如下圖所示,角色可以看成是一個表達通路控控制政策的語義結構,它可以表示承擔特定工作的資格。
    基于角色管理的系統通路控制
    由于實作了使用者與通路權限的邏輯分離,基于角色的政策極大的友善了權限管理。例如,如果一個使用者的職位發生變化,隻要将使用者目前的角色去掉,加入代表新職務或新任務的角色即可。研究表明,角色/權限之間的變化比角色/使用者關系之間的變化相對要慢得多,并且委派使用者到角色不需要很多技術,可以由行政管理人員來執行,而配置權限到角色的工作比較複雜,需要一定的技術,可以由專門的技術人員來承擔,但是不給他們委派使用者的權限,這與現實中情況正好一緻。除了友善權限管理之外,基于角色的通路控制方法還可以很好的地描述角色層次關系,實作最少權限原則和職責分離的原則。
  3. 安全保護機構:本系統的安全保護機構基本上是于上面的安全政策互相适應的,系統保護的總體結構示意如下:
    基于角色管理的系統通路控制
    保護機構應負責阻止一切實體破壞和使用者可能的操作破壞,後者歸結為主體可用何種方式通路哪些對象。主體、通路類型、對象是我們要讨論的保護機構主要成分
  4. 安全管理的職責:安全管理有集中管理與分散管理兩種。前者意指一切權利都由負責系統安全工作的專職人員或小組組掌握,他(們)決定使用者的通路權利,控制系統安全一切方面。後者是指不同的管理者控制着系統安全的不同方面,管理系統的不同部分,決定不同使用者的通路權利,甚至允許對象所有者轉讓通路對象的權利,集中管理,安全可靠但不靈活;分散管理則應考慮避免漏洞和協調一緻的問題。本系統因是針對大的集團企業管理的産品權限配置設定比較複雜,故采用了集中管理與分散管理相結合的形式。
  5. 通路控制政策。它提供決定使用者通路權利的依據。其中最重要的一個普遍的原則是"需者方知政策"(the need-to-know)。也就是說,隻有一個工作需要的,才是他應該知道的。它從原則上限制了使用者不必要的通路權利,進而堵截了許多破壞與洩露資料資訊的途經。按照這一原則授予使用者的權利,是使用者能完成工作的最小權利集合,故也稱之為"最少特權政策"。
  6. 資訊流動控制。隻限制使用者的通路權利而不考慮資料流動是極其危險的。例如,在考勤時各部門的主管隻能為自己部門的職員考勤,人事部可以提取全部資料,是以在提取資料時一定要加以限制。控制資料流動以防止無權使用者在資料流動後獲得通路權利。
  7. 密碼變換。對于非常機密資料可變換為密碼存貯,使得不知道密碼的入侵者無法破譯所得到的資料密碼。密碼變換能防止洩密,但不能保護資料資訊不被破壞。
  8. 軟硬結合保護。這是安全保護的基本政策,許多硬保護功能是軟體難以實作的,有些即使能實作,效率也不高。
  9. 對安全遭到破壞的響應。各種保護機構都有可能遭到破壞,是以系統必須制訂檢測破壞手段與處置措施。

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. 系統評價

4.1. 系統特點(自評)

安全管理系統核心思想是在基于角色控制思想的基礎上提取改進而來的,上述功能模型能較好満足産品開發人員提出的系統通路控制需求。分析如下:

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

繼續閱讀