訪問控制


訪問控制目標

  1. 防止非授權用戶的訪問
  2. 防止合法用戶以非授權的方式訪問資源

訪問控制原理

  1. 訪問控制的安全策略:對於某個具體的系統資源,誰可以訪問以及允許的訪問類型。
  2. 廣義的訪問控制涉及的實體類型:
    在這裏插入圖片描述
  • 認證:驗證實體身份是其所聲稱身份的過程。
  • 授權:授予實體訪問某種類型資源的權利。
  • 審計:對系統的活動進行獨立的評審和檢查,檢查系統控制的正確性,以便系統按照既定的策略和措施來執行,檢查安全違背的情況。
  1. 訪問控制工作在用戶(或用戶進程)與系統資源之間。
  2. 系統必須首先認證試圖訪問的用戶,認證結果決定了用戶是否被允許訪問系統,訪問控制決定了用戶是否被允許訪問特定的系統資源。
  3. 訪問控制策略
  • 自主訪問控制策略(DAC):根據請求者的身份和訪問規則控制訪問。之所以是自主的,是因爲允許一個實體按自己的意願授予另一個實體訪問某種資源的權利。
  • 強制訪問控制策略(MAC):通過比較安全許可的安全標記來控制訪問。之所以是強制的,是因爲不允許一個實體按自己的意願授予另一個實體訪問某種資源的權利。

安全許可:用來表示用戶進程的安全級別
安全標記:用來表示系統資源的安全級別

  • 基於角色的訪問控制(RBAC):通過在系統中設置一些角色,角色具有對某種資源的訪問權,然後將用戶分配給角色從而控制訪問。
  1. 訪問控制系統應該支持的特徵
  • 可靠的輸入:訪問控制系統要求用戶是可信的,因此必須要求認證系統在訪問控制系統之前;訪問控制系統要求其他輸入也是有效的,系統必須具有一種方法來確定信息來源。
  • 支持細粒度和粗粒度的規約:

細粒度規約:允許在一條記錄或者在一個記錄的某個字段的級別進行訪問控制。
粗粒度規約:允許在一個文件或數據庫,表的級別進行訪問控制。

  • 最小特權原則:每個用戶僅被分配完成工作所需的最小資源和權限。
  • 職責分離:將系統功能劃分爲多個級別,由不同的用戶分別完成,可以防止由一個用戶而破壞整個進程。
  • 開放和封閉策略

開放策略:除非特別禁止的訪問,否則都是允許的。
封閉策略:僅允許特別授權的訪問。

  • 策略組合和衝突解決:可以將多種策略組合運用到一種系統資源中且每種策略之間不能發生衝突。
  • 管理策略:管理策略用來指定誰能添加,刪除或修改訪問規則。
  • 雙重控制:一項任務要求兩個或兩個以上個體合作完成。
  1. 訪問控制的基本元素
  • 主體:能夠訪問客體的實體,一般指代表用戶的進程。

三類主體:

所有者:可以是資源的創建者。
組:除了非配的資源的所有者的特權,組用戶也可以被授予訪問權。
世界:被授予訪問權最少的用戶。

  • 客體:外界對其訪問受到控制的資源
  • 訪問方式:主體可以訪問客體的方式。

讀:可以查看系統資源,包括複製和打印的能力。
寫:可以添加,修改和刪除系統資源,寫權限包括讀權限。
執行:可以執行指定的程序。
刪除:可以刪除某個系統資源
創建
搜索:列出目錄中的文件或者搜索某個目錄


自主訪問控制

  1. 自主訪問控制在操作系統中或數據庫管理系統中通常用訪問控制矩陣來實現。
  2. 訪問控制矩陣一維由試圖訪問的主體組成,另一維標識了可以訪問的系統資源,每一項表示特定主體對特定資源的訪問權。
  1. 將訪問控制矩陣按列分解可以得到訪問控制表(ACL),對於每個客體,ACL列出其被允許的訪問權限。ACL可以包含一個默認的訪問權限,使得特權用戶具有一組默認的權限,默認的訪問權遵循最小特權原則。
  2. 將訪問控制矩陣按行分解可以得到能力權證,權證表示了一個具體用戶對每一種能夠訪問的資源的訪問權限。

存在問題:權證分散的保存在系統中,可能存在權證僞造。
解決方案:由操作系統保存用戶權證,存放在用戶不能夠訪問的內存區域;爲每一個權證設置一個權證標識。

  1. 自主訪問控制通用模型
  • 保護狀態:在一個時間點,每個主體對每個客體訪問權的集合。
  • 模型的三種需求:表示保護狀態,執行訪問權以及允許主體以某些方式更改保護狀態。
    在這裏插入圖片描述
  • 擴展的訪問控制矩陣客體包括:

進程:包括阻塞,喚醒或刪除進程的能力。
設備:讀寫設備,控制設備操作,封鎖解鎖設備的能力。
存儲單元或區域:包括讀寫一些某些在默認狀態下不允許被訪問的區域。
主體:對主體的訪問權或者授予或刪除主體對其他客體的訪問權。

  • 一次訪問嘗試流程:

主體S對客體發出類型爲a的請求
該請求導致了客體的訪問控制器生成形如(S,a,X)的報文。
控制器詢問訪問控制矩陣,以確定a是否在A[S,X]中,如果在則允許訪問,如果不再則拒絕訪問,並觸發警告及適當的動作。

  • 某些主體具有修改訪問控制矩陣的能力,修改訪問控制矩陣被看作是對矩陣的一次訪問,矩陣的每一項作爲訪問的客體。
  1. 訪問控制系統命令
    在這裏插入圖片描述
  • 規則R1表示如果a* 存在與A[S0,X]中,那麼S0可以將對客體X的a* 訪問權帶複製標識或不帶複製標識授予任意主體。
  • 規則R2表示如果S0是客體X的所有者,那麼S0可以授予任何其他主體對客體X的任何訪問權。
  • 規則R3表示S0能刪除其控制主體所在的行或者擁有的客體所在的列。
  • 規則R4表示S0能讀取其擁有或控制的矩陣部分
  • 規則R5表示S0能夠創建客體X,並且自己設爲客體的擁有者
  • 規則R6表示客體的所有者可以銷燬該客體,從而刪除訪問控制矩陣對於的列
  • 規則R7表示主體能夠創建新的主體,並且擁有新的主體,新的主體對自身有控制權。
  • 規則R8表示主體的所有者能夠刪除該主體在訪問控制矩陣對應的行和列。
  1. 保護域:是一組客體以及對這些客體的訪問權,在訪問控制矩陣中,一行就是一個保護域。
  • 進程與保護域之間的關聯可以是靜態的,也可以是動態的。動態聯繫是指進程在執行的過程中可以由一個保護域切換到另一個保護域。
  1. UNIX文件訪問控制機制
  • 所有UNIX文件都由操作系統通過inode管理,文件數據都存儲在塊中,inode就是用來存儲文件都元信息。
    在這裏插入圖片描述
  • inode包含文件的元信息,具體來說有以下內容:
      * 文件的字節數
      * 文件擁有者的User ID
      * 文件的Group ID
      * 文件的讀、寫、執行權限
      * 文件的時間戳,共有三個:ctime指inode上一次變動的時間,mtime指文件內容上一次變動的時間,atime指文件上一次打開的時間。
      * 鏈接數,即有多少文件名指向這個inode
      * 文件數據block的位置
  • inode也會消耗硬盤空間,硬盤格式化的時候,操作系統將硬盤分爲兩個區域。一個是數據區,存放文件數據。另一個是inode區,存放inode所包含的信息。
  • 每個inode都有一個號碼,操作系統用inode號碼來標識不同的文件,一般情況下,文件名和inode號碼是一一對應關係,但是UNIX/Linux系統中允許,多個文件名指向同一個inode號碼,這就意味着,可以用不同的文件名訪問同樣的內容。刪除文件名,不影響另一個文件名的訪問。這種情況就被稱爲硬鏈接。
  • 軟連接:文件A和文件B的inode不同,但文件A中存放的是文件B的路徑,打開文件A會自動導向文件B。

基於角色的訪問控制

  1. RBAC給角色分配訪問權而不是給用戶分配訪問權,用戶根據他們的職責被靜態的或動態的分配給不同的角色。
  2. 用戶與角色的關係是多對多的,角色與資源的關係也是多對多的。
  3. RBAC有助於實現最小特權原則,每個角色包含其所需要的訪問權的最小集合。
  4. RBAC參考模型
    在這裏插入圖片描述
  • RBAC0: 包含RBAC系統的最小功能
  • RBAC1:包含RBAC0的所有功能,並且增加了角色層次,一個角色能夠繼承另一個角色的許可
  • RBAC2:包含RBAC0的所有功能,增加了約束限制配置RBAC系統組件的能力。
  • RBAC3:包含RBAC0,RBAC1,RBAC2的所有功能。
  1. 基本模型—RBAC0
  • 包含四種類型的實體:
  • 用戶:訪問計算機系統的個體
  • 角色:負責完整計算系統中一項任務的職責
  • 許可:對一個或多個客體的訪問權。
  • 會話:表示用戶與該用戶被分配的角色之間臨時的一對多的關係,用戶僅與完成特定任務所必須的角色建立會話,符合最小特權原則。
  1. 角色層次—RBAC1
  • 角色層次利用繼承的概念使得一個角色能夠獲得其下級所擁有的訪問權。
  • 兩個角色之間的連線表示上級角色擁有下級角色所有的訪問權及下級角色不具有的訪問權,一個角色可以從多個角色那裏繼續訪問權。
  1. 約束—RBAC2
  • 約束是在角色之間定義的關係或與角色相關的條件
  • 互斥角色

指一個用戶只能被分配給集合中的一個角色,可以是靜態的也可以是動態。動態是指在一次會話中,一個用戶僅能被分配給集合中的一個角色。
連同互斥許可的分配,互斥角色集具有的性質:

一個用戶只能(靜態地或動態地)被分配給一個角色
一個許可只能被分配給一個角色

互斥角色具有不重疊的許可,互斥角色的目的增加具有不同的能力,如果攻擊者想要攻擊系統,必須被分配給更多的角色,增加了攻擊的難度。

  • 基數
    限制被分配給一個角色用戶的數量
  • 先決條件

一個用戶僅當被分配直接下級角色,才能被分配上級角色。
好處:如果一個用戶執行一個功能並不需要上級角色的全部許可,那麼用戶可以被分配下級角色,符合最小特權原則。

  1. NIST RBAC模型
    在這裏插入圖片描述
  • 包括四個組件:核心RBAC,層次RBAC,靜態職責分離(SSD)和動態職責分離(DSD)。

核心RBAC:
與RBAC0相同。但NIST引入了操作和對象這兩個子實體細化了許可的概念。

對象:系統資源
操作:在調用時爲用戶執行某些功能

核心RBAC管理函數包括在用戶集添加和刪除用戶,在角色集添加和刪除角色,創建和刪除用戶到角色之間的分配,創建和刪除角色到許可之間的分配。
支持系統函數:創建用戶與角色集之間的會話,在會話中添加或刪除角色,檢查會話主體是否有權限執行對客體的請求操作
評審函數:使用戶能夠看清模型的所有元素及其關係。

層次RBAC
包含RBAC1描述的繼承概念。在NIST標準中,繼承包含兩個方面的含義:

角色r1繼承了角色r2的所有許可
分配給角色r1的用戶也分配給角色r2
則稱角色r1是角色r2的子孫

NIST模型定義兩種角色層次:

通用角色層次:
一個角色可以從多個下級角色繼續許可,並且多個角色可以繼承同一個下級角色。
受限角色層次:將有一個或多個直接祖先的角色限制成唯一的子孫。

新增四個管理函數:

在兩個已存在的角色之間添加新的直接繼承關係
刪除已存在的直接繼承關係
創建新的角色並將其添加爲已存在的角色的直接子孫
層次RBAC的評審函數使管理員能夠查看各角色之間的繼承關係

靜態職責分離:

SSD是一個二元組(角色集,n),其中沒有用戶能夠被分配給角色集中n個或n個以上的角色。
SSD包括創建,刪除角色集及添加,刪除角色成員的管理函數,還包括查看已存在的SSD集屬性的評審函數。

動態職責分離:
DSD是一個二元組(角色集,n),n是大於等於2的自然數,沒有用戶在一次會話中能夠激活角色集的n個或大於n個角色。
DSD的管理員能夠是用戶在不同的時間段具有不同的能力,與SSD相同,DSD包括用來定義和查看DSD關係的管理和評審函數。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章