共用方式為


模擬層級 (授權)

SECURITY_IMPERSONATION_LEVEL 列舉會定義四個模擬層級,以判斷伺服器可以在用戶端內容中執行的作業。

模擬層級 描述
SecurityAnonymous 伺服器無法模擬或識別用戶端。
SecurityIdentification 伺服器可以取得用戶端的身分識別和許可權,但無法模擬用戶端。
SecurityImpersonation 伺服器可以在本機系統上模擬用戶端的安全性內容。
SecurityDelegation 伺服器可以在遠端系統上模擬客戶端的安全性內容。

 

具名管道、RPC 或 DDE 連線的用戶端可以控制模擬層級。 例如,命名管道用戶端可以呼叫 CreateFile 函式,以開啟命名管道的句柄,並指定伺服器的模擬層級。

當命名管道、RPC 或 DDE 連線是遠端時,會忽略傳遞至 createFile以設定模擬層級旗標。 在此情況下,用戶端的模擬層級是由伺服器啟用的模擬層級所決定,而伺服器是由目錄服務中伺服器帳戶上的旗標所設定。 例如,如果伺服器已啟用委派,即使傳遞至 createFile 的旗標 指定識別模擬層級,用戶端的模擬層級也會設定為委派。

DDE 用戶端會使用 DdeSetQualityOfService 函式搭配 SECURITY_QUALITY_OF_SERVICE 結構來指定模擬層級。 SecurityImpersonation 層級是命名管道、RPC 和 DDE 伺服器的預設值。 ImpersonateSelfDuplicateTokenDuplicateTokenEx 函式可讓呼叫端指定模擬層級。 使用 getTokenInformation函式擷取 存取權杖的模擬層級

在 SecurityImpersonation 層級,大部分線程的動作都會發生在線程 模擬令牌的安全性內容,而不是在擁有線程之 進程主要令牌。 例如,如果模擬線程開啟 安全性實體物件,則系統會使用模擬令牌來檢查線程的存取權。 同樣地,如果模擬線程建立新的物件,例如藉由呼叫 CreateFile 函式,新對象的擁有者是用戶端 存取令牌的預設擁有者

不過,在下列情況下,系統會使用進程的主要令牌,而不是呼叫線程的模擬令牌:

  • 如果模擬線程呼叫 CreateProcess 函式,新進程一律會繼承進程的主要令牌。
  • 對於需要SE_TCB_NAME許可權的函式,例如 LogonUser 函式,系統一律會檢查進程主要令牌中的許可權。
  • 對於需要SE_AUDIT_NAME許可權的函式,例如 ObjectOpenAuditAlarm 函式,系統一律會檢查進程主要令牌中的許可權。
  • 在呼叫 OpenThreadToken 函式時,線程可以指定函式是否使用模擬令牌或主要令牌來判斷是否要授與要求的存取權。