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 旗標呼叫 SeQueryInformationToken 。 SeFilterToken 會忽略數位中未在現有令牌中找到的任何 SID。
SeFilterToken 會忽略SID_AND_ATTRIBUTES結構的 Attributes 成員。
此參數是選擇性的,可以是 NULL。
[in, optional] PrivilegesToDelete
TOKEN_PRIVILEGES 結構的指標,其中包含指定在受限制令牌中刪除之許可權的LUID_AND_ATTRIBUTES結構陣列。
若要取得現有令牌所持有的許可權,請使用 TokenPrivileges 旗標呼叫 SeQueryInformationToken 。 SeFilterToken 會忽略數位中未由現有令牌持有的任何許可權。
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 的清單。 只有在兩個存取檢查都允許要求的訪問許可權時,才會授與存取權。
受限制的令牌可以與 SeCreateClientSecurity 和 SeImpersonateClientEx 搭配使用,以建立具有限制訪問許可權和許可權的程式。
如需安全性和訪問控制的詳細資訊,請參閱 適用於驅動程序開發人員的 Windows 安全性模型 ,以及 Windows SDK 中有關這些主題的檔。
不再需要 NewToken 中傳回的令牌時,請呼叫 ObDereferenceObject 來釋出令牌。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP |
目標平台 | Universal |
標頭 | ntifs.h (包含 Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |