第三章 以屬性為基礎的工作-角色的指派模型
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 tTS 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. 指派演算法