Función SeFilterToken (ntifs.h)

La rutina SeFilterToken crea un nuevo token de acceso que es una versión restringida de un token de acceso existente.

Sintaxis

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
);

Parámetros

[in] ExistingToken

Puntero a un token de suplantación o principal. El token también puede ser un token restringido. Este token ya debe estar abierto para TOKEN_DUPLICATE acceso. Este puntero se puede obtener de un identificador de token existente llamando a ObReferenceObjectByHandle y especificando TOKEN_DUPLICATE como tipo DesiredAccess .

[in] Flags

Especifica opciones de privilegios adicionales. Este parámetro puede ser cero o una combinación de los valores siguientes.

Valor Significado
DISABLE_MAX_PRIVILEGE Deshabilita todos los privilegios del nuevo token, excepto SE_CHANGE_NOTIFY_PRIVILEGE. Si se especifica este valor, se omite el parámetro PrivilegesToDelete .
SANDBOX_INERT Almacena la marca TOKEN_SANDBOX_INERT en el token.

[in, optional] SidsToDisable

Puntero a una estructura de TOKEN_GROUPS que contiene una matriz de estructuras de SID_AND_ATTRIBUTES que especifican los SID de solo denegación en el token restringido. El sistema usa un SID de solo denegación para denegar el acceso a un objeto protegible. La ausencia de un SID de solo denegación no permite el acceso.

Deshabilitar un SID activa SE_GROUP_USE_FOR_DENY_ONLY y desactiva SE_GROUP_ENABLED y SE_GROUP_ENABLED_BY_DEFAULT. Todos los demás atributos se omiten.

Los atributos de solo denegación se aplican a cualquier combinación de los SID de un token existente, incluidos el SID de usuario y los SID de grupo que tienen el atributo SE_GROUP_MANDATORY. Para obtener los SID asociados al token existente, llame a SeQueryInformationToken con las marcas TokenUser y TokenGroups. SeFilterToken omite los SID de la matriz que no se encuentran también en el token existente.

SeFilterToken omite los miembros Attributes de las estructuras de SID_AND_ATTRIBUTES.

Este parámetro es opcional y puede ser NULL.

[in, optional] PrivilegesToDelete

Puntero a una estructura de TOKEN_PRIVILEGES que contiene una matriz de estructuras de LUID_AND_ATTRIBUTES que especifican los privilegios que se van a eliminar en el token restringido.

Para obtener los privilegios mantenidos por el token existente, llame a SeQueryInformationToken con la marca TokenPrivileges. SeFilterToken omite los privilegios de la matriz que el token existente no mantiene.

SeFilterToken omite los miembros Attributes de las estructuras de LUID_AND_ATTRIBUTES.

Este parámetro es opcional y puede ser NULL.

[in, optional] RestrictedSids

Puntero a una estructura de TOKEN_GROUPS que contiene una matriz de estructuras de SID_AND_ATTRIBUTES que especifican una lista de siD de restricción para el nuevo token. Si el token existente es un token restringido, la lista de SID de restricción para el nuevo token es la intersección de esta matriz y la lista de restricciones de SID para el token existente.

Los miembros Attributes de las estructuras SID_AND_ATTRIBUTES deben ser cero. La restricción de los SID siempre está habilitada para las comprobaciones de acceso.

Este parámetro es opcional y puede ser NULL.

FilteredToken

Puntero a una variable asignada por el autor de la llamada que recibe la dirección del nuevo token restringido. El nuevo token es el mismo tipo, principal o suplantación, que el token existente.

Valor devuelto

Si uno o varios de los valores de parámetro no son válidos, SeFilterToken devuelve STATUS_INVALID_PARAMETER. (Este valor se devuelve si el token de destino no es un token de suplantación). De lo contrario, SeFilterToken devuelve STATUS_SUCCESS.

Comentarios

SeFilterToken puede restringir el token de las siguientes maneras:

  • Aplique el atributo de solo denegación a los SID del token para que no se puedan usar para acceder a objetos protegidos. Para obtener más información sobre el atributo de solo denegación, vea Atributos de SID en un token de acceso en la documentación de Microsoft Windows SDK.

  • Quite los privilegios del token.

  • Especifique una lista de restricciones de SID, que usa el sistema cuando comprueba el acceso del token a un objeto protegible. El sistema realiza dos comprobaciones de acceso: una mediante los SID habilitados del token y otra con la lista de restricciones de SID. Solo se concede acceso si ambas comprobaciones de acceso permiten los derechos de acceso solicitados.

El token restringido se puede usar junto con SeCreateClientSecurity y SeImpersonateClientEx para crear un proceso que tenga privilegios y derechos de acceso restringidos.

Para obtener más información sobre la seguridad y el control de acceso, consulte Modelo de seguridad de Windows para desarrolladores de controladores y la documentación sobre estos temas en Windows SDK.

Cuando el token devuelto en NewToken ya no es necesario, descargólo llamando a ObDereferenceObject.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP
Plataforma de destino Universal
Encabezado ntifs.h (incluya Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

Consulte también

LUID_AND_ATTRIBUTES

ObDereferenceObject

ObReferenceObjectByHandle

SID

SID_AND_ATTRIBUTES

SeCreateClientSecurity

SeImpersonateClientEx

SeQueryInformationToken

SeTokenIsRestricted

TOKEN_GROUPS

TOKEN_PRIVILEGES