Identificadores de seguridad
Un identificador de seguridad (SID) es un valor único de longitud variable que se usa para identificar a un administrador de confianza. Cada cuenta tiene un SID único emitido por una autoridad, como un controlador de dominio de Windows, y almacenado en una base de datos de seguridad. Cada vez que un usuario inicia sesión, el sistema recupera el SID para ese usuario de la base de datos y lo coloca en el token de acceso para ese usuario. El sistema usa el SID en el token de acceso para identificar al usuario en todas las interacciones posteriores con la seguridad de Windows. Cuando se ha usado un SID como identificador único para un usuario o grupo, nunca se puede volver a usar para identificar a otro usuario o grupo.
La seguridad de Windows usa SID en los siguientes elementos de seguridad:
- En descriptores de seguridad para identificar el propietario de un objeto y un grupo principal
- En las entradas de control de acceso, para identificar al administrador de confianza para el que se permite, se deniega o audita el acceso.
- En los tokens de acceso, para identificar el usuario y los grupos a los que pertenece el usuario
Además de los SID específicos del dominio creados de forma única asignados a usuarios y grupos específicos, hay SID conocidos que identifican grupos genéricos y usuarios genéricos. Por ejemplo, los SID conocidos, Todos y mundo, identifican un grupo que incluye a todos los usuarios.
La mayoría de las aplicaciones nunca necesitan trabajar con SID. Dado que los nombres de los SID conocidos pueden variar, debe usar las funciones para compilar el SID a partir de constantes predefinidas en lugar de usar el nombre del SID conocido. Por ejemplo, la versión en inglés de EE. UU. del sistema operativo Windows tiene un SID conocido denominado "BUILTIN\Administrators" que podría tener un nombre diferente en las versiones internacionales del sistema. Para obtener un ejemplo que compila un SID conocido, vea Buscar un SID en un token de acceso en C++.
Si necesita trabajar con SID, no los manipule directamente. En su lugar, use las siguientes funciones.
Función | Descripción |
---|---|
AllocateAndInitializeSid | Asigna e inicializa un SID con el número especificado de subauthoridades. |
ConvertSidToStringSid | Convierte un SID en un formato de cadena adecuado para mostrar, almacenar o transportar. |
ConvertStringSidToSid | Convierte un SID de formato de cadena en un SID funcional válido. |
CopySid | Copia un SID de origen en un búfer. |
EqualPrefixSid | Comprueba dos valores de prefijo de SID para comprobar si son iguales. Un prefijo de SID es el SID completo, excepto el último valor de subautenticación. |
EqualSid | Comprueba dos SID para comprobar si son iguales. Deben coincidir exactamente para considerarse iguales. |
FreeSid | Libera un SID asignado previamente mediante la función AllocateAndInitializeSid . |
GetLengthSid | Recupera la longitud de un SID. |
GetSidIdentifierAuthority | Recupera un puntero a la entidad de identificador de un SID. |
GetSidLengthRequired | Recupera el tamaño del búfer necesario para almacenar un SID con un número especificado de subauthoridades. |
GetSidSubAuthority | Recupera un puntero a una subauthoridad especificada en un SID. |
GetSidSubAuthorityCount | Recupera el número de subauthoridades en un SID. |
InitializeSid | Inicializa una estructura de SID . |
IsValidSid | Comprueba la validez de un SID comprobando que el número de revisión está dentro de un intervalo conocido y que el número de subauthoridades es menor que el máximo. |
LookupAccountName | Recupera el SID que corresponde a un nombre de cuenta especificado. |
LookupAccountSid | Recupera el nombre de la cuenta que corresponde a un SID especificado. |