Partager via


Niveaux d’emprunt d’identité (autorisation)

L’énumération SECURITY_IMPERSONATION_LEVEL définit quatre niveaux d’emprunt d’identité qui déterminent les opérations qu’un serveur peut effectuer dans le contexte du client.

Niveau d’emprunt d’identité Description
SecurityAnonymous Le serveur ne peut pas emprunter l’identité ou identifier le client.
SecurityIdentification Le serveur peut obtenir l’identité et les privilèges du client, mais ne peut pas emprunter l’identité du client.
SecurityImpersonation Le serveur peut emprunter l’identité du contexte de sécurité du client sur le système local.
SecurityDelegation Le serveur peut emprunter l’identité du contexte de sécurité du client sur les systèmes distants.

 

Le client d’un canal nommé, rpc ou connexion DDE peut contrôler le niveau d’emprunt d’identité. Par exemple, un client de canal nommé peut appeler la fonction CreateFile pour ouvrir un handle sur un canal nommé et spécifier le niveau d’emprunt d’identité du serveur.

Lorsque le canal nommé, rpc ou connexion DDE est distant, les indicateurs passés à CreateFile pour définir le niveau d’emprunt d’identité sont ignorés. Dans ce cas, le niveau d’emprunt d’identité du client est déterminé par les niveaux d’emprunt d’identité activés par le serveur, qui est défini par un indicateur sur le compte du serveur dans le service d’annuaire. Par exemple, si le serveur est activé pour la délégation, le niveau d’emprunt d’identité du client est également défini sur la délégation même si les indicateurs passés à CreateFile spécifier le niveau d’emprunt d’identité.

Les clients DDE utilisent la fonction DdeSetQualityOfService avec la structure SECURITY_QUALITY_OF_SERVICE pour spécifier le niveau d’emprunt d’identité. Le niveau SecurityImpersonation est la valeur par défaut pour les serveurs de canal nommé, RPC et DDE. Les fonctions ImpersonateSelf, DuplicateTokenet DuplicateTokenEx permettent à l’appelant de spécifier un niveau d’emprunt d’identité. Utilisez la fonction GetTokenInformation pour récupérer le niveau d’emprunt d’identité d’un jeton d’accès .

Au niveau securityImpersonation, la plupart des actions du thread se produisent dans le contexte de sécurité du jeton d’emprunt d’identité du thread plutôt que dans le jeton principal du processus propriétaire du thread. Par exemple, si un thread d’emprunt d’identité ouvre un objet sécurisable , le système utilise le jeton d’emprunt d’identité pour vérifier l’accès du thread. De même, si un thread d’emprunt d’identité crée un objet, par exemple en appelant la fonction CreateFile, le propriétaire du nouvel objet est le propriétaire par défaut du jeton d’accès du client.

Toutefois, le système utilise le jeton principal du processus plutôt que le jeton d’emprunt d’identité du thread appelant dans les situations suivantes :

  • Si un thread d’emprunt d’identité appelle la fonction CreateProcess, le nouveau processus hérite toujours du jeton principal du processus.
  • Pour les fonctions qui nécessitent le privilège SE_TCB_NAME, telles que la fonctionLogonUser, le système recherche toujours le privilège dans le jeton principal du processus.
  • Pour les fonctions qui nécessitent le privilège SE_AUDIT_NAME, telles que la fonction ObjectOpenAuditAlarm, le système recherche toujours le privilège dans le jeton principal du processus.
  • Dans un appel à la fonction OpenThreadToken, un thread peut spécifier si la fonction utilise le jeton d’emprunt d’identité ou le jeton principal pour déterminer s’il faut accorder l’accès demandé.