SeFilterToken-Funktion (ntifs.h)
Die SeFilterToken Routine erstellt ein neues Zugriffstoken, das eine eingeschränkte Version eines vorhandenen Zugriffstokens ist.
Syntax
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
);
Parameter
[in] ExistingToken
Zeiger auf ein primäres oder Identitätswechseltoken. Das Token kann auch ein eingeschränktes Token sein. Dieses Token muss bereits für TOKEN_DUPLICATE Zugriff geöffnet sein. Dieser Zeiger kann aus einem vorhandenen Tokenhandle abgerufen werden, indem ObReferenceObjectByHandle-aufgerufen wird, wobei TOKEN_DUPLICATE als DesiredAccess- Typ angegeben wird.
[in] Flags
Gibt zusätzliche Berechtigungsoptionen an. Dieser Parameter kann null oder eine Kombination der folgenden Werte sein.
Wert | Bedeutung |
---|---|
DISABLE_MAX_PRIVILEGE | Deaktiviert alle Berechtigungen im neuen Token außer SE_CHANGE_NOTIFY_PRIVILEGE. Wenn dieser Wert angegeben ist, wird der PrivilegesToDelete Parameter ignoriert. |
SANDBOX_INERT | Speichert das TOKEN_SANDBOX_INERT Flag im Token. |
[in, optional] SidsToDisable
Zeigen Sie auf eine TOKEN_GROUPS-Struktur, die ein Array von SID_AND_ATTRIBUTES Strukturen enthält, die die nur deny-only-SIDs im eingeschränkten Token angeben. Das System verwendet eine nur verweigerte SID, um den Zugriff auf ein sicherungsfähiges Objekt zu verweigern. Das Fehlen einer nur verweigerten SID lässt keinen Zugriff zu.
Durch deaktivieren einer SID-werden SE_GROUP_USE_FOR_DENY_ONLY aktiviert, und deaktiviert SE_GROUP_ENABLED und SE_GROUP_ENABLED_BY_DEFAULT. Alle anderen Attribute werden ignoriert.
Nur-Verweigerungsattribute gelten für jede Kombination der SIDs eines vorhandenen Tokens, einschließlich der Benutzer-SID und Gruppen-SIDs, die das attribut SE_GROUP_MANDATORY aufweisen. Rufen Sie SeQueryInformationToken mit den Flags TokenUser und TokenGroups auf, um die mit dem vorhandenen Token verknüpften SIDs abzurufen. SeFilterToken ignoriert alle SIDs im Array, die nicht auch im vorhandenen Token gefunden werden.
SeFilterToken ignoriert die Attribute Member der SID_AND_ATTRIBUTES Strukturen.
Dieser Parameter ist optional und kann NULL sein.
[in, optional] PrivilegesToDelete
Zeigen Sie auf eine TOKEN_PRIVILEGES Struktur, die ein Array von LUID_AND_ATTRIBUTES Strukturen enthält, die die Berechtigungen angeben, die im eingeschränkten Token gelöscht werden sollen.
Rufen Sie SeQueryInformationToken mit dem TokenPrivileges-Flag auf, um die Berechtigungen abzurufen, die vom vorhandenen Token gehalten werden. SeFilterToken ignoriert alle Berechtigungen im Array, die nicht vom vorhandenen Token gehalten werden.
SeFilterToken ignoriert die Attribute Member der LUID_AND_ATTRIBUTES Strukturen.
Dieser Parameter ist optional und kann NULL sein.
[in, optional] RestrictedSids
Zeigen Sie auf eine TOKEN_GROUPS Struktur, die ein Array von SID_AND_ATTRIBUTES Strukturen enthält, die eine Liste der einschränkenden SIDs für das neue Token angeben. Wenn das vorhandene Token ein eingeschränktes Token ist, ist die Liste der einschränkenden SIDs für das neue Token die Schnittmenge dieses Arrays und die Liste der Einschränkung von SIDs für das vorhandene Token.
Die Attribute Member der SID_AND_ATTRIBUTES Strukturen müssen null sein. Das Einschränken von SIDs ist für Zugriffsprüfungen immer aktiviert.
Dieser Parameter ist optional und kann NULL sein.
FilteredToken
Zeiger auf eine vom Aufrufer zugewiesene Variable, die die Adresse des neuen eingeschränkten Tokens empfängt. Das neue Token ist derselbe Typ, der primäre oder der Identitätswechsel, wie das vorhandene Token.
Rückgabewert
Wenn mindestens einer der Parameterwerte ungültig war, gibt SeFilterToken STATUS_INVALID_PARAMETER zurück. (Dieser Wert wird zurückgegeben, wenn das Zieltoken kein Identitätswechseltoken ist.) Andernfalls gibt SeFilterToken STATUS_SUCCESS zurück.
Bemerkungen
SeFilterToken kann das Token auf folgende Weise einschränken:
Wenden Sie das Nur-Verweigern-Attribut auf SIDs im Token an, sodass sie nicht für den Zugriff auf gesicherte Objekte verwendet werden können. Weitere Informationen zum Nur-Verweigern-Attribut finden Sie in der Dokumentation zum Microsoft Windows SDK unter SID-Attribute in einem Zugriffstoken.
Entfernen Sie Berechtigungen aus dem Token.
Geben Sie eine Liste der einschränkenden SIDs an, die das System verwendet, wenn es den Zugriff des Tokens auf ein sicherungsfähiges Objekt überprüft. Das System führt zwei Zugriffsprüfungen durch: eine, die die aktivierten SIDs des Tokens verwendet, und eine andere mithilfe der Liste der einschränkenden SIDs. Der Zugriff wird nur gewährt, wenn beide Zugriffsprüfungen die angeforderten Zugriffsrechte zulassen.
Das eingeschränkte Token kann zusammen mit SeCreateClientSecurity und SeImpersonateClientEx verwendet werden, um einen Prozess mit eingeschränkten Zugriffsrechten und Berechtigungen zu erstellen.
Weitere Informationen zur Sicherheits- und Zugriffssteuerung finden Sie unter Windows-Sicherheitsmodell für Treiberentwickler und die Dokumentation zu diesen Themen im Windows SDK.
Wenn das in NewToken zurückgegebene Token nicht mehr benötigt wird, geben Sie es frei, indem Sie ObDereferenceObjectaufrufen.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows XP |
Zielplattform- | Universal |
Header- | ntifs.h (einschließlich Ntifs.h) |
Library | NtosKrnl.lib |
DLL- | NtosKrnl.exe |
IRQL- | < DISPATCH_LEVEL |