簡介
通用存取控制是指用戶進行存取數據時,系統通常採用許可權控制策略。在計算機系統中,經常會有未經授權的用戶擅自修改系統中所保存的信息,這裡的修改包括建立和刪除檔案以及在檔案中增加新內容和改變原有內容等。為了保證系統信息的安全,系統一般都會採取一些通用存取控制方法或策略。通用存取控制也可以是指系統經常採用存取控制策略。常見通用存取控制方法可以分為以下幾種:密碼、口令、訪問控制矩陣以及訪問控制表。按照存取控制許可權來劃分,通用存取控制方法有強制存取控制、自由存取控制、以及角色存取控制三種。
基於許可權的通用存取控制
強制存取控制(Mandatory Access Control, MAC),以管理者授權為基礎,所有的資訊元件都需要經過管理者授權,才能被使用者所存取。
自由存取控制(Discretionary Access Control, DAC),以創建資訊元件的元件持有者授權為基礎,不需要經過管理者授權,持有者授權可以決定使用者對於資訊元件的存取許可權。
角色存取控制(Role-base Access Control),存取許可權與使用者角色相依,資訊元件的存取被授權給角色,使用者需要先取得角色身份,才能透過角色身份取得存取許可權。例如,某公司有經理人與一般職員兩個角色,經理人可以存取A與B兩元件,但職員只可以存取B元件。某甲進入公司之後取得職員身份,依據角色存取控制方法,某甲只能存取B資訊元件,直到他獲得經理人角色之後,才可以獲得A資訊元件的存取許可權。
基於角色的存取控制
基於角色的存取控制(Role-based Access Control,RBAC)是作為傳統的DAC和MAC的替代和補充被提出的。RBAC的主要思路是將存取許可權賦予角色,用戶必須是適當角色的成員之一,並以此獲得該角色的許可權。這種方法簡化了對存取許可權的管理工作。角色只按照組織中不同的工作職責來創建,而用戶則按照職責被指定其所扮演的角色。RBAC 能夠滿足的兩條安全原則分別是:任務分離原則和最少許可權原則。
任務分離
任務分離要求對於特定的一個事務集合,沒有一個人被允許來執行所有這些事務。最常見的例子是,對於提起支付與授權支付,不允許一個人同時處理這兩項事務。任務分離可以是靜態的,也可以是動態的。一項動態策略允許有更大的彈性,它允許同一個人既扮演提起者又扮演授權者的角色,但沒有人能夠對他或她所提起的支付進行授權。靜態策略可以通過僅檢查用戶的角色來實現;對於動態的情況,系統必須同時使用角色和用戶身份來檢查事務的訪問情況。
最小許可權原則
最小許可權原則要求用戶分配的許可權不會多於完成某項工作所必須的許可權。確保最小許可權要求辨別該用戶的工作,確定完成該項工作所需要的最小許可權集合,並限制用戶在這些許可權而不是更大範圍之內。如果我們將角色當作安全策略的一個組成部分,那么可以將它們從各種機制中分離出來,例如,在存取控制系統中用來實現角色的用戶組( Group)。
基本結構
在 RBAC的框架下,用戶按照其能力和在組織中的職責成為某種角色的一員。用戶允許執行的操作是基於用戶所屬的角色。當工作任務改變時,可以方便地撤銷用戶在原來角色中的成員資格並確立新的成員資格。當新的操作創建時,可以建立與角色的關聯;而當組織的功能改變時,可以刪除舊的操作。所有的許可權都是首先分配給角色而不是直接分配給用戶,然後再將角色分配給用戶, 當一個用戶創建了一個會話時,會話擁有了用戶激活的該角色的所有許可權。為了方便角色的管理,可以將角色分層組織,這樣高級角色比低級角色功能更強,擁有更多的許可權。
套用約束的基本思想是設計更高層的組織策略,一個典型的例子就是設計相互無關的角色。一旦確定了某些角色之間是相互排斥的,就不需要過多的在意單個用戶所分配的角色。後面的活動就可以授權並細化,而無須擔心要協調組織內所有策略的目標。約束條件可以指定在系統層或套用層上,可以需要也可以不需要事件的觸發。例如,一定事件的發生會導致一定約束條件的套用,儘管如此,用來指定約束條件的一般方法應適用於所有這些情況。
正式描述
Ferraiolo and Kuhn 對 RBAC 給出了一個簡單的正式描述:
( 1) 對於每一個主體, 活動的角色是主題正在使用的角色;
( 2) 每個主體可以被授權執行一個或多個角色;
( 3) 每個角色可以被授權執行一個或多個事務;
( 4) 主體可以執行事務。
規則
三個基本規則:
( 1) 角色分配:只有當主體已選擇或被分配了一個角色,該主體才能執行一項事務。除了別和確認角色的過程( 如login) 不看作是一項事務之外, 系統中所有其他的用戶活動都是通過事務來進行的。因此,所有活動用戶都要求具有一些主動角色。
( 2) 角色授權:一個主體的活動角色必須被授權給該主體。第( 1)、 ( 2) 條規則確保了用戶只能使用被授權的角色。
( 3) 事務授權:只有當一項事務被授權給該主體的活動角色時,該主體才能執行這項事務。
常見通用存取控制方法
訪問控制表
訪問控制表(Access Control List,ACL),又稱 存取控制串列,是使用以訪問控制矩陣為基礎的訪問控制方法,每一個對象對應一個串列主體。訪問控制表描述每一個對象各自的訪問控制,並記錄可對此對象進行訪問的所有主體對對象的許可權。訪問控制表的主要缺點是不可以有效迅速地枚舉一個對象的訪問許可權。因此,要確定一個對象的所有訪問許可權需要搜尋整個訪問控制表來找出相對應的訪問許可權。
訪問控制矩陣
訪問控制矩陣( Access Control Matrix),或譯為訪問控制數組,又稱訪問矩陣(Access Matrix),是一套抽象、形式化的安全性模型。這套模型描述了計算機系統中的安全保護狀態,各別表示其下的每個附屬子體,對於系統中的每個對象,其所擁有的許可權。這個概念最早是由巴特勒·蘭普森在1971年所提出。
在訪問矩陣中的每一個元素,分別代表主體與受體的許可權。在某些大型計算機伺服器上,存在數量龐大的對象和對象擁有的許可權。這樣會導致訪問控制矩陣過大而難以一次性查看或閱讀。因此有時採用訪問控制表來改善這個缺點。
口令
當一個用戶要登錄某台計算機時,作業系統通常都要認證用戶的身份。而利用口令來確認用戶的身份是當前最常用的認證技術。通常,每當用戶要上機時,系統中的登錄程式都首先要求用戶輸入用戶名,登錄程式利用用戶輸入的名字去查找一張用戶註冊表或口令檔案。在該表中,每個已註冊用戶都有一個表目,其中記錄有用戶名和口令等。登錄程式從中找到匹配的用戶名後,再要求用戶輸入口令,如果用戶輸入的口令也與註冊表中用戶所設定的口令一致,系統便認為該用戶是合法用戶,於是允許該用戶進入系統;否則將拒絕該用戶登錄。口令是由字母或數字、或字母和數字混合組成的,它可由系統產生,也可由用戶自己選定。系統所產生的口令不便於用戶記憶,而用戶自己規定的口令則通常是很容易記憶的字母、數字,例如生日、住址、電話號碼,以及某人或寵物的名字等。這種口令雖便於記憶,但也很容易被攻擊者猜中。
密碼
它是數字通信中為保證信息的保密性及真實性而對信息所做的變換。這裡的信息表現為某個q元字母表集合上的序列,原始的信息稱為明文,經加密變換後得到的序列稱為密文。若按照某種規則重新安排明文中元素的次序而得出密文,則這樣的變換稱為移位密碼.若字母表到自身有一個一一對應,將明文中每個元素用其對應的元素替代而得到密文,則這樣的變換稱為代換密碼。在通用存取控制中,只有知道密鑰用戶才能存取系統的有關信息。