訪問令牌

訪問令牌

訪問令牌(Access Tokens)是Windows作業系統安全性的一個概念。當用戶登入時,系統創建一個訪問令牌,裡面包含登錄進程返回的SID和由本地安全策略分配給用戶和用戶的安全組的特權列表。以該用戶身份運行的的所有進程都擁有該令牌的一個拷貝。系統使用令牌控制用戶可以訪問哪些安全對象,並控制用戶執行相關係統操作的能力。

分類

有兩種令牌:主令牌和模擬令牌。主令牌是由windows核心創建並分配給進程的默認訪問令牌,每一個進程有一個主令牌,它描述了與當前進程相關的用戶帳戶的安全上下文。同時,一個執行緒可以模擬一個客戶端帳戶,允許此執行緒與安全對象互動時用客戶端的安全上下文。一個正模擬客戶端的執行緒擁有一個主令牌和一個模擬令牌。

工作原理

主令牌

訪問令牌包含進程或執行緒的安全上下文的完整描述,其中含有如下信息。

用戶(User)。用戶賬號的SID。若用戶登錄到本地計算機上的一個賬號,則他的 SID來自於本地SAM維護的賬號資料庫;若用戶登錄到一個域賬號,則他的SID來自於活動目錄里用戶對象的Object-SID屬性。

組(Groups)。包含該用戶的安全組的SID列表,表中也包含代表活動目錄里用戶 賬號的用戶對象的SID-History屬性里的SID。

特權(Privileges)。用戶和用戶的安全組在本地計算機上擁有的特權列表。

所有者(Owner)。特定用戶或安全組的SID,這些用戶或安全組默認成為用戶所 創建或擁有的任何對象的所有者。

主組(Primary Group)。用戶的主安全組的SID。這個信息只由POSIX子系統使用, Windows 2000的其他部分對其忽略。

默認任意訪問控制表(Default Discretionary Access Control List, DACL)。一組內置 許可權。在沒有其他訪問控制信息存在時作業系統將其作用於用戶所創建的對象。默認DACL向創建所有者和系統賦予完全控制(Full Control)許可權。

源(Source)。導致訪問令牌被創建的進程,例如會話管理器、LAN管理器或遠程 過程調用(RPC)伺服器。

類型(Type)。指示訪問令牌是主(primary)令牌還是模擬(impersonation)令牌。 主令牌代表一個進程的安全上下文;模擬令牌是服務進程里的一個執行緒,用來臨時接受一個不同的安全上下文(如服務的一個客戶的安全上下文)的令牌。

模擬級別(Impersonation Level)。指示服務對該訪問令牌所代表的客戶的安全上下 文的接受程度。

統計信息(Statistics)。關於訪問令牌本身的信息。作業系統在內部使用這個信息。

限制SID(Restricting SID)。由一個被授權創建受限令牌的進程添加到訪問令牌里 的可選的SID列表。限制SID可以將執行緒的訪問限制到低於用戶被允許的級別。

會話ID(Session ID)。指示訪問令牌是否與終端服務(Terminal Services)客戶會 話相關。

模擬令牌

執行緒能夠在與擁有它的進程的上下文不同的安全上下文裡執行,這種能力稱為模擬,它是為了滿足客戶/伺服器套用的安全需求而設計的。當在一個客戶的安全上下文裡運行時,服務在某種程度上“是”客戶。服務的一個執行緒使用代表客戶資格的訪問令牌來訪問該客戶有權訪問的對象。

模擬的主要原因是根據客戶的標識執行訪問檢查。使用客戶標識進行訪問檢查可以根據該客戶擁有的許可權來限制或擴展訪問。例如,假設一個檔案伺服器上有包含秘密信息的檔案,這些檔案都由一個DACL保護。為了防止客戶未經授權就可訪問這些檔案中的信息,服務可以在訪問檔案之前模擬客戶。

功能特點

每個進程都有一個主令牌(primarytoken)來描述與該進程相關的用戶賬號的安全上下文。與普通的套用進程相關的用戶是啟動該套用的人為用戶,但對一個服務進程卻非如此:服務在自己的賬號下運行,在自己的許可權內充當用戶。與作業系統一起安裝的系統服務在本地系統賬號下運行,其他的服務可以配置為在這個賬號下運行,也可以給予在本地系統上或活動目錄里的單獨賬號。一個服務的主令牌與該服務進程里的控制執行緒和代表該服務運行的所有其他執行緒相關。它標識該服務的賬號、該賬號的組和特權。當服務請求訪問完成工作所需的對象時,在訪問檢查時使用該信息。

當服務接受一個客戶時,它創建一個執行緒來完成這項工作並將客戶的訪問令牌與工作執行緒相關聯。客戶的訪問令牌是一個模擬令牌,它標識客戶、客戶的組和特權。當執行緒代表客戶請求訪問資源時,在訪問檢查過程中使用該信息。在模擬結束後,執行緒重新使用主令牌並返回到服務自己的安全上下文裡操作,而不是客戶的上下文。

相關詞條

熱門詞條

聯絡我們