訪問控制模型DAC,MAC,RBAC
訪問控制
訪問控制是指控制對一臺計算機或一個網路中的某個資源的訪問。沒有它,所有人都可以訪問任何資源。有了訪問控制,使用者在獲取實際訪問資源或進行操作之前,必須通過識別、驗證、授權。
換言之,訪問控制控制著一個主體(subject)可以訪問哪些物件(objects)。主體和物件是訪問控制模型和技術中的兩個重要術語。主體是指可以授予或拒絕訪問某個物件的人或事物,如使用者,程式,系統程序。物件的例子如檔案、印表機、程式、系統程序等。
訪問控制模型
開發者需要在他們的軟體和裝置中實現訪問控制功能,訪問控制模型為之提供了模型。有三種不同的模型:DAC,MAC,和RBAC。
Discretionary Access Control(DAC)
主體對它所屬的物件和執行的程式擁有全部的控制權。例如,Alice擁有一個叫mywork.doc的檔案。她許可Bob和Sales group的成員來讀這個檔案,除此之外別的人都不可以。改進的DAC實現提供了一個基於“need-to-know”的訪問授權的方法,預設拒絕任何人的訪問。訪問許可必須被顯式地賦予訪問者。
被某個使用者執行的程式擁有與該使用者相同的許可權。這意味著系統安全依靠執行的程式,因此,當一個程式中發生安全裂縫,會影響到該使用者能訪問的所有物件。這使得DAC在特洛伊木馬前特別脆弱。例如,假設Alice對檔案file1.doc擁有讀寫許可權。Charlie,一個惡意攻擊者,寫了一個程式,這個程式在執行時生成檔案file2.doc.這個程式授予Alice寫許可權和Charlike讀許可權。Charlie把這個程式偽裝成合法的程式發給Alice。當Alice執行這個程式是,它就具有了和Alice相同的許可權。它可以拷貝file1.doc到file2.doc,這樣charlie就竊取了file1.doc的內容。如果一個管理員執行這個程式,攻擊者會獲取最大的特權,危害整個系統的安全。
Mandatory Access Control(MAC)
在MAC這種模型裡,管理員管理訪問控制。管理員制定策略,使用者不能改變它。策略定義了哪個主體能訪問哪個物件。這種訪問控制模型可以增加安全級別,因為它基於策略,任何沒有被顯式授權的操作都不能執行。MAC被開發和實現在最重視保密的系統中,如軍事系統。主體獲得清楚的標記,物件得到分類標記,或稱安全級別。
最早的MAC模型,參照Bell and LaPadula,訪問權根據主體的數字化的訪問級別和物件的訪問級別標記來授予。例如,管理員的訪問級別65535,Alice的是100,客人(Guest)是1,有兩個檔案,file1級別2,file2級別200,這樣Alice只能訪問file1,客人不能訪問file1和file2,管理員兩個檔案都可以訪問。使用者的訪問級別需要比他想訪問的物件的級別高或者相等。Bell and LaPadula模型,後來擴充套件為“多級安全”(Multi-Level Security,MLS)。MLS典型地應用到軍事領域中,對每個物件使用標記(如top
secret,secret,confidential,unclassfied)實現了一個外部安全層。只有位於相同層或更高層的使用者能訪問物件。工作機制是“need to know basis”,即最少的特權,使用者只能訪問他工作需要的物件。同時,主體不能向下寫,即他們不能寫或建立低於自己級別的標記的物件。這防止了主體把祕密和低於它的級別的主體共享,從而保證資訊保密。
Role Based Access Control(RBAC)
管理員定義一系列角色(roles)並把它們賦予主體。系統程序和普通使用者可能有不同的角色。設定物件為某個型別,主體具有相應的角色就可以訪問它。這樣就把管理員從定義每個使用者的許可許可權的繁冗工作中解放出來。
基於角色的訪問控制模型RBAC,有時成為基於規則的基於角色的訪問控制(Rule-Based Role-Based Access Control,RB-RBAC)。它包含了根據主體的屬性和策略定義的規則動態地賦予主體角色的機制。例如,你是一個網路中的主體,你想訪問另一個網路中的物件。這個網路在定義好了訪問列表的路由器的另一端。路由器根據你的網路地址或協議,賦予你某個角色,這決定了你是否被授權訪問。
實際使用
現代作業系統組合使用了上述的訪問控制模型。儘管Windows NT沒有實際使用RBMC,它使用內建的組實現了類似的模型,如Power Users,Server Operators,Backup Operators。管理員可以根據作業的行為增加額外的角色。擁有適當許可權的使用者可以分享資源,如檔案和印表機,而且與DAC模型相應的,自主決定給與其它使用者和組訪問權。