Credenciales de seguridad para acceder a recursos o servicios desde un servidor
En los sistemas informáticos, un token de acceso contiene las credenciales de seguridad para una sesión de inicio de sesión e identifica al usuario , los grupos del usuario, los privilegios del usuario y, en algunos casos, una aplicación particular. [1] En algunos casos, se le puede solicitar que ingrese un token de acceso (por ejemplo, 40 caracteres aleatorios) en lugar de la contraseña habitual (por lo tanto, debe mantenerse en secreto como una contraseña).
Descripción general
Un token de acceso es un objeto que encapsula la identidad de seguridad de un proceso o subproceso . [2] Un token se utiliza para tomar decisiones de seguridad y para almacenar información a prueba de manipulaciones sobre alguna entidad del sistema. Si bien un token se utiliza generalmente para representar solo información de seguridad, es capaz de contener datos adicionales de formato libre que se pueden adjuntar mientras se crea el token. Los tokens se pueden duplicar sin privilegios especiales, por ejemplo, para crear un nuevo token con niveles más bajos de derechos de acceso para restringir el acceso de una aplicación iniciada. Windows utiliza un token de acceso cuando un proceso o subproceso intenta interactuar con objetos que tienen descriptores de seguridad ( objetos protegibles ). [2] En Windows, un token de acceso está representado por el objeto del sistema de tipo Token
.
El servicio de inicio de sesión genera un token de acceso cuando un usuario inicia sesión en el sistema y las credenciales proporcionadas por el usuario se autentican con la base de datos de autenticación. La base de datos de autenticación contiene información de credenciales necesaria para construir el token inicial para la sesión de inicio de sesión, incluido su ID de usuario, ID de grupo principal, todos los demás grupos de los que forma parte y otra información. El token se adjunta al proceso inicial creado en la sesión de usuario y lo heredan los procesos posteriores creados por el proceso inicial. [2] Siempre que un proceso de este tipo abre un identificador para cualquier recurso que tenga habilitado el control de acceso , Windows concilia los datos en el descriptor de seguridad del objeto de destino con el contenido del token de acceso efectivo actual. [3] El resultado de esta evaluación de verificación de acceso es una indicación de si se permite algún acceso y, de ser así, qué operaciones (lectura, escritura/modificación, etc.) la aplicación que realiza la llamada puede realizar.
Tipos de token
Hay dos tipos de tokens disponibles:
- Token primario
- Los tokens primarios solo se pueden asociar a procesos y representan el tema de seguridad de un proceso. La creación de tokens primarios y su asociación a procesos son operaciones privilegiadas que requieren dos privilegios diferentes en nombre de la separación de privilegios : el escenario típico es el servicio de autenticación que crea el token y un servicio de inicio de sesión que lo asocia al shell del sistema operativo del usuario . Los procesos heredan inicialmente una copia del token primario del proceso padre.
- Token de suplantación de identidad
- La suplantación es un concepto de seguridad implementado en Windows NT que permite que una aplicación de servidor "sea" temporalmente el cliente en términos de acceso a objetos seguros. La suplantación tiene cuatro niveles posibles: anónimo , que otorga al servidor el acceso de un usuario anónimo/no identificado, identificación , que permite al servidor inspeccionar la identidad del cliente pero no usar esa identidad para acceder a los objetos, suplantación , que permite al servidor actuar en nombre del cliente, y delegación , igual que la suplantación pero extendida a sistemas remotos a los que se conecta el servidor (a través de la conservación de credenciales). El cliente puede elegir el nivel máximo de suplantación (si lo hay) disponible para el servidor como un parámetro de conexión. La delegación y la suplantación son operaciones privilegiadas (la suplantación inicialmente no lo era, pero el descuido histórico en la implementación de las API de cliente al no restringir el nivel predeterminado a "identificación", lo que permitió que un servidor sin privilegios suplantara a un cliente privilegiado no dispuesto, lo requirió). Los tokens de suplantación solo se pueden asociar a subprocesos y representan el sujeto de seguridad de un proceso cliente . Los tokens de suplantación generalmente se crean y se asocian al hilo actual de forma implícita, mediante mecanismos de IPC como DCE RPC , DDE y canalizaciones con nombre .
Contenido de un token
Un token se compone de varios campos, entre ellos: [4]
- un identificador.
- El identificador de la sesión de inicio de sesión asociada. La sesión es mantenida por el servicio de autenticación y se completa con los paquetes de autenticación con una colección de toda la información ( credenciales ) que el usuario proporcionó al iniciar sesión. Las credenciales se utilizan para acceder a sistemas remotos sin necesidad de que el usuario vuelva a autenticarse ( inicio de sesión único ), siempre que todos los sistemas involucrados compartan una autoridad de autenticación (por ejemplo, un servidor de tickets Kerberos ).
- El identificador del usuario. Este campo es el más importante y es estrictamente de solo lectura.
- los identificadores de los grupos de los que forma parte el usuario (o, más precisamente, el sujeto). Los identificadores de grupo no se pueden eliminar, pero se pueden desactivar o hacer que sean "solo denegables". Como máximo, uno de los grupos se designa como el id de sesión , un grupo volátil que representa la sesión de inicio de sesión y permite el acceso a objetos volátiles asociados a la sesión, como la pantalla.
- Los identificadores de grupos restrictivos (opcionales). Este conjunto adicional de grupos no otorga acceso adicional, sino que lo restringe aún más: el acceso a un objeto solo se permite si también se le permite a uno de estos grupos. Los grupos restrictivos no se pueden eliminar ni deshabilitar. Los grupos restrictivos son una incorporación reciente y se utilizan en la implementación de entornos aislados .
- Los privilegios, es decir, las capacidades especiales que tiene el usuario. La mayoría de los privilegios están deshabilitados de forma predeterminada para evitar daños causados por programas que no tienen en cuenta la seguridad. A partir de Windows XP Service Pack 2 y Windows Server 2003, los privilegios se pueden eliminar de forma permanente de un token mediante una llamada a
AdjustTokenPrivileges()
con el SE_PRIVILEGE_REMOVED
atributo. - el propietario predeterminado, el grupo principal y la ACL para el token creado por el sujeto asociado al token.
Véase también
Referencias
- ^ "Access Token: definición, arquitectura, uso y más". Okta . Consultado el 8 de junio de 2022 .
- ^ abc "Access Tokens". MSDN . Consultado el 8 de octubre de 2007 .
- ^ "AccessCheck". MSDN . Consultado el 13 de febrero de 2014 .
- ^ "Cómo funcionan los tokens de acceso". MSDN . 8 de octubre de 2009 . Consultado el 13 de febrero de 2014 .