• 沒有找到結果。

工作與角色的自動指派

第三章 以屬性為基礎的工作-角色的指派模型

3.6. 工作與角色的自動指派

在這一節中,本研究將詳細探討工作與角色的指派演算法,首先概略性介紹 演算法指派的步驟,再進一步說明演算法內容。

3.6.1. 指派步驟

本研究首先簡略地描述說明工作與角色之間自動化指派的步驟,主要分為四 大步驟,步驟如下。

1. 在進行自動化指派之前,要先檢查企業是否有針對工作制定出相關RBAC Constraint。如果企業有訂出相關限制,工作會先透過RBAC Constraint指派 到指定的角色。

2. 先透過本研究提出之以屬性為基礎的工作-角色的指派模型的指派演算法,

決定出暫時指派適當的角色。

3. 然後再判斷與之前已經完成的工作-角色指派是否有發生互斥工作指派到同 一個角色上。

4. 最後都排除了RBAC Constraint與互斥工作的限制,工作才能正確指派到適 當的角色上。

34

3.6.2. 工作與角色自動指派演算法

上一節提到的工作與角色之間自動化指派的步驟,以下為本研究中所呈現完 整的以屬性為基礎的工作-角色的指派模型之工作與角色指派演算法如圖 15。而 演算法說明如下:

 演算法名稱:TaskRoleAssign

 輸入:

Task Set(TS)為欲透過本模型指派的所有工作。

Rule Set(RuleSet)為企業制定的所有規則集合。

Role Set(RS)為企業組織的所有角色集合。

Mutually Exclusive Task Set(METSet)為組織中發生互斥工作的所有集合。

 輸出:所有工作指派至角色的配對集合,此集合包含二種工作指派集合。第 一種為工作受到 RBAC 限制,因而無法經過自動化指派的工作以及其指派 至的角色;而第二種為經過本研究的自動指派演算法指派的工作以及其授權 的角色。

 函式

1. CheckContraint(TS, RS):用來檢查所有工作在指派過程中,企業有沒有定義 RBAC 限制來限制指派。函式輸入為 Task Set(TS)及 Role Set(RS),Task Set(TS)為所有工作集合,Role Set(RS)為所有角色集合;而函式輸出為符合 RBAC 限制的工作以及其指派到的角色標記起來。

2. GetContraintTask(TS) :檢查企業有哪些工作是屬於受到 RBAC 限制而無法 經由本研究提出之演算法指派。函式輸入為 Task Set(TS),Task Set(TS)為所 有工作集合;而函式輸出為受到 RBAC 限制的工作集合。

35

 變數

1. ConstraintTaskPair(task, role):表示是受限制的工作與其指派至角色的配對集 合,所謂受限制的工作是說明工作因為受到 RBAC 限制,而受限於只能指 派至指定的角色,此工作無法經由本研究提出之演算法指派。

2. ConstraintTaskSet(task):受到 RBAC 限制的工作集合,此工作集合中所有工 作都無法經由指派規則指派至角色。

3. UnAssignTaskSet(t):表示尚未指派的工作集合,已經扣除了 RBAC 限制所 指派的工作。

4. TempTRA(task, role):此變數暫存某一工作以及其授權的角色。意思是工作 已經透過 ATRBAC 的指派規則,有找出適當角色執行此工作,但尚未判斷 如果有發生互斥工作的情況。

5. FinalTRA(task, role):此變數存所有完成自動化指派的工作以及其授權的角 色之配對集合。此集合表示工作已經透過 ATRBAC 指派與其指派至適當角 色的集合,而且也排除互斥工作的情況。

36

Algorithm TaskRoleAssign

Input: Task Set(TS), Rule Set(RuleSet), Role Set(RS), Mutually Exclusive Task

Set(METSet)

Output: assigned task-role set begin

ConstraintTaskPair (task, role) = CheckContraint(TS, RS);

ConstraintTaskSet(task) = GetContraintTask(TS);

Let each tTS and marked UnAssignTaskSet(t);

UnAssignTaskSet(t) = UnAssignTaskSet(t)- ConstraintTaskSet(task);

for each UnAssignTaskSet(t){

for each RuleSet{

get rule from RuleSet;

if each Value(t.attri) = Value(rule.attri) than { TempTRA (t, role);

for each METSet {

get mutual exclusive tasks from METSet and named be met;

get task from TempTRA(t, role) and named be ttra_task;

get task set from FinalTRA(t, role) and named be ftra_tasks;

if ttra_task with each ftra_tasks

met than {

TempTRA(t, role) add into FinalTRA(task, role);

}end if } end for } end if } end for } end for

return ConstraintTaskPair(task, role) + FinalTRA(task, role);

end

圖 15. 指派演算法

相關文件