Función CreateRestrictedToken (securitybaseapi.h)
La función CreateRestrictedToken crea un nuevo token de acceso que es una versión restringida de un token de acceso existente. El token restringido puede tener identificadores de seguridad deshabilitados (SID), privilegios eliminados y una lista de restricciones de SID. Para obtener más información, consulte Tokens restringidos.
Sintaxis
BOOL CreateRestrictedToken(
[in] HANDLE ExistingTokenHandle,
[in] DWORD Flags,
[in] DWORD DisableSidCount,
[in, optional] PSID_AND_ATTRIBUTES SidsToDisable,
[in] DWORD DeletePrivilegeCount,
[in, optional] PLUID_AND_ATTRIBUTES PrivilegesToDelete,
[in] DWORD RestrictedSidCount,
[in, optional] PSID_AND_ATTRIBUTES SidsToRestrict,
[out] PHANDLE NewTokenHandle
);
Parámetros
[in] ExistingTokenHandle
Identificador de un token principal o de suplantación. El token también puede ser un token restringido. El identificador debe tener TOKEN_DUPLICATE acceso al token.
[in] Flags
Especifica opciones de privilegios adicionales. Este parámetro puede ser cero o una combinación de los valores siguientes.
Valor | Significado |
---|---|
|
Deshabilita todos los privilegios del nuevo token excepto el privilegio SeChangeNotifyPrivilege . Si se especifica este valor, se omiten los parámetros DeletePrivilegeCount y PrivilegesToDelete . |
|
Si se usa este valor, el sistema no comprueba las reglas de AppLocker ni aplica las directivas de restricción de software. Para AppLocker, esta marca deshabilita las comprobaciones de las cuatro colecciones de reglas: Ejecutable, Windows Installer, Script y DLL.
Al crear un programa de instalación que debe ejecutar archivos DLL extraídos durante la instalación, use la marca SAFER_TOKEN_MAKE_INERT en la función SaferComputeTokenFromLevel . Se puede consultar un token para que exista esta marca mediante GetTokenInformation. Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: En los sistemas con KB2532445 instalados, el autor de la llamada debe ejecutarse como LocalSystem o TrustedInstaller o el sistema omite esta marca. Para obtener más información, vea "Puede eludir las reglas de AppLocker mediante una macro de Office en un equipo que ejecuta Windows 7 o Windows Server 2008 R2" en la Base de conocimiento ayuda y soporte técnico en http://support.microsoft.com/kb/2532445. Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: No se admite AppLocker. AppLocker se introdujo en Windows 7 y Windows Server 2008 R2. |
|
El nuevo token es un token LUA.
Windows Server 2003 y Windows XP: Este valor no se admite. |
|
El nuevo token contiene restricciones de SID que se consideran solo al evaluar el acceso de escritura.
Windows XP con SP2 y versiones posteriores: El valor de esta constante es 0x4. Para que una aplicación sea compatible con Windows XP con SP2 y sistemas operativos posteriores, la aplicación debe consultar el sistema operativo mediante una llamada a la función GetVersionEx para determinar qué valor se debe usar. Windows Server 2003 y Windows XP con SP1 y versiones anteriores: Este valor no se admite. |
[in] DisableSidCount
Especifica el número de entradas de la matriz SidsToDisable .
[in, optional] SidsToDisable
Puntero a 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 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 con el token existente, use la función GetTokenInformation con las marcas TokenUser y TokenGroups. La función omite los SID de la matriz que no se encuentran también en el token existente.
La función omite el miembro Attributes de la estructura SID_AND_ATTRIBUTES .
Este parámetro puede ser NULL si no se va a deshabilitar ningún SID.
[in] DeletePrivilegeCount
Especifica el número de entradas de la matriz PrivilegesToDelete .
[in, optional] PrivilegesToDelete
Puntero a una matriz de estructuras de LUID_AND_ATTRIBUTES que especifican los privilegios que se van a eliminar en el token restringido.
La función GetTokenInformation se puede usar con la marca TokenPrivileges para recuperar los privilegios mantenidos por el token existente. La función omite los privilegios de la matriz que el token existente no mantiene.
La función omite los miembros Attributes de las estructuras de LUID_AND_ATTRIBUTES .
Este parámetro puede ser NULL si no desea eliminar ningún privilegio.
Si el programa de llamada pasa demasiados privilegios en esta matriz, CreateRestrictedToken devuelve ERROR_INVALID_PARAMETER.
[in] RestrictedSidCount
Especifica el número de entradas de la matriz SidsToRestrict .
[in, optional] SidsToRestrict
Puntero a una matriz de estructuras de SID_AND_ATTRIBUTES que especifican una lista de restricciones de SID 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. No se realiza ninguna comprobación para quitar los SID duplicados que se colocaron en el parámetro SidsToRestrict . Los SID duplicados permiten que un token restringido tenga información redundante en la lista de SID de restricción.
El miembro Attributes de la estructura SID_AND_ATTRIBUTES debe ser cero. La restricción de los SID siempre está habilitada para las comprobaciones de acceso.
Este parámetro puede ser NULL si no desea especificar ningún SID de restricción.
[out] NewTokenHandle
Puntero a una variable que recibe un identificador para el nuevo token restringido. Este identificador tiene los mismos derechos de acceso que ExistingTokenHandle. El nuevo token es el mismo tipo, principal o suplantación, que el token existente. El identificador devuelto en NewTokenHandle se puede duplicar.
Valor devuelto
Si la función se realiza correctamente, el valor devuelto es distinto de cero.
Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.
Comentarios
La función CreateRestrictedToken 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.
- Quite privilegios del token.
- Especifique una lista de restricciones de SID, que el sistema usa cuando comprueba el acceso del token a un objeto protegible. El sistema realiza dos comprobaciones de acceso: una con los SID habilitados del token y otra mediante la lista de restricciones de SID. Solo se concede acceso si ambas comprobaciones de acceso permiten los derechos de acceso solicitados.
Puede usar el token restringido en la función ImpersonateLoggedOnUser .
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | securitybaseapi.h (incluya Windows.h) |
Library | Advapi32.lib |
Archivo DLL | Advapi32.dll |
Consulte también
Información general del control de acceso