訪問控制是在身份認證的基礎上,根據不同身份的用戶對用戶的訪問請求加以限制。身份認證關心的是“你是誰,你是否擁有你所聲明的身份”這個問題;而訪問控制則關心“你能做什么,不能做什么”的問題。
在訪問控制過程中,一般把發出訪問、存取請求的一方,例如,用戶、程序、進程等叫作主體;而把被訪問的對象和資源,例如,文件、數據庫、設備、內存區域等叫作客體。另外還有一套定義主體與客體之間相互關系,確定不同主體對不同客體的訪問能力與權限的規則,叫作訪問規則。一個完整的訪問控制體系就是由上述三方面共同構成的。
1.訪問控制策略
訪問控制策略一般可以劃分為三類:自主訪問控制(Discretionary Access Control, DAC),強制訪問控制(Mandarory Access Control,MAC),基于角色的訪問控制(Roal Based Access Control,RBAC)。其中 DAC、MAC 是屬于傳統的訪問控制策略,而 RBAC 則是后來出現的一種訪問控制策略,被認為具有很大的優勢,具有很好的發展前景。
(1)自主訪問控制DAC。自主訪問控制是目前計算機系統中實現最多的訪問控制機制,它使主體可以自主地進行配置以決定其他的主體可以采取什么樣的方式來訪問其所擁有的一些資源,即一個擁有一定權限范圍的主體可以直接或者間接地把權限授予其他的主體。
常見的操作系統如 Windows、UNIX 等都是采用自主訪問控制策略來實施訪問控制的。其常見的方式是由某個用戶(一般為某個文件或資源的擁有者或超級管理員)采用某種方式指定不同類型、不同分組的其他用戶對其名下的資源的訪問許可和訪問方式。
自主訪問控制策略中,由用戶自己決定其他用戶對系統中某些資源的訪問權限,這樣雖然方便,但是卻很難保證這種類型的授權對于整個系統來說是安全的。首先,用戶往往不知道或者難以確定其他的用戶是否適合具有對某些資源的訪問權限;其次,如果不是所有的用戶都有很強的安全意識,可能隨意授權,那么這對于系統安全就是一個潛在的威脅;再次,由用戶自己決定訪問權限的分配,不利于系統管理員實施統一的全局訪問控制;另外,許多組織中往往希望對于信息系統采取的授權與控制結構能夠與該組織的行政結構一致。總之,自主訪問控制策略容易使系統失控,容易給非法入侵者留下可乘之機。所以,自主訪問控制策略的安全性不是很高。
隨著網絡規模的擴大,用戶對訪問控制服務的質量也提出了更高的要求,采用自主訪問控制策略已經很難滿足一個安全性要求比較高的系統的需要。
(2)強制訪問控制MAC。強制訪問控制是系統統一采用某種訪問權限的授予和撤銷的策略,而且強制所有主體都必須服從這種訪問權限的分配。
MAC 一般用在安全級別層次比較多的軍事、安全等特殊應用領域中。它預先為系統中接受的所有主體、客體根據可以信任的程度、所處的崗位和承擔的任務、信息的敏感程度、時間發展的階段等劃分成若干級別,例如,信息可以分為絕密、機密、秘密和無密級等不同的級別。然后再根據主體和客體的級別標記來決定訪問模式,任何用戶對任何客體的訪問請求都由這種安全級別的劃分及相應的權限配置來控制。
強制訪問控制由于過于強調系統的安全性能,雖然能夠很好地控制系統的安全,但是它管理起來比較麻煩,工作量很大,也不夠靈活。
(3)基于角色的訪問控制RBAC。DAC 和 MAC 訪問控制策略都各有其特點,但是也各有它們的不足。而基于角色的訪問控制則可以在克服以上兩者的缺點的同時,提供一個良好的安全的系統環境,因而是面向企業的系統中一種十分有效的訪問控制策略。
DAC 系統中,有一種常見的情況,就是在一個組織中,最終用戶能夠使用某些資源,但是它并不是該資源的擁有者,資源的擁有者是這個組織或組織中的所有用戶。這時,就應該基于用戶的職務來進行訪問權限的設置和分配,而不應該基于資源的擁有者來進行。
例如,在圖書館中,應該根據某一個用戶是流通人員、文獻編目人員,還是分館的管理員等不同的角色來分配和設置權限。如果是文獻編目人員,那么他對系統中流通的圖書這種資源就只能有查看的權限,而對未進行典藏的圖書等資源就有比較高的訪問權限;如果是分館的管理員,那么他相應地就具有對該分館的讀者、文獻等資源有較高的訪問權限,而對其他用戶則沒有。也就是說,用戶具有什么樣的訪問權限,不直接取決于用戶自己,而是取決于他所屬的角色,有什么樣的角色就有什么樣的權限。
角色的種類和訪問權限由系統管理員來定義,每一個成員屬于哪種類型的角色也由系統管理員來規定,即只有系統管理員才有權定義和分配角色,而且對于用戶來說只能服從系統中的這一系列規定,而不能有自主的配置,因此這是一種非自主型訪問控制策略。
2.訪問許可的授權, 有三種類型:
(1)等級型。把對客體的存取控制權限的修改能力劃分成不同的等級,擁有高級別修改能力的主體可以把這種權限分配給比其級別低的主體。依此類推,從而將訪問許可的授權關系組成一個樹型結構。
例如,超級管理員可以作為這個等級樹的根,具有修改所有客體的存取控制表的能力,且可以向任意一個主體分配這種修改權。系統管理員把用戶根據部門劃分成多個子集,并對部門領導授予相應存取控制權限的修改權和對修改權的分配權。部門領導又可以把自己所擁有的權力按照同樣的方法向下授權。
這種方式的優點是樹型結構與實際組織機構類似,并且可以由領導根據日常實際工作需要進行授權來對各級用戶進行控制與管理。但這種方式也有一個缺點,就是對同一個客體來說,可能存在多個主體有能力修改其存取控制權限。
(2)擁有型。這種類型對每一個客體都有一個擁有者(一般情況下就是該客體的創建者),擁有者具有對所擁有的客體的全部的控制權,并且可以任意修改其擁有的客體的訪問控制表,并可對其他主體授予或撤銷對其客體的任何一種訪問權限。但是擁有者無權將其對客體的訪問控制權的分配權授予其他主體。
在 UNIX 系統中就是用這種方式來進行授權控制的。
(3)自由型。自由型的特點是一個客體的擁有者可以對任何主體授予對他所擁有的客體的訪問權限,同時還可以把這種分配權授予其他主體而不受任何限制。這樣,獲得了這種授權的主體就可以把這種分配權授予更多的主體而不受該客體擁有者的限制。這樣,一旦訪問控制的分配權被授予出去,就很難控制對客體的訪問了。顯然,這樣做安全性比較差,一般的系統中很少采用這種方式。