安全管理系統核心思想是在基于角色控制思想的基礎上提取改進而來的,本文講述的功能模型能較好?鶴悴?品開發人員提出的系統訪問控制需求。
有關定義說明如下:
安全管理:計算機技術安全管理的范圍很廣,可以包括網絡安全性、數據安全性、操作系統安全性以及應用程序安全性等。很多方面的安全性管理大都已經有成熟的產品了,我們只需根據自己需要有選擇性的使用就可達到自己的目的了。本文中有關關涉及"安全管理"一詞均只針對本公司推出的應用中有關對象與數據而言范圍有限。
主體:即可以象應用系統發出應用請求任何實體,包括各種用戶、其它與本系統有接口的應用程序、非法入侵者。系統必須具有識別主體的能力,接口實際上也是由用戶登記的,故主要問題是校驗用戶身份的合法性,系統應建立用戶鑒別機構以驗證用戶身份。
用戶:用戶就是一個可以獨立訪問計算機系統中的數據或者用數據表示的其它資源的主體,我們用USERS表示一個用戶集合。用戶在一般情況下是指人。
權限:權限是對計算機系統中的數據或者用數據表示的其它資源進行訪問的許可。我們用PERMISSION表示一個權限集合??煞譃閷ο笤L問控制和數據訪問控制兩種。
對象訪問控制:用一個二元組來表示:(控制對象,訪問類型)。其中的控制對象表示系統中一切需要進行訪問控制的資源。我們將引入一套完整的資源表示方法來對系統中出現的各類資源進行定義和引用(詳見后述)。訪問類型是指對于相應的受控對象的訪問控制,如:讀取、修改、刪除等等。
數據訪問控制:如果不對數據訪問加以控制,系統的安全性是得不到保證的,容易發生數據泄密事件。所以在權限中必須對對象可訪問的數據進行按不同的等級給予加密保護。我們同樣用一個二元組來表示:(控制對象,謂詞)。
權限最終可以組合成如下形式:(控制對象,訪問類型,謂詞)。
角色:角色是指一個組織或任務中的工作或位置,它代表了一種資格、權利和責任。我們用ROLES表示一個角色集合。
用戶委派:用戶委派是USERS與ROLES之間的一個二元關系,我們用(u,r)來表示用戶u被委派了一個角色r。
權限配置:權限配置是ROLES與PERMISSION之間的一個二元關系,我們用(r,p)來表示角色r擁有一個權限p。
![]() ![]() |
![]()
|
根據我們在本行業多年積累下來的經驗,參考了其它同行的成功經驗整合了先進的思想,我們有能力為我們自己的應用系統開發一套功能完善而且又靈活方便的安全管理系統。使開發人員從權限管理重復勞動的負擔中解放出來,專心致力于應用程序的功能上的開發。 通過收集公司從事MIS項目開發經驗豐富的軟件工程師對在各種情況下的對應系統的安性提出的需求做出了如下的總結。
本系統在安全管理方面要考慮如下幾個方面問題。
需求:
角色由用戶(這個用戶與下一行的"用戶"應該不是同一個定義,"客戶"好像合適一些?不錯,此處的用戶確是有些偏于指向我們合同意義的客戶,但是我認為與下面定義的"用戶"不存在什么本質上的區別,因為客戶最終也是以在系統中登記的用戶身份來使用本系統,用戶所能完成的功能也就是客戶的需求。兩者之間的細微區別讀者可自己通過上下文加區分)自行定義,根據業務崗位不同可以定義多個角色。
登錄系統,首先需要向系統申請注冊,同一個用戶只能在系統中登記一次。
用戶是登錄系統的楔子,角色是用戶權限的基礎。用戶可以扮演多個角色。
將某一角色授予某一用戶時,權限不能超越該角色權限,但可以小于該角色權限。
用戶口令與數據庫訪問口令加密
分析說明
- 每個用戶在系統中由一個唯的USERID標識。
- 用戶通過系統登錄界面登錄系統,系統通過加密算法驗證用戶身份和判斷用戶是否已經登錄系統。如果登錄成功通知Application preference service和安全管理系統保存用戶登錄信息。
- 角色由用戶根據自己的設想的組織機構進行添加設置,提供一個專門的模塊用來設置組織機構,用戶通過組織機構(定義?部門機構還是后面提到的"機構是實現和執行各種策略的功能的集合")方便地進行角色管理。例如:用戶可以通過部門機構來進行角色的管理,部門采用編號分層的方式,編號的每兩位為一個層次。例如一級部門編號為兩位,二級部門編號為四位依此類推下去直到將全廠部門機構建立樹狀結構圖。這類數據僅為方便用戶管理角色而存在,在系統的其他方面不存在任何意義。
- 每個角色在系統中也是由一個唯一角色編號來標識,同時必須保存用戶所設置的機構信息,一般來說每個角色只需要保存自己所在機構的代碼即可。
需求
此菜單乃系統業務功能菜單。由業務功能模塊列表和用戶菜單定制共同組成。每個用戶可以擁有自己的菜單,也可以直接采用角色缺省菜單(當用戶同時充當多個角色并且權限重復時,重復的權限僅一次有效)
分析說明
- 為了方便用戶進行權限組織管理,需要在系統中建立一張業務功能模塊列表,在用戶界面上表示為樹狀分層結構。
- 業務功能模塊以用戶定制菜單來體現,仍然采用編號分層方式,編號的每兩位為一個層次。并標明一個層次是子菜單還是業務模塊,子菜單只有一種可否被訪問的權限設置,業務模塊權限由系統管理員或授權用戶進行設置。對每個業務模塊設置它的對象控制、記錄增刪改控制和記錄集控制。當用戶擁有對業務模塊的某一權限時,必需對處于它上級的子菜單有可被訪問的權限。刪除某一個級子菜單時將提示用戶他的下級菜單與功能模塊都將被刪除掉。
- 當用戶同時充當多個角色并且權限重復時,重復的權限僅一次有效,用戶擁有他充當的所有角色的權限的并集。
- 用戶與角色擁有的系統權限查詢時以業務功能模塊列表的樹狀結構顯示出來。
需求
對象是指應用系統窗口中的可視對象,如菜單項、按鈕、下拉列表框、數據編輯控件及數據編輯控件的字段等。對象控制通過角色與用戶授權來實現。
對象控制包括對對象屬性的控制可對數據編輯控件中的數據記錄的維護權限:
- 對象屬性:使能/禁止、可視/屏蔽
- 記錄維護:增加、刪除、修改的組合
分析說明
- 將每個業務模塊可進行屬性設置的對象由程序員事先設定或由售后技術支持工程師指導用戶加入。
- 在系統管理員或授權用戶進行設置業務模塊的每種權限時,設置用戶在擁有該業務模塊這種權限時的對象屬性。沒有設置屬性的對象在保存對象信息的時候,用戶權限信息中不被保存。
需求
記錄集的控制是通過條件設置來實現,因此,需要控制記錄集的數據庫表需要設置專門的記錄集篩選字段,而篩選條件由用戶根據崗位自進定義,建立過濾表,統一管理。
分析說明
- 在對用戶設置業務模塊權限時,同時在過濾表中設置本模塊的數據編輯控件的數據篩選條件,篩選條件是組成SQL語句的WHERE條件子句迫使當前訪問的模塊根據篩選條件對數據編輯控件的SQL語句進行重組,并檢索數據。
- 當存在需要從數據庫中多個表取數據的情況時,過濾表中存在多條記錄,每一條記錄記錄一個數據編輯控件取數的篩選條件。
- SQL語句的WHERE子句的生成與校驗可以通過的SQL語法分析服務,利用對象所提供的函數分析SQL語句,截取WHERE條件子句,校驗新組合的SQL語句的合法性。
需求
上述提到的權限管理內容應該滿足既可集中管理,也可分散管理的目標。
分析說明
- 權限管理由系統管理員集中管理,系統管理員工作負擔過大,難對所有崗位的分工有全面和具體的了解,對權限作出標準細致的劃分,對于大型的管理系統適合于把一部分設置權限的交由一些比較高級的用戶來進行,有利于各崗位細致協調的工作。這就是權限的分散管理。
- 要實現權限的分散管理,就須對授權模塊進行一些授權管理,這要求整個系統的授權安全管理工作要做到細致,不要出現權限的漏洞使一些高級用戶擁有過大的權限。
![]() ![]() |
![]()
|
從上面各方面的需求分析來看,我們需要一套既行之有效,又方便靈活的安全管理方案。要采用各種控制機構和密碼保護技術。安全保護策略是設計安全可靠系統的準則,通常涉及下列幾個方面:
- 區分安全策略與安全機構。
-
策略是信息安全性的高級指導,策略出自對用戶要求,設備環境、機構規則、法律約束等方面的詳細研究。策略重要性在于指導作用。而機構是實現和執行各種策略的功能的集合。完善的機構是實施正確安全策略的物質基礎。故一般要求機構能實現不同的策略,以便策略變動時無需要更換安全機構。
-
安全策略:企業信息管理系統是一個大型的分布式數據資源管理系統,它包括信息量巨大以及不同程度的信息敏感度,各種有訪問需求的用戶,使得其安全管理非常復雜?;诮巧南到y安全控制模型是目前國際上流行的先進的安全管理控制方法。我們的安全管理系統也根據自身的需要有選擇性的吸收其部分思想。其特點是通過分配和取消角色來完成用戶權限的授予和取消,并且提供了角色分配規則和操作檢查規則。安全管理人員根據需要定義各種角色,并設置合適的訪問權限,而用戶根據其責任和資歷再被指派為不同的角色。這樣,整個訪問控制過程就分成兩個部分,即訪問權限與角色相關聯,角色再與用戶關聯,從而實現了用戶與訪問權限的邏輯分離,如下圖所示,角色可以看成是一個表達訪問控控制策略的語義結構,它可以表示承擔特定工作的資格。
由于實現了用戶與訪問權限的邏輯分離,基于角色的策略極大的方便了權限管理。例如,如果一個用戶的職位發生變化,只要將用戶當前的角色去掉,加入代表新職務或新任務的角色即可。研究表明,角色/權限之間的變化比角色/用戶關系之間的變化相對要慢得多,并且委派用戶到角色不需要很多技術,可以由行政管理人員來執行,而配置權限到角色的工作比較復雜,需要一定的技術,可以由專門的技術人員來承擔,但是不給他們委派用戶的權限,這與現實中情況正好一致。除了方便權限管理之外,基于角色的訪問控制方法還可以很好的地描述角色層次關系,實現最少權限原則和職責分離的原則。
- 安全保護機構:本系統的安全保護機構基本上是于上面的安全策略相互適應的,系統保護的總體結構示意如下:
保護機構應負責阻止一切物理破壞和用戶可能的操作破壞,后者歸結為主體可用何種方式訪問哪些對象。主體、訪問類型、對象是我們要討論的保護機構主要成分
- 安全管理的職責:安全管理有集中管理與分散管理兩種。前者意指一切權利都由負責系統安全工作的專職人員或小組組掌握,他(們)決定用戶的訪問權利,控制系統安全一切方面。后者是指不同的管理員控制著系統安全的不同方面,管理系統的不同部分,決定不同用戶的訪問權利,甚至允許對象所有者轉讓訪問對象的權利,集中管理,安全可靠但不靈活;分散管理則應考慮避免漏洞和協調一致的問題。本系統因是針對大的集團企業管理的產品權限分配比較復雜,故采用了集中管理與分散管理相結合的形式。
- 訪問控制策略。它提供決定用戶訪問權利的依據。其中最重要的一個普遍的原則是"需者方知策略"(the need-to-know)。也就是說,只有一個工作需要的,才是他應該知道的。它從原則上限制了用戶不必要的訪問權利,從而堵截了許多破壞與泄露數據信息的途經。按照這一原則授予用戶的權利,是用戶能完成工作的最小權利集合,故也稱之為"最少特權策略"。
- 信息流動控制。只限制用戶的訪問權利而不考慮數據流動是極其危險的。例如,在考勤時各部門的主管只能為自己部門的職員考勤,人事部可以提取全部數據,因此在提取數據時一定要加以限制??刂茢祿鲃右苑乐篃o權用戶在數據流動后獲得訪問權利。
- 密碼變換。對于非常機密數據可變換為密碼存貯,使得不知道密碼的入侵者無法破譯所得到的數據密碼。密碼變換能防止泄密,但不能保護數據信息不被破壞。
- 軟硬結合保護。這是安全保護的基本策略,許多硬保護功能是軟件難以實現的,有些即使能實現,效率也不高。
- 對安全遭到破壞的響應。各種保護機構都有可能遭到破壞,因此系統必須制訂檢測破壞手段與處置措施。
3.2.1. 功能框架示意圖
3.2.2. 主要功能組件的職責
3.2.2.1. 對象定義工具與權限定義工具
- 對象定義工具。
對象是指系統中各種功能模塊、數據、界面元素(包括菜單、按鈕等各種界面上能控制的控件)等,它們是主體能訪問的各種對象。由于對象的機密程度不等,受到的保護程度亦有差別。系統中的對象均由程序員通過系統提供的對象定義工具事先定義好系統要控制的對象。系統也只能控制這些事先已定義好的對象,因此,對象定義是整個系統的核心步驟直接影響后面的各個安全控制環節。建議由開發程序員進行初始化配置。對象定義的包括如下幾步:- 功能模塊定義:系統中除部分公用的界面、公用功能模塊外,其它均為業務功能模塊是用戶完成各自不同的業務功能的主要算途徑,也是我們安全管理要保護的重點對象,所以我們必須對業務功能模塊定義。有定義的功能模塊對象我們就有可能組織權限根據用戶需要完成的工作配置用戶業務功能菜單,這也符合"最少特權策略"。
- 界面元素控制:除了功能菜單要受到控制外,如要控制功能模塊的界面元素其功能模塊界面元素也需定義,大部分界面元素均包含有相關的業務功能操作,所以對相應操作的界面元素是進行定義是有必要的。
- 數據信息控制:業務功能模塊的大部分界面元素是顯示和操作數據內容的基礎,也是用戶對讀取數據和操作數據的主要途徑,為了數據信息的安全有必要對這界面元素的操作數據予以采取安全保密措施。這就需要對這些界面元素定義相關的數據約束條件。
對象定義(流程) 流程圖如下
- 權限定義工具。
在定義好系統對象的前提下,定義對象的在不同情況的的訪問類型,希望對象在不同情況下具有不同的訪問類型,這就需要定義對象的權限。定義權限就是是定義對象訪問控制和數據訪問控制。為了表述方便我們對權限用一個三元組符號來表示P(o,t,p),其中o 表示訪問對象;t 表示訪問類型;p 表示謂詞。表示在謂詞p為真時對于對象o可進行t類型的訪問。權限定義系統安全管理基礎步驟之一,只有給各種對象定義好訪問的權限,才能給角色配置權限,基于角色管理才能成為可能。系統提供定義權限工具,請程序員根據實際需求定義對象的權限。
定義權限的流程圖如下:
3.2.2.2. 角色定義與權限配置
- 角色定義。
基于角色的訪問控制方法的思想就是把對用戶的授權分成兩部份,用角色來充當用戶行駛權限的中介。這樣,用戶與角色之間以及角色與權限之間就形成了兩個多對多的關系。系統提供角色定義工具允許用戶根據自己的需要(職權、職位以及分擔的權利和責任)定義相應的角色。角色之間有相應繼承的關系,當一個角色r1繼承另一個角色r2時,r1就自動擁有了r2的訪問權限(表示r1->r2)。角色繼承關系自然的反映了一個組織內部權利和責任的關系,為方便權限管理提供了幫助。角色繼承關系提供了對已有角色的擴充和分類的手段,使定義新的角色可以在已有角色的基礎上進行,擴充就是通過增加父角色的權限去定義子角色,分類通過不同子角色繼承同一父角色來體現。另外還允許多繼承,即一個角色繼承多個父角色,多繼承體現對角色的綜合能力。
角色定義示流程圖如下:
- 權限配置。
角色是一組訪問權限的集合,一個用戶可以是很多角色的成員,一個角色也可以有很多個權限,而一個權限也可以重復配置于多個角色。權限配置工作是組織角色的權限的工作步驟之一,只有角色具有相應的權限后用戶委派才能具有實際意義。
權限配置流程圖如下:
3.2.2.3. 用戶、用戶組定義
- 用戶定義。
系統的最終使用者是用戶,因此必須建立用戶的鑒別機構,登記用戶的身份信息。在系統中定義可登錄的用戶操作系統是系統安全管理所必須步驟,也是人與系統的接口。 - 用戶組定義。
為了本系統適用于分散式權限管理,加入了用戶組的概念,是指一群用戶的集合。方便權限管理用戶組也可以委派角色,當用戶被加入用戶組時自動對用戶的所在用戶組擁有的角色進行了委派。為了便于分散式權限管理系統同時還支持對部分組的權限進行下發方式處理,授權特定的用戶對用戶組的用戶權限進行管理。
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) |
安全管理控制核心是系統安全管理的核心控制部分,它在系統中控制整個系統的安全控制工作,由它決定系統是否啟動安全管理,在什么情況下調用訪問控制機構,根據情況編寫訪問規則,如何將已有的訪問規則應用于控制,存貯訪問規則。
![]() ![]() |
![]()
|
安全管理系統核心思想是在基于角色控制思想的基礎上提取改進而來的,上述功能模型能較好œ鶴悴_房_⑷嗽碧岢齙南低撤夢士刂菩棖?。分析瓤z攏_/p>
- 實現了系統開發過程中的職責分離,系統的安全管理部分被作為整個系統的核心控制部分,單獨的被分離出來制定一些整個系統通用的安全準則。程序員在開發時不要過多的考慮程序安全性的問題只需要遵系統的安全準則即可,而是把主要精力花費在系統的業務功能上。
- 有效的利用系統已有的資源減少系統的冗余,使系統的條理更加清楚。對已有功能模塊只需設置不同的特征參數和對各種界面元素實施不同的訪問類型控制,就能產生不同控制效果不需程序員再進行編寫程序的工作。
- 基于角色對用戶組進行訪問控制:對一組用戶比對單個用戶進行訪問控制更加合理,用戶組代表了具有相近工作性質的一組用戶的集合,可以委派完成用戶組工作的角色以控制用戶組的權限范圍(當然我們也可以把角色看成是我們系統中一個特定用戶組)。同時支持角色的繼承和多繼承。通過改變用戶的當前角色集就可以改變用戶的權限,而改變某種角色所含的權限時又可以改變一組用戶的權限,基于這種訪問控制方式有3個方面的作用:(1)簡化了權限管理,避免直接在用戶和數據之間進行授權和取消。研究表明,用戶所具有的權限易于發生改變,而某種角色所對應的權限更加穩定;(2)有利于合理劃分職責,用戶只有其所應具有權限,這樣可以避免越權行為,有關用戶組的關系描述正是對此的支持;(c)防止權力濫用,敏感的工作分配給若干個不同的用戶完成,需要合作的操作序列不能由單個用戶完成。
- 支持動態地改變用戶的權限:安全管理考慮了訪問權限不是靜態,而是動態的情況。所有對象的權限均用三元組來表示P(o,t,p)主體在系統中的訪問規則用四元組來表示(s,o,t,p)。當產品系統使用工作流時,可通過產品平臺與安全管理控制核心的接口,重新為編寫訪問規則,動態修改主體能力表。動態分配用戶完成當前工作流環節所需的權限。
- 權限的相互關聯:各種權限不是互相獨立而是相互關聯的,而且權限可以有感知其它用用戶操作,這可以描述有關協同權限。功能例如在給數據編輯控件授權只讀權限時,收回用戶對數據插入和刪除權限,該權限允許感知其它用戶的操作,諸如某用戶改變了數據等等。
- 提供方便的授權/取消機制和檢查機制:只要進行簡單的賦值操作即可完成授權,同時由角色分配規則和主體訪問規則控制則指導模型式的應用。
- 用戶之間的授權關系:依據角色指派關系,運行系統中的用戶自身可以對角色進行管理,這提供了又一種動態改變用戶權限的手段。通常,角色指派的權力都在系統中具有管理責任的用戶手中。
![]() |
||
|
![]() |
郝斌,北京辰沖公司駐長辦事處軟件工程師。目前任IMIS項目經理,主要從事企業信息管理系統和電子商務系統的開發工作,主要研究興趣是java編程、java企業應用解決組合,EJB/JMS/JAVAMAIL等。您可以通過電子郵件 hb_email@371.net跟他聯系。 |