Windows Vista :
FAQ UAC
User Access Control
Contrôle de compte utilisateur
 

  Date mise à jour :

Retour accueil  


Sommaire :
Tout sur ...
Laissez moi un message
English version
Dernières nouvelles de MToo :
Abonnez vous ici :

 

UAC, signifie User Access Control. Il s'agit d'une nouvelle couche de sécurité dont le rôle est de prévenir les utilisations non désirées  de privilèges élevés, en Français Contrôle de compte utilisateur.

L'origine de la FAQ ci dessous provient d'un post de Emmanuel Dreux (Microsoft) sur le forum microsoft.public.fr.windows.vista.securite et inspirée par la beta 2 de Windows Vista Je remercie Emmanuel pour son aide.

 

 

 

 

Liens utiles :

Le blog de l'équipe UAC de Vista :
http://blogs.msdn.com/uac/

“Certified for Windows Vista” Software Logo Requirements :
http://blogs.msdn.com/uac/archive/2006/06/28/650262.aspx

Developer Best Practices and Guidelines for Applications in a Least Privileged Environment (MSDN) :
http://msdn.microsoft.com/windowsvista/default.aspx?pull=/library/en-us/dnlong/html/AccProtVista.asp  

Article de Marc Russinovitch (traduit) sur UAC : http://www.microsoft.com/technet/technetmag/issues/2007/06/UAC/default.aspx?l&loc=fr

UAC pose de réels problèmes et dégrade fortement la première impression des utilisateurs (et pour cause : les premières choses que l'on effectue après installation sont des installations de drivers, et installation de programmes, ce qui ne cesse de demander des confirmations d'élévations de privilèges).

 

SOMMAIRE :

1 - Comment fonctionne UAC ?
2 - Pourquoi obtient-on des accès refusés tout en étant membre du groupe administrateur local ?
3 - Quelles sont les différences entre le compte intégré (builtin) administrateur et les membres du groupe Administrateurs ?
4 - Comment désactiver UAC pour les membres du groupe Administrateurs ?
5 - Comment désactiver UAC pour un utilisateur ?
6 - Comment désactiver UAC complètement ?
7 - Je suis connecté avec un compte membre du groupe local administateurs en mode Admin Approval et dans une invite de commande, je ne peux pas créer de fichiers sous la racine c:. Pourquoi?
8 - Le compte intégré Administrateur (ou Administrator) n'apparait pas dans la fenêtre de Logon. Est-il possible de le faire apparaitre ?
9 - Au cours d'une même session, je voudrais donner mon consentement une seule fois lorsque j'exécute plusieurs fois la même application, est ce possible ?
10 - Comment savoir si UAC va demander une confirmations en lançant un programme / une icône / un menu ?
11 - J'exécute runas /user:admin cmd.exe, admin étant un membre du groupe administrateurs et cela me génère un token restreint. Ne devrais-je pas recevoir un token complet?
12 - Est-il possible, temporairement, d'éviter le mécanisme UAC ?
13 - Comment UAC gère l'ouverture de session ?

14 - Comment exécuter une application en mode élevé rapidement ?

15 - Pourquoi ne peut-on pas accéder aux partages administratifs ou fonctions d'administration (accès distant au registre, Gestion de l'ordinateur, ..) sous Vista ?

16 - Comment réduire les nuisances de UAC sans désactiver UAC ?

17 - Qu'est ce que la virtualisation UAC ?

 

 

 

 

 

 

 

 


 

 

Retour au début de la page

 1 - Comment fonctionne UAC ?

 

Sous Vista, les membres du groupe local administrateurs ont 2 jetons de sécurité ( Token ), un token complet ainsi qu'un token restreint ( filtré).
Le token filtré est le token complet auquel on a retiré tous les privilèges.
Vous pouvez le visualiser en vous loguant en tant que membre du groupe
administrateurs et en lançant  whoami /all dans 2 invites de commande (cmd.exe) différentes :
_
une première en lançant simplement cmd.exe,

_ l'autre en exécutant cmd.exe par un clic droit "lancer en tant qu'administrateur".
Vérifiez que le token dans l'invite de commande non élevée n'a aucun
privilèges.
Les utilisateurs qui ne sont pas membres du groupe local administrateur ont
quand à eux un seul token.

Les utilisateurs membres du groupe local administrateurs tournent par défaut avec leur token restreint. Lorsqu'une tâche nécessite un privilège élevé, UAC demande la permission d'utiliser le token complet ( élévation de privilèges).
En fonction du paramétrage UAC, cela peut être fait de manière transparente
( no prompt ), par consentement ou saisie de mot de passe.

 

Le mode par défaut pour les membres du groupe administrateurs est celui du consentement ( Admin Approval Mode ).

Le compte intégré administrateur tourne lui quant à lui avec son token complet, il n'a donc pas besoin de donner son consentement pour utiliser un autre token.

L'élévation de privilège s'opère donc pour les comptes disposant de 2 tokens.
Un utilisateur standard n'ayant qu'un token restreint, UAC ne leur proposera
pas d'utiliser un autre token et l'utilisateur recevra un Access Denied ou équivalent en tentant d'exécuter une tache nécessitant des privilèges plus élevés.

Par contre, s'il exécute une application "en tant qu'administrateur", il ne passe pas par le mécanisme UAC. En effet, cela crée tout d'abord un nouveau Token d'administration complet qui est alors utilisé pour lancer l'application ( CreateProcessAsUser auquel on passe le token d'administrateur en paramètre).

C'est pourquoi l'exécution d'une invite de commande "en tant qu'administrateur" vous ouvre en fenêtre dans laquelle vous avez les privilèges complets.

 

Figure 12 La boîte de dialogue d’élévation AAM

Figure 11 Boîtes de dialogues d’élévation OTS 

 

 

Retour au début de la page

 

 2 - Pourquoi obtient-on des accès refusés tout en étant membre du groupe administrateur local ?

Exemple :
Je suis membre du groupe local administrateurs en mode Admin Approval (demande de prompt pour élévation) et pourtant lorsque je lance bcdedit ou
diskpart dans une invite de commande, je reçois un access denied. Windows ne devrait-il pas me demander la confirmation d'exécution ?

Les développeurs d'application pour Vista doivent fournir un fichier d'entête (manifest) qui décrit entre autre le niveau d'exécution requis par l'application ( c'est à dire le choix d'utilisation du token complet ou restreint ).
Il y a 3 niveaux
d'éxécution :  
_ AsInvoker :  signifie que l'application doit s'exécuter avec le token actuel de l'appelant et donc ne pas demander d'élévation de privilèges.
_ requireAdministrator : signifie que l'application doit s'exécuter avec un token complet d'administration et donc UAC peut vous demander l'accès au token complet si vous tournez avec le token restreint.
_ highestAvailable :  l'application fonctionne avec le privilège le plus haut auquel l'utilisateur accède.

Diskpart et bcdedit demandent le niveau d'exécution AsInvoker.

Si l'administrateur lance une invite de commande avec son token restreint, et lance bcdedit ou diskpart par exemple, le contexte d'exécution est celui du token restreint et comme AsInvoker ne demande pas d'élévation de privilèges, un refus d'accès (accès denied) est retourné.

En lançant cmd.exe par un clic droit et "Run as administrator", le token utilisé pour lancer bcdedit ou diskpart est alors le token complet.
 

Vous pouvez déterminer le niveau d'exécution requis par chaque tache d'administration fournie par Microsoft en examinant les fichiers programmes :
-
Téléchargez strings.exe de sysinternals.
- Dans %WINDIR%System32, lancez strings.Exe *.exe | findstr -i "AsInvoker"
- Dans %WINDIR%System32, lancez strings.Exe *.exe | findstr -i
"highestAvailable"
- Dans %WINDIR%System32, lancez strings.Exe *.exe | findstr -i
"requireAdministrator"

Par exemple :
- bcdedit requiert AsInvoker.
- mmc requiert highestAvailable.
- defrag requiert requireAdministrator.
 

Retour au début de la page

 

 3 - Quelles sont les différences entre le compte intégré (builtin) administrateur et les membres du groupe Administrateurs?

Par défaut, le compte intégré administrateur est désactivé et n'apparait pas dans la fenêtre de Logon. (il n'est pas utilisable et ne possède pas de mot de passe)
Par défaut, les membres du groupe local Administrateurs exécutent les
applications avec leur Token restreint et doivent approuver toute demande d'exécution avec des privilèges plus élevés : ( Mode Admin Approval ).
Le compte intégré administrateur exécute les applications directement avec
son token complet, UAC n'a donc bas besoin de rentrer en jeu.

Retour au début de la page

 4 - Comment désactiver UAC pour les membres du groupe Administrateurs ?

Vous pouvez désactiver cette fonctionnalité en éditant les stratégies de sécurité avec secpol.msc ou gpedit.msc.
Naviguez jusqu'à Configuration Ordinateur -> Paramètres Windows ->
Paramètres de sécurité -> Stratégies locales -> Options de sécurité.
désactivez la stratégie "Contrôle compte utilisateur : exécuter les comptes d'administrateurs en mode d'approbation d'administrateur" ("Run all administrators in Admin Approval Mode"
).

Rebootez ou lancez gpupdate /force puis fermez / ouvrez votre session pour prendre en compte ces changements.

Retour au début de la page

 5 - Comment désactiver UAC pour un utilisateur ?

_ Panneau de configuration :
Pour un utilisateur, vous pouvez désactiver l'utilisation d'UAC en utilisant le Panneau de Configuration :
Panneau de configuration -> Comptes utilisateurs -> activer ou désactiver le contrôle de compte UAC(pop up UAC) ->
décochez "Utiliser le contrôle des comptes d'utilisateurs pour vous aider à protéger votre ordinateur.

Retour au début de la page

 6  - Comment désactiver UAC complètement ?

_ Base de registre :
La clef de la base de registre est :
:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"EnableLUA"=dword:00000000

_ en utilisant MSCONFIG :
Démarrer / Executer MSCONFIG,
Cliquez sur l'onglet Tools
Sélectionnez Disable UAP, et cliquez sur Launch
Redémarrez l'ordinateur


 

Retour au début de la page
 

 8  - Le compte intégré Administrateur (ou Administrator) n'apparait pas dans la fenêtre de Logon. Est-il possible de le faire apparaitre ?

Ce compte apparait lorsqu'il n'y a pas de membres dans le groupe local Administrateurs.

Il est également possible de le faire apparaitre en ajoutant un clé de registre pour le compte administrateur dans HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList.

Ajoutez une nouvelle valeur nommée Administrateur et positionnez la valeur à 1.
Pour le cacher de la fenêtre d'accueil, positionnez cette valeur à 0.
 

Retour au début de la page
 

 9  - Au cours d'une même session, je voudrais donner mon consentement une seule fois lorsque j'exécute plusieurs fois la même application, est ce possible ?

Microsoft ne l'a pas prévu (Grrrrrrrrrrrrrrrrrrrrrrrrr !).
L'idée d'UAC est d'empêcher un code malveillant de s'exécuter sans votre consentement si vous désirez bénéficier de cette protection UAC.
Donner son consentement une fois pour toute pourrait conduire un code
malveillant à utiliser à votre insu et de manière silencieuse un contexte de sécurité plus élevé que le votre ( token complet ).

Retour au début de la page
 

 10  - Comment savoir si UAC va demander une confirmations en lançant un programme / une icône / un menu ?

Microsoft a conçu tout un jeu d'icônes et logos que les développeurs doivent inclure dans leur programmes, en voici des exemples :

Icône :

 User resource: IDI_SHIELD

Bouton :

 

Button_SetElevationRequired(hwndButton)

Lien :

 

Layout IDI_SHIELD next to syslink
Load IDI_SHIELD and set as command link icon

Menu contextuel :

 

Icon support

Retour au début de la page
 

 

 11 - J'exécute runas /user:admin cmd.exe, admin étant un membre du groupe administrateurs et cela me génère un token restreint. Ne devrais-je pas recevoir un token complet?

L'implémentation actuelle de UAC ne permet pas une élévation de privilèges en ligne de commande, ceci afin d'éviter une utilisation par script.

Cette décision est consistante avec le runas fourni dans XP/2003, qui ne permettait déjà plus de spécifier un mot de passe en ligne de commande.

 

Retour au début de la page

 12 - Est-il possible, temporairement, d'éviter le mécanisme UAC ?

Pour cela, il faut faire tourner le shell avec un token complet d'administrateur au lieu d'un token d'utilisateur final ou d'un token filtré.

 

- Lancez une invite de commande par un click droit runas administrator.

- Killez explorer.exe.

- Dans l'invite de commande administrateur, lancez un nouvel explorer ( explorer.exe).

 

Ce nouveau shell hérite alors du token complet de l'administrateur.

Les processus enfant alors lancés au travers de ce nouveau shell sont donc éxécutés directement avec un token complet, sans passer par le mécanisme d'élévation UAC.

 

Retour au début de la page

 13 - Comment UAC gère l'ouverture de session ?

 

Les applications qui nécessitent une élévation de privilège sont bloquées.

Dans ce cas l'utilisateur est prévenu par un message dans la barre des taches après la démarrage.

Dans ce cas en cliquant sur le message l'utilisateur peut éxécuter l'application qui a été bloquée ou choisir les applications à autoriser.

Voici les sources de programmes bloquées :

  • Menu démarrage utilisateur
  • clefs RUN du registre utilisateur
  • Menu démarrage machine
  • clefs RUN de la machine
     

Quelques exceptions :

les clefs RUNOnce (pour permettre la fin de l'installation d'un programme après redémarrage)

les applications imposées par les stratégies systèmes dans les clefs RUN

 

Retour au début de la page

 14 - Comment exécuter une application en mode élevé rapidement ?

Si vous avez besoin de lancer régulièrement des applications en mode élevé :
  1. Cliquez sur le bouton Démarrer
  2. Dans la zone Rechercher saisissez le nom du programme que vous souhaitez lancer en mode élevé (cmd.exe, notepad
  3. Appuyez sur Ctrl + Shift + Enter
  4. Vous devez confirmer la demande d'élévation


Retour au début de la page

 15 - Pourquoi ne peut-on pas accéder aux partages administratifs ou fonctions d'administration (accès distant au registre, Gestion de l'ordinateur, ..) sous Vista ?


UAC interdit l'utilisation de privilèges administrateur local par le réseau par défaut.

Il est possible de désactiver l'UAC pour l'accès à distance uniquement :

Démarrer, Exécuter puis tapez regedit
Ouvrez : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system.
Créez une nouvelle valeur Dword nommée LocalAccountTokenFilterPolicy
Modifiez ça valeur hexadécimale à 1
Redémarrer l'ordinateur

Vous pourrez désormais accéder aux partages administratifs et administrer à distance le PC via les consoles MMC avec un compte membre du groupe Administrateurs.

Pour réactiver l'UAC pour l'accès à distance, il suffira de supprimer la valeur DWORD, ou de lui mettre la valeur 0

Retour au début de la page

 16 - Comment réduire les nuisances de UAC sans désactiver UAC ? Supprimez seulement l'alerte d'élévation de privilèges


Il existe un moyen simple de désactiver l'UAC, mais vous n'êtes alors plus du tout protégé : dans ce cas même IE7 fonctionne en mode "sans protection", ce qui doit être évité.

Il existe une solution qui ne désactive pas l'UAC mais évite seulement l'apparition de l'alerte d'élévation de privilèges lorsque vous utilisez un compte administrateur. Cette fonction affaiblit votre niveau de sécurité, mais Vista demeure toutefois mieux protégé que lors d'une véritable désactivation de l'UAC: par exemple, le mode protégé d'IE7 continue d'être opérationnel.

  • Version Professional ou Integrale de Vista :

    - Ouvrez le menu Démarrer et saisissez "secpol.msc" dans le champ de recherche et appuyer sur Entree
    - Déployez Paramètres de sécurité \ Stratégies locales \ Options de Sécurité.
    - Repérez l'entrée "Contrôle de compte d'utilisateur: comportement de l'invite d'élévation pour les adminsitrateurs".
    - Double cliquez dessus et choisissez Elever les privilèges sans invite utilisateur.
    - Redémarrez le PC pour activer cette modification du système.
  • Autres version :

Il faut éditer le registre manuellement :

Procédez ainsi :
_ cliquer sur le Menu démarrer
_ lancer Regedit
_ Ouvrir la clé : [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
_ Modifier la valeur "ConsentPromptBehaviorAdmin" : remplacer "2" par "0".

 

Retour au début de la page

 17 - Qu'est ce que la virtualisation UAC ?


Windows Vista permet aux applications qui ne sont pas écrites pour Vista de s’exécuter dans les comptes d’utilisateur standard à l’aide de la virtualisation du système de fichiers et de l’espace de noms du registre. Lorsqu’une application modifie un emplacement de système global dans le système de fichiers ou dans le registre, et que cette opération échoue parce que l’accès lui est refusé, Windows redirige l’opération vers une zone propre à l’utilisateur. Lorsque l’application lit à partir d’un emplacement système global, Windows cherche d’abord des données dans la zone propre à l’utilisateur et, si aucune donnée n’est présente, permet la tentative de lecture à partir de l’emplacement global.

Vous pouvez voir l’état de virtualisation d’un processus en ajoutant la colonne Virtualisation à la page Processus du Gestionnaire des tâches.

Microsoft recommande que les programmes d’installation d’application globaux qui comptent s’exécuter avec les droits administratifs créent un répertoire sous le répertoire %ProgramFiles% pour stocker les fichiers de l’application exécutables et les données auxiliaires et créer une clé sous HKEY_LOCAL_MACHINE\Software pour leurs paramètres d’application. Lorsqu’une application s’exécute, elle peut le faire dans différents comptes utilisateur et devrait donc enregistrer les données spécifiques à l’utilisateur dans un répertoire %AppData% propre à chaque utilisateur et enregistrer des paramètres propres à chaque utilisateur dans le profil d’annuaire de l’utilisateur sous HKEY_CURRENT_USER\ Software. Les comptes utilisateur standard n’ont pas de droits d’écriture dans le répertoire %ProgramFiles% ou dans HKEY_LOCAL_MACHINE\Software, mais puisque la plupart des systèmes de Windows sont à utilisateur unique et que la majorité des utilisateurs étaient administrateurs jusqu’à Windows Vista, les applications qui enregistrent de façon inexacte des données utilisateur et des paramètres à ces emplacements fonctionnement quand même.

Windows Vista permet à ces applications d’héritage de s’exécuter dans les comptes d’utilisateur standard à l’aide de la virtualisation du système de fichiers et de l’espace de noms du registre. Lorsqu’une application modifie un emplacement de système global dans le système de fichiers ou dans le registre, et que cette opération échoue parce que l’accès lui est refusé, Windows redirige l’opération vers une zone propre à l’utilisateur. Lorsque l’application lit à partir d’un emplacement système global, Windows cherche d’abord des données dans la zone propre à l’utilisateur et, si aucune donnée n’est présente, permet la tentative de lecture à partir de l’emplacement global.

Les emplacements de système de fichiers qui sont virtualisés pour les processus d’héritage sont %ProgramFiles%, %ProgramData% et %SystemRoot%, à l’exclusion de certains sous-répertoires spécifiques. Cependant, tous les fichiers possédant une extension exécutable, y compris .exe, .bat, .scr, .vbs et autres, sont exclus de la virtualisation. Cela signifie que les programmes qui se mettent à jour à partir d’un compte utilisateur standard échouent au lieu de créer des versions privées de leurs exécutables qui ne sont pas visibles par un administrateur exécutant un programme de mise à niveau global.

La virtualisation de registre est implémentée de façon légèrement différente de la virtualisation de système de fichiers. Les clés de registre virtualisées incluent la plupart de la branche HKEY_LOCAL_MACHINE\Software, mais il existe de nombreuses exceptions, comme ce qui suit :
HKLM\Software\Microsoft\Windows
HKLM\Software\Microsoft\Windows NT
HKLM\Software\Classes

Seules les clés qui sont habituellement modifiées par les applications, mais sans provoquer de problèmes de compatibilité ou d’interopérabilité, sont virtualisées. Windows redirige les modifications de clés virtualisées par une application vers un registre de racine virtuelle de l’utilisateur sur HKEY_CURRENT_USER\Software\Classes\VirtualStore. La clé est située dans la ruche des Classes de l’utilisateur, %LocalAppData%\Microsoft\Windows\UsrClass.dat, qui, comme toutes les autres données de fichier virtualisées, n’erre pas avec un profil utilisateur errant.

Au lieu de maintenir une liste fixe d’emplacements virtualisés comme Windows le fait pour le système de fichiers, l’état de virtualisation d’une clé est enregistré comme un indicateur, REG_KEY_DONT_VIRTUALIZE, dans la clé elle-même. L’utilitaire Reg.exe peut afficher l’indicateur, ainsi que deux autres indicateurs liés à la virtualisation, REG_KEY_DONT_SILENT_FAIL et REG_KEY_RECURSE_FLAG. cf
Windows Vista - Le Registre

(c) Laurent Gébeau

Laissez vos commentaires ici.

 

 

Toutwindows.com - Sommaire

Windows Vista - Sommaire

Windows Vista : glossaire