受限制的權杖

受限制的權杖是CreateRestrictedToken函式已修改的主要或模擬存取權杖。 在受限制權杖的安全性內容中執行的進程或模擬執行緒,會限制其存取安全性物件或執行特殊許可權作業的能力。 CreateRestrictedToken函式可以透過下列方式限制權杖:

  • 從權杖中移除 許可權
  • 將僅拒絕屬性套用至權杖中的 SID,使其無法用來存取受保護的物件。 如需僅限拒絕屬性的詳細資訊,請參閱 存取權杖中的 SID 屬性
  • 指定限制 SID 的清單,此清單可以限制對安全性實體物件的存取。

當系統檢查權杖對安全性實體物件的存取權時,系統會使用限制 SID 的清單。 當受限制的進程或執行緒嘗試存取安全性實體物件時,系統會執行兩個存取檢查:一個使用權杖已啟用的 SID,另一個則使用限制 SID 的清單。 只有在兩個存取檢查都允許要求的存取權限時,才會授與存取權。 如需存取檢查的詳細資訊,請參閱 DACLs 如何控制物件的存取

您可以在CreateProcessAsUser函式的呼叫中使用受限制的主要權杖。 一般而言,呼叫 CreateProcessAsUser 的程式必須具有SE_ASSIGNPRIMARYTOKEN_NAME許可權,這通常只由系統程式碼或本機系統帳戶中執行的服務所保留。 不過,如果 CreateProcessAsUser 呼叫指定受限制版本的呼叫端主要權杖,則不需要此許可權。 這可讓一般應用程式建立受限制的進程。

您也可以在ImpersonateLoggedOnUser函式中使用受限制的主要或模擬權杖

若要判斷權杖是否有限制 SID 的清單,請呼叫 IsTokenRestricted 函式。

注意

使用受限制權杖的應用程式應該在預設桌面以外的桌面上執行受限制的應用程式。 若要防止受限制的應用程式使用 SendMessagePostMessage攻擊,這是在預設桌面上不受限制的應用程式的必要條件。 如有必要,請針對您的應用程式在桌面之間切換。