SeFilterToken 函式 (ntifs.h)

SeFilterToken 例程會建立新的存取令牌,這是現有存取令牌的限制版本。

語法

NTSTATUS SeFilterToken(
  [in]           PACCESS_TOKEN     ExistingToken,
  [in]           ULONG             Flags,
  [in, optional] PTOKEN_GROUPS     SidsToDisable,
  [in, optional] PTOKEN_PRIVILEGES PrivilegesToDelete,
  [in, optional] PTOKEN_GROUPS     RestrictedSids,
                 PACCESS_TOKEN     *FilteredToken
);

參數

[in] ExistingToken

主要或模擬令牌的指標。 令牌也可以是受限制的令牌。 此令牌必須已經開啟,才能TOKEN_DUPLICATE存取。 呼叫 ObReferenceObjectByHandle,將TOKEN_DUPLICATE指定為 DesiredAccess 類型,即可從現有的令牌句柄取得此指標。

[in] Flags

指定其他許可權選項。 此參數可以是零或下列值的組合。

意義
DISABLE_MAX_PRIVILEGE 停用新令牌中的所有許可權,但SE_CHANGE_NOTIFY_PRIVILEGE除外。 如果指定這個值,則會忽略 PrivilegesToDelete 參數。
SANDBOX_INERT 將TOKEN_SANDBOX_INERT旗標儲存在令牌中。

[in, optional] SidsToDisable

TOKEN_GROUPS 結構的指標,其中包含指定受限制令牌中僅拒絕 SID 之SID_AND_ATTRIBUTES結構的陣列。 系統會使用僅限拒絕的 SID 來拒絕對安全性實體物件的存取。 缺少僅限拒絕的 SID 不允許存取。

停用 SID 會開啟 SE_GROUP_USE_FOR_DENY_ONLY,並 關閉 SE_GROUP_ENABLED和SE_GROUP_ENABLED_BY_DEFAULT。 其他屬性都會被忽略。

僅限拒絕屬性適用於現有令牌 SID 的任何組合,包括具有SE_GROUP_MANDATORY屬性的使用者 SID 和群組 SID。 若要取得與現有令牌相關聯的 SID,請使用 TokenUser 和 TokenGroups 旗標呼叫 SeQueryInformationTokenSeFilterToken 會忽略數位中未在現有令牌中找到的任何 SID。

SeFilterToken 會忽略SID_AND_ATTRIBUTES結構的 Attributes 成員。

此參數是選擇性的,可以是 NULL。

[in, optional] PrivilegesToDelete

TOKEN_PRIVILEGES 結構的指標,其中包含指定在受限制令牌中刪除之許可權的LUID_AND_ATTRIBUTES結構陣列。

若要取得現有令牌所持有的許可權,請使用 TokenPrivileges 旗標呼叫 SeQueryInformationTokenSeFilterToken 會忽略數位中未由現有令牌持有的任何許可權。

SeFilterToken 會忽略LUID_AND_ATTRIBUTES結構的 Attributes 成員。

此參數是選擇性的,可以是 NULL。

[in, optional] RestrictedSids

TOKEN_GROUPS 結構的指標,其中包含指定新令牌限制 SID 清單的SID_AND_ATTRIBUTES結構數位。 如果現有令牌是受限制的令牌,則新令牌的限制 SID 清單是這個陣列的交集,以及限制現有令牌的 SID 清單。

SID_AND_ATTRIBUTES結構的 Attributes 成員必須是零。 限制 SID 一律會啟用存取檢查。

此參數是選擇性的,可以是 NULL。

FilteredToken

接收新受限制令牌位址之呼叫端配置的變數指標。 新的令牌與現有令牌的類型相同,主要或模擬。

傳回值

如果一或多個參數值無效, SeFilterToken 會傳回STATUS_INVALID_PARAMETER。 (如果目標令牌不是模擬令牌,則會傳回此值。) 否則 ,SeFilterToken 會傳回STATUS_SUCCESS。

備註

SeFilterToken 可以透過下列方式限制令牌:

  • 將僅限拒絕屬性套用至令牌中的 SID,使其無法用來存取受保護的物件。 如需僅限拒絕屬性的詳細資訊,請參閱 Microsoft Windows SDK 檔中的存取令牌中的 SID 屬性。

  • 從令牌中移除許可權。

  • 指定限制 SID 的清單,當系統檢查令牌對安全性實體物件的存取權時,系統會使用此清單。 系統會執行兩個存取檢查:一個使用令牌已啟用的SID,另一個則使用限制 SID 的清單。 只有在兩個存取檢查都允許要求的訪問許可權時,才會授與存取權。

受限制的令牌可以與 SeCreateClientSecuritySeImpersonateClientEx 搭配使用,以建立具有限制訪問許可權和許可權的程式。

如需安全性和訪問控制的詳細資訊,請參閱 適用於驅動程序開發人員的 Windows 安全性模型 ,以及 Windows SDK 中有關這些主題的檔。

不再需要 NewToken 中傳回的令牌時,請呼叫 ObDereferenceObject 來釋出令牌。

規格需求

需求
最低支援的用戶端 Windows XP
目標平台 Universal
標頭 ntifs.h (包含 Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL < DISPATCH_LEVEL

另請參閱

LUID_AND_ATTRIBUTES

ObDereferenceObject

ObReferenceObjectByHandle

SID

SID_AND_ATTRIBUTES

SeCreateClientSecurity

SeImpersonateClientEx

SeQueryInformationToken

SeTokenIsRestricted

TOKEN_GROUPS

TOKEN_PRIVILEGES