Freigeben über


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

Siehe auch

LUID_AND_ATTRIBUTES

ObDereferenceObject

ObReferenceObjectByHandle-

SID-

SID_AND_ATTRIBUTES

SeCreateClientSecurity

SeImpersonateClientEx-

SeQueryInformationToken

SeTokenIsRestricted

TOKEN_GROUPS

TOKEN_PRIVILEGES