權限管理 之二 權限管理與訪問控制概要設計(轉載)

本文在第一篇“四維權限管理模型”的基礎上,將起思路和解決方法運用到產品模塊設計上。根據普通業務系統中與權限相關的兩用例:權限管理和訪問控制(即:訪問驗證),進行了概要設計(已作刪減)。

1.引言

 

1.1編寫目的

 

1.2項目背景

 

1.3術語與約定

 

安全對象

訪問受控制的對象,如:“報表”、“項目”等。系統中主要的“業務對象”都是典型的安全對象。

訪問場景

一個訪問場景將提供諸如“操作者”、“被操作對象”、“操作方法”、“業務狀態”、“有效期限”等元素,供訪問驗證判斷所用。根據分析(詳見參考文檔中的說明),每個訪問場景至少包括三個必須的元素:

“操作者”,用戶、角色、用戶組、單位等;

“被操作對象”,具體的業務對象,如“報表”;

“操作方法”,對應被操作對象的基本操作和業務操作,依賴於“被操作對象”。

訪問場景中的其他元素,如“業務狀態”、“對象所屬”、“有效期限”等在本次設計中不是必須滿足項,但兼顧設計。

系統功能

一個業務系統的功能項也受訪問控制。在一個訪問場景中,將整個業務系統視爲“被操作對象”,各系統功能就成爲了訪問場景中的“操作方法”,便於模型的統一。

訪問控制

 

或訪問驗證,系統中發生訪問場景時,進行允許或禁止,不同於權限管理。詳見2.任務概述。

權限管理

 

或訪問控制管理,對訪問規則進行維護管理,不同於訪問控制。詳見2.任務概述。

 

1.4參考資料

 

內部

 

四維權限管理模型

外部

 

 

2.任務概述

 

與權限相關聯的有“訪問驗證”和“訪問控制管理”兩項主要任務:

訪問驗證

 

根據事先定義的訪問許可規則對系統中的各種訪問操作(含對系統功能的訪問、對業務對象的訪問)的合法性進行驗證。是訪問許可規則作用的動態實現。

訪問控制管理

 

主要是管理維護系統允許中各種訪問操作時各種因素(訪問者、訪問系統功能、訪問業務對象、訪問業務規則等)之間的關係。是對訪問許可規則靜態管理維護的實現。

涉及用例

 

“訪問驗證”和“訪問控制管理”在系統中是兩個用例。其中“訪問控制管理”以權限管理模塊來實現(與系統具體業務關聯緊密,本次迭代不涉及),“訪問驗證”以訪問控制模塊來實現。除開數據的依賴,在業務上兩者相互獨立。

 

 

3.用例分析

 

 

用例名稱:訪問控制

 

 

描述:根據業務需求和安全需求,當在其他用例中發生對安全對象進行訪問時,訪問控制對這一行爲進行允許或禁止控制。

前置條件:其他用例對安全對象的訪問被激活。

後置條件:無

基本事件流

1)其他用例請求對某一安全對象進行訪問,事件流開始;

2)根據當前訪問場景的各元素(操作者、被操作對象、操作方法、有效期限等)進行訪問驗證,得到驗證結果;

3)根據驗證結果對當前訪問進行允許或禁止,事件流結束。

可選事件流:略。

部署約束

在有訪問控制要求的其他用例所在的物理層或邏輯層中均可以訪問本用例。

活動圖:略。

非功能需求:對單個安全對象訪時,訪問驗證時間消耗與訪問操作本身的時間消耗在同一數量級以內。

未解決問題:無

說明

 

4.對象設計

 

4.1用例中的對象

 

邊界對象<>:無

控制對象<>:即訪問控制者對象AccessController,由該對象對訪問進行控制。

實體對象<>:即某一安全對象。

操作流程對象<>:用於引發訪問場景的流程的抽象,如某個業務操作。

說明:訪問控制者對象AccessController是唯一在本用例中可以完成設計的對象,其他對象均屬於其他用例,但訪問控制的實現需要這些對象在設計模式上進行配合。

4.2用例中的行爲

 

訪問驗證:由訪問控制者對象所有,由操作流程對象(即某一業務操作)激發。訪問驗證需存在於一個具體的訪問場景中,是對原子化的操作訪問的允許或禁止判斷。

權限邏輯運算:當操作流程對象引發對多對象的訪問時,並因此在該訪問場景中,根據訪問驗證出現權限干涉、權限二意性時,權限邏輯運算根據安全邏輯或業務邏輯對權限進行合併或篩選。權限邏輯運算由操作流程對象激發。

對象訪問:由其他用例直接發起,或委託操作流程對象發起。對象訪問需通過訪問驗證和權限邏輯運算。

4.3對象時序圖

 

 

 

4.4類定義

 

對安全對象的訪問控制在用例中適應對象訪問控制者對象來完成,該對象以ObjectAccessController類實現:(採用接口化設計的分析過程詳見參考文檔)

 

 

5.類實現設計

 

5.1類實現

 

 

 

 

安全對象訪問控制者類ObjectAccessController

 

說明

 

主要成員

ValidateRules:java.util.ArrayList

驗證規則數組,用以容納不同的驗證規則類ValidateRule,本項目僅包含ACM驗證規則對象――ACMAccessValidate

 

主要方法

public static bool IsValidate(ISecurityObject

IOperator     

IOperateMethod)

用於驗證訪問操作合法性的驗證函數,該函數調用類的驗證規則數組中所有的驗證規則類逐一驗證,最後彙總作出判斷

 

驗證規則抽象類ValidateRule

 

說明

用於使所有的驗證規則對象具有相同的調用格式

主要成員

 

 

主要方法

public bool Validate( ISecurityObject

IOperator     

IOperateMethod)

用於驗證訪問操作合法性的驗證函數

 

 

ACM驗證規則類ACMValidateRule

 

說明

用於實現按照ACM進行訪問驗證

主要成員

 

 

主要方法

public override bool Validate( ISecurityObject

IOperator     

IOperateMethod)

用於驗證訪問操作合法性的驗證函數

 

 

備註:用於支持訪問控制用例,訪問場景中的元素在均被定義爲標準接口的實現。

安全對象:ISecurityObject

操作者:IOperator

操作方法:IOperateMethod

其他用例在實現類設計時,需從這裏繼承。

 

5.2數據實現

 

本次迭代中,僅ACM驗證規則類ACMValidateRule需要實現。ACM作用原理詳見參考文檔中的分析。

“訪問控制矩陣(規則)表”

字段說明

字段名

數據類型

是否允許爲空

數據完整性

流水號

 

id

 

Int

 

Not null

 

PK

 

有效碼

 

IntValid

 

Int

 

Not null

 

Default0

 

安全對象類型

 

chrSOType

 

Char(20)

 

Not null

 

 

安全對象ID

 

IntSOId

 

Int

 

Not null

 

FK

 

操作者類型

 

ChrOprType

 

Char(20)

 

Not null

 

 

操作者ID

 

IntOprId

 

Int

 

Not null

 

FK

 

操作方法名稱

 

ChrMethod

 

Char(20)

 

Not null

 

 

有效期開始時間

 

DtmActive

 

Datetime

 

Null

 

 

有效期結束時間

 

DtmExpired

 

Datetime

 

Null

 

 

業務流程狀態碼

 

IntProcessState

 

Int

 

Null

 

 

安全對象狀態碼

 

IntSOState

 

Int

 

Null

 

 

 

說明:

根據該表記錄,讀取相應“有效碼”,無記錄(即無有效碼),爲訪問禁止,否則爲訪問許可。

 

“有效碼”用於擴展

 

“有效期開始時間”、“有效期結束時間”用於以後的有效期權限驗證,可取消

 

“業務流程狀態碼”、“安全對象狀態碼”用於以後的業務條件權限驗證,可取消

 

 

6.負載平衡設計

 

業務系統中如有L個安全對象,每個安全對象有M個受訪問控制操作方法,並有N個不同的訪問者,按照非樂觀估計:“訪問控制矩陣(規則)表”會有L×M×N條記錄。

建議在安全對象較多時,爲每個安全對象建立11的訪問控制表,提高效率,平衡負載。

...

- end -

 

   Beegee: 和我在一個產品開發中共事了半年的部門經理(其實是產品經理)告訴我可以離開項目組了。半年前,他委託我設計他的產品中的權限管理模塊。於是,我用我貧瘠的大腦給他想了些方案。難得他還那麼看得上,支持我實現了我的設計,當然也加了不少我不喜歡的東西。現在,卻因爲一些原因我要離開這個產品組了,這位經理也不準備對這個模塊再作更多的投入了,於是我想我可以把我的這些的想法拿到我的Blog中了,算是自我消遣吧。^_^,也希望能夠幫助其他程序員完善他們自己的設計,全當反面教材啦!
   共兩篇:
   1.“
ACM四維權限管理模型
   2.“權限管理與訪問控制概要設計”(本文)

其它相關原創:

分離權限管理與訪問控制

淺談權限管理的對象模型和實現

淺談權限管理的對象模型和實現
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章