Jetons d’accès
Un jeton d’accès est un objet qui décrit le contexte de sécurité d’un processus ou d’un thread. Les informations contenues dans un jeton incluent l’identité et les privilèges du compte d’utilisateur associé au processus ou au thread. Lorsqu’un utilisateur se connecte, le système vérifie le mot de passe de l’utilisateur en le comparant aux informations stockées dans une base de données de sécurité. Si le mot de passe est authentifié, le système produit un jeton d’accès. Chaque processus exécuté pour le compte de cet utilisateur dispose d’une copie de ce jeton d’accès.
Le système utilise un jeton d’accès pour identifier l’utilisateur lorsqu’un thread interagit avec un objet sécurisable ou tente d’effectuer une tâche système qui nécessite des privilèges. Les jetons d’accès contiennent les informations suivantes :
- Identificateur de sécurité (SID) pour le compte de l’utilisateur
- SID pour les groupes dont l’utilisateur est membre
- SID d’ouverture de session qui identifie la session d’ouverture de session active
- Liste des privilèges détenus par l’utilisateur ou les groupes de l’utilisateur
- Un SID de propriétaire
- SID pour le groupe principal
- DaCL par défaut que le système utilise lorsque l’utilisateur crée un objet sécurisable sans spécifier de descripteur de sécurité
- Source du jeton d’accès
- Indique si le jeton est un jeton principal ou un jeton d’emprunt d’identité
- Liste facultative des SID de restriction
- Niveaux d’emprunt d’identité actuels
- Autres statistiques
Chaque processus a un jeton principal qui décrit le contexte de sécurité du compte d’utilisateur associé au processus. Par défaut, le système utilise le jeton principal lorsqu’un thread du processus interagit avec un objet sécurisable. En outre, un thread peut emprunter l’identité d’un compte client. L’emprunt d’identité permet au thread d’interagir avec des objets sécurisables à l’aide du contexte de sécurité du client. Un thread qui emprunte l’identité d’un client a à la fois un jeton principal et un jeton d’emprunt d’identité.
Utilisez la fonction OpenProcessToken pour récupérer un handle dans le jeton principal d’un processus. Utilisez la fonction OpenThreadToken pour récupérer un handle au jeton d’emprunt d’identité d’un thread. Pour plus d’informations, consultez Emprunt d’identité.
Vous pouvez utiliser les fonctions suivantes pour manipuler les jetons d’accès.
Fonction | Description |
---|---|
AdjustTokenGroups | Modifie les informations de groupe dans un jeton d’accès. |
AdjustTokenPrivileges | Active ou désactive les privilèges dans un jeton d’accès. Il n’accorde pas de nouveaux privilèges ou ne révoque pas les privilèges existants. |
CheckTokenMembership | Détermine si un SID spécifié est activé dans un jeton d’accès spécifié. |
CreateRestrictedToken | Crée un jeton qui est une version restreinte d’un jeton existant. Le jeton restreint peut avoir des SID désactivés, des privilèges supprimés et une liste de SID restreints. |
DuplicateToken | Crée un jeton d’emprunt d’identité qui duplique un jeton existant. |
DuplicateTokenEx | Crée un jeton principal ou un jeton d’emprunt d’identité qui duplique un jeton existant. |
GetTokenInformation | Récupère des informations sur un jeton. |
IsTokenRestricted | Détermine si un jeton a une liste de SID de restriction. |
OpenProcessToken | Récupère un handle au jeton d’accès principal pour un processus. |
OpenThreadToken | Récupère un handle pour le jeton d’accès d’emprunt d’identité pour un thread. |
SetThreadToken | Affecte ou supprime un jeton d’emprunt d’identité pour un thread. |
SetTokenInformation | Modifie le propriétaire d’un jeton, le groupe principal ou la liste DACL par défaut. |
Les fonctions de jeton d’accès utilisent les structures suivantes pour décrire les parties d’un jeton d’accès.
Structure | Description |
---|---|
TOKEN_CONTROL | Informations qui identifient un jeton d’accès. |
TOKEN_DEFAULT_DACL | DaCL par défaut que le système utilise dans les descripteurs de sécurité des nouveaux objets créés par un thread. |
TOKEN_GROUPS | Spécifie les SID et les attributs des SID de groupe dans un jeton d’accès. |
TOKEN_OWNER | SID de propriétaire par défaut pour les descripteurs de sécurité des nouveaux objets. |
TOKEN_PRIMARY_GROUP | SID de groupe principal par défaut pour les descripteurs de sécurité des nouveaux objets. |
TOKEN_PRIVILEGES | Privilèges associés à un jeton d’accès. Détermine également si les privilèges sont activés. |
TOKEN_SOURCE | Source d’un jeton d’accès. |
TOKEN_STATISTICS | Statistiques associées à un jeton d’accès. |
TOKEN_USER | SID de l’utilisateur associé à un jeton d’accès. |
Les fonctions de jeton d’accès utilisent les types d’énumération suivants.
Type d'énumération | Spécifie |
---|---|
TOKEN_INFORMATION_CLASS | Identifie le type d’informations définies ou récupérées à partir d’un jeton d’accès. |
TOKEN_TYPE | Identifie un jeton d’accès en tant que jeton principal ou d’emprunt d’identité. |