Jeton d'accès - Access token

Dans les systèmes informatiques, un jeton d'accès contient les informations d'identification de sécurité pour une session de connexion et identifie l' utilisateur , les groupes d'utilisateurs, les privilèges de l'utilisateur et, dans certains cas, une application particulière. Dans certains cas, il peut être demandé de saisir un jeton d'accès (par exemple 40 caractères aléatoires) plutôt que le mot de passe habituel (il doit donc être gardé secret comme un mot de passe).

Aperçu

Un jeton d'accès est un objet encapsulant l'identité de sécurité d'un processus ou d'un thread . Un jeton est utilisé pour prendre des décisions de sécurité et pour stocker des informations infalsifiables sur une entité du système. Alors qu'un jeton est généralement utilisé pour représenter uniquement des informations de sécurité, il est capable de contenir des données de forme libre supplémentaires qui peuvent être jointes pendant la création du jeton. Les tokens peuvent être dupliqués sans privilège spécial, par exemple pour créer un nouveau token avec des niveaux de droits d'accès inférieurs pour restreindre l'accès d'une application lancée. Un jeton d'accès est utilisé par Windows lorsqu'un processus ou un thread essaie d'interagir avec des objets qui ont des descripteurs de sécurité ( objets sécurisables ). Sous Windows, un jeton d'accès est représenté par l' objet système de type Token.

Un jeton d'accès est généré par le service de connexion lorsqu'un utilisateur se connecte au système et les informations d'identification fournies par l'utilisateur sont authentifiées par rapport à la base de données d'authentification. La base de données d'authentification contient les informations d'identification requises pour construire le jeton initial pour la session de connexion, y compris son identifiant d'utilisateur, son identifiant de groupe principal, tous les autres groupes dont il fait partie et d'autres informations. Le jeton est attaché au processus initial créé dans la session utilisateur et hérité par les processus ultérieurs créés par le processus initial. Chaque fois qu'un tel processus ouvre un handle vers une ressource dont le contrôle d'accès est activé, Windows réconcilie les données du descripteur de sécurité de l'objet cible avec le contenu du jeton d'accès effectif actuel. Le résultat de cette évaluation de contrôle d'accès est une indication de si un accès est autorisé et, dans l'affirmative, quelles opérations (lecture, écriture / modification, etc.) l'application appelante est autorisée à effectuer.

Types de jeton

Il existe deux types de jetons disponibles :

Jeton principal
Les jetons principaux ne peuvent être associés qu'à des processus , et ils représentent le sujet de sécurité d'un processus. La création de jetons principaux et leur association aux processus sont toutes deux des opérations privilégiées, nécessitant deux privilèges différents au nom de la séparation des privilèges - le scénario typique voit le service d'authentification créer le jeton et un service de connexion l'associant au shell du système d'exploitation de l'utilisateur . Les processus héritent initialement d'une copie du jeton principal du processus parent.
Jeton d'usurpation d'identité
L'emprunt d'identité est un concept de sécurité implémenté dans Windows NT qui permet à une application serveur d'être temporairement le client en termes d'accès aux objets sécurisés. L'emprunt d'identité a quatre niveaux possibles : anonyme , donnant au serveur l'accès d'un utilisateur anonyme/non identifié , identification , laissant le serveur inspecter l'identité du client mais ne pas utiliser cette identité pour accéder aux objets, emprunt d'identité , laissant le serveur agir au nom du client, et délégation , identique à l'emprunt d'identité mais étendu aux systèmes distants auxquels le serveur se connecte (via la préservation des informations d'identification). Le client peut choisir le niveau d'emprunt d'identité maximal (le cas échéant) disponible pour le serveur en tant que paramètre de connexion. La délégation et l'emprunt d'identité sont des opérations privilégiées (l'emprunt d'identité ne l'était pas au départ, mais la négligence historique dans la mise en œuvre des API clientes ne limitant pas le niveau par défaut à "l'identification", laissant un serveur non privilégié se faire passer pour un client privilégié non disposé, l'a demandé). Les jetons d'emprunt d'identité ne peuvent être associés qu'à des threads et représentent le sujet de sécurité d' un processus client . Les jetons d'emprunt d'identité sont généralement créés et associés implicitement au thread actuel, par des mécanismes IPC tels que DCE RPC , DDE et les canaux nommés .

Contenu d'un jeton

Un jeton est composé de différents champs, dont :

  • un identifiant.
  • l'identifiant de la session de connexion associée. La session est maintenue par le service d'authentification et est remplie par les packages d'authentification avec une collection de toutes les informations (informations d' identification ) fournies par l'utilisateur lors de la connexion. Les informations d'identification sont utilisées pour accéder aux systèmes distants sans que l'utilisateur ait besoin de se ré-authentifier ( authentification unique ), à condition que tous les systèmes impliqués partagent une autorité d'authentification (par exemple un serveur de tickets Kerberos )
  • l'identifiant de l'utilisateur. Ce champ est le plus important et il est strictement en lecture seule.
  • les identifiants des groupes dont fait partie l'utilisateur (ou plus précisément le sujet). Les identifiants de groupe ne peuvent pas être supprimés, mais ils peuvent être désactivés ou rendus "refus uniquement". Au plus un des groupes est désigné comme session id , un groupe volatile représentant la session de connexion, permettant d'accéder aux objets volatiles associés à la session, tels que l'affichage.
  • les identifiants de groupe restrictif (facultatif). Cet ensemble supplémentaire de groupes n'accorde pas d'accès supplémentaire, mais le restreint davantage : l'accès à un objet n'est autorisé que s'il est également autorisé à l'un de ces groupes. Les groupes de restriction ne peuvent pas être supprimés ni désactivés. Les groupes de restriction sont un ajout récent, et ils sont utilisés dans la mise en œuvre des bacs à sable .
  • les privilèges, c'est-à-dire les capacités spéciales dont dispose l'utilisateur. La plupart des privilèges sont désactivés par défaut, pour éviter les dommages causés par des programmes non soucieux de la sécurité. À partir de Windows XP Service Pack 2 et Windows Server 2003, les privilèges peuvent être définitivement supprimés d'un jeton par un appel à AdjustTokenPrivileges()avec l' SE_PRIVILEGE_REMOVEDattribut.
  • le propriétaire par défaut, le groupe principal et la liste de contrôle d'accès du jeton

créé par le sujet associé au jeton.

Les références