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_AND_ATTRIBUTES結構陣列,指定受限制令牌中的僅限拒絕 SID。 系統會使用僅限拒絕的 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結構的 屬性 成員。
這個參數是選擇性的,而且可以是 NULL。
[in, optional] PrivilegesToDelete
TOKEN_PRIVILEGES結構的指標,其中包含LUID_AND_ATTRIBUTES結構的陣列,指定在受限制令牌中刪除的許可權。
若要取得現有令牌所持有的許可權,請使用 TokenPrivileges 旗標呼叫 SeQueryInformationToken。 SeFilterToken 忽略現有令牌未持有之陣列中的任何許可權。
SeFilterToken 會忽略LUID_AND_ATTRIBUTES結構 成員 屬性。
這個參數是選擇性的,而且可以是 NULL。
[in, optional] RestrictedSids
TOKEN_GROUPS結構的指標,其中包含SID_AND_ATTRIBUTES結構的陣列,該陣列會指定限制新令牌的SID清單。 如果現有的令牌是受限制的令牌,新令牌的限制 SID 清單就是這個陣列的交集,以及限制現有令牌的 SID 清單。
屬性 SID_AND_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 |
目標平臺 | 普遍 |
標頭 | ntifs.h (include Ntifs.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | < DISPATCH_LEVEL |