Fonctionnement du cache des GPO (Group Policy Caching)

I. Présentation

Dans ce nouvel article, je vais vous parler du fonctionnement du cache des stratégies de groupe (GPO) que l'on appelle également "Group Policy Caching". Cette fonctionnalité introduite avec Windows Server 2012 R2 et Windows 8.1 va permettre d'optimiser le temps de démarrage de votre machine sous Windows.

II. Qu'est-ce que le Group Policy Caching ?

Le Group Policy Caching correspond à la mise en cache des stratégies de groupe sur un poste client. Lorsqu'un utilisateur du domaine Active Directory ouvre une session sur un ordinateur intégré au domaine, Windows va générer un cache local appelé "datastore" des stratégies de groupe qui s'applique sur cet utilisateur, à l'emplacement suivant :

C:\Utilisateurs\<Nom-Utilisateur>\AppData\Local\GroupPolicy\DataStore\0\SysVol\<Nom-Domaine>\Policies

Au sein du dossier "Policies", nous retrouvons un dossier par GPO avec l'identifiant unique de la GPO pour le nom du dossier. Cet identifiant unique est le GUID (Globally Unique IDentifier).

Voici un exemple :

Group Policy Caching

Il semblerait qu'à la suite d'une mise à jour de sécurité de Windows, ce cache utilisateur soit déplacé vers un nouveau répertoire :

C:\ProgramData\Microsoft\GroupPolicy\Users\<SID de l'utilisateur>

Dans le même principe, un cache est géré pour les stratégies de groupe qui s'applique au niveau de l'ordinateur. Ce cache est stocké à l'emplacement suivant :

C:\Windows\System32\GroupPolicy\DataStore\0\sysvol\<Nom-Domaine>\Policies

En complément, nous pouvons retrouver des informations dans le Registre Windows au sujet des GPO dans le cache :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\DataStore

L'intérêt c'est d'optimiser le traitement des stratégies de groupe et le temps d'ouverture de session en s'appuyant sur les données locales, mises en cache, plutôt que sur celles stockées directement sur le contrôleur de domaine au sein du partage SYSVOL.

Depuis Windows Server 2012 R2 et Windows 8.1, cette fonctionnalité est activée par défaut, mais il est possible de configurer le Group Policy Caching, c'est ce que nous allons voir maintenant.

III. Fonctionnement de la mise en cache des GPO

La mise en cache des GPO (Group Policy Caching) se configure elle-même à partir de paramètres de GPO. Il faut savoir que le cache est actualisé lors du traitement en arrière-plan des stratégies de groupe en mode asynchrone ou lorsqu'une actualisation est effectuée à l'aide de l'outil "gpupdate.exe" notamment avec la célèbre commande "gpupdate /force".

Le paramètre de GPO "Configurer la mise en cache des stratégies de groupe" est disponible à l'emplacement ci-dessous, mais ce n'est pas le seul au sujet de la mise en cache.

Configuration ordinateur > Modèles d'administration > Système > Stratégie de groupe

Si vous désactivez ce paramètre, cela revient à désactiver la mise en cache des GPO. En mode synchrone (voir ci-dessous), la GPO sera lue à partir du cache et actualisée à partir du contrôleur de domaine en fonction de la vitesse de la liaison : d'où l'intérêt d'avoir la possibilité d'ajuster ce paramétrage.

Par défaut, les serveurs n'utilisent pas la mise en cache des GPO. Microsoft offre la possibilité d'activer cette fonctionnalité sur les serveurs sous Windows Server. Il faut configurer le paramètre "Activer la mise en cache des stratégies de groupe pour les serveurs".

Désormais, prenons le temps de voir comment s'effectue le traitement des GPO.

A. Traitement au premier plan et en arrière-plan

Il faut savoir que l'actualisation des stratégies de groupe est effectuée de deux façons différentes : au premier plan (foreground) ou en arrière-plan (background - tâche de fond), cela dépend du moment où s'effectue la mise à jour.

Le traitement au premier plan s'effectue dans plusieurs cas :

- L'ordinateur démarre
- L'ordinateur s'éteint
- L'utilisateur se connecte
- L'utilisateur se déconnecte

Quant à l'actualisation des GPO en arrière-plan, elle s'effectue à intervalle régulier pendant que la machine est allumée et en cours d'utilisation. C'est également un traitement en arrière-plan qui s'effectue lors de l'utilisation de l'outil "gpupdate.exe".

Tous les combien de temps s'actualise les stratégies de groupe ?

Par défaut, les stratégies de groupe s'actualisent en tâche de fond sur les postes de travail et les serveurs toutes les 90 minutes, avec un décalage aléatoire compris entre 0 et 30 minutes pour ne pas surcharger le contrôleur de domaine. Pour les contrôleurs de domaine, il y a une exception : l'intervalle d'actualisation est de 5 minutes.

Le paramètre "Définir l'intervalle d'actualisation de la stratégie de groupe pour les ordinateurs" (même emplacement que les précédents) permet de modifier cette valeur de 90 minutes ainsi que l'intervalle aléatoire. Dans le même esprit, on retrouve le paramètre "Définir l'intervalle d'actualisation de la stratégie de groupe pour les contrôleurs de domaine".

B. Traitement synchrone ou asynchrone

Si une stratégie de groupe est traitée de manière synchrone, cela signifie qu'elle va être traitée dans un ordre spécifique, à la suite d'autres processus. Dans le mode asynchrone, la stratégie de groupe s'applique en parallèle des autres processus, de manière indépendante. C'est le mode par défaut pour la majorité des paramètres de GPO : il se peut qu'au moment où vous ouvrez votre session, des GPO en traitement asynchrone soient toujours en cours d'application sur votre machine.

Par contre, les paramètres de "Redirection de dossiers" et de déploiement de logiciels sont traités obligatoirement en mode synchrone pour éviter les effets indésirables. Si vous ouvrez une session alors que la GPO de redirection de dossiers n'est pas encore appliquée, vous allez avoir une mauvaise surprise. En revanche, pour certains paramètres, par exemple la connexion d'une imprimante, ce n'est pas gênant si elle est montée alors que votre session est ouverte depuis 15 secondes. Par contre, l'expérience utilisateur est améliorée : pas besoin d'attendre que toutes les GPO soient traitées pour accéder à sa session (et commencer à travailler).

Le mode synchrone peut être forcé pour l'ensemble des GPO si vous le souhaitez. Cela peut notamment être intéressant si le réseau est long à monter sur la machine. Pour forcer ce mode, il faut activer un paramètre que vous connaissez peut être déjà :

Configuration ordinateur > Modèles d'administration > Système > Ouverture de session

Paramètre : Toujours attendre le réseau lors du démarrage de l'ordinateur et de l'ouverture de session

C. Les événements générés par la mise en cache des GPO

Lorsque Windows met à jour le cache des stratégies de groupe, un événement est généré sur le système. De la même façon, lorsque Windows lit le cache GPO, un événement est généré. Nous pouvons retrouver ces événements dans l'Observateur d'événement.

Ces événements sont enregistrés dans le journal suivant : Journaux des applications et des services > Microsoft > Windows > Group Policy > Opérationnel

  • Événement ID 5216 : écriture du cache GPO

  • Événement ID 5217 : lecture du cache GPO

Le cache a de l'intérêt pour les GPO qui s'exécute en mode synchrone pour optimiser le traitement et ne pas ralentir la machine. C'est dans ce cas de figure où le cache sera consulté. Pour ce qui est des GPO traitées en mode asynchrone, elles ne s'appuient pas sur le cache, mais la dernière version sera téléchargée depuis un contrôleur de domaine.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

Nombre de posts de cet auteur : 5572.Voir tous les posts

6 thoughts on “Fonctionnement du cache des GPO (Group Policy Caching)

  • Bonjour,
    Bon article… J’ai pu tester en environnement de LABO, mon constat:
    – Pour une GPO Computer, je retrouve bien le cache dans C:\WIndows\system32…..;
    – Par contre pour une GPO User, je ne retrouve rien dans le profil de mon user ou la GPO s’applique (Elle est bien appliquée). Mais je retrouve bien les infos de la GPO en regedit dans le datastore de HKLM.
    – C’est le fonctionnement normal? Ou autre chose à activer pour retrouver les infos dans le profil?
    Merci.
    Vince.

    Répondre
    • Est-ce qu’on peut supprimer le dossier pour repartir à zéro, lorsque qu’on rencontre un problème ?

      Répondre
  • Hi,
    Microsoft a corrigé un « bug » de sécurité en déplaçant simplement les dossiers « Group Policy » pour les users sous c:\programdata\microsoft\grouppolicy\users\ qui est en lecture seule pour les utilisateurs standard….

    Répondre
    • Hello Vince,
      C’est bon à savoir, merci pour tes recherches et ton retour ! 🙂
      Je vais mettre à jour l’article.
      Bonne journée
      Florian

      Répondre
  • Bonjour Florian,

    Certaines machines situées sur des sites distants et qui utilisent un point d’accès wifi, ou celles qui sont connectées par VPN arrivent rarement à appliquer les dernières GPO. Principalement les GPO ordinateur et le déploiement d’applications. Je réfélchissais à la possibilité d’utiliser le traitement synchrone avec cache, mais il reste le problème des fichiers sources des applications qui doivent être téléchargés. Ne pourrait-on pas mettre en cache également le répertoire qui contiens les sources ? Avec le Centre de synchronisation de Windows peut-être ? Si le cache est téléchargé pendant la session, lors du redémarrage de l’ordinateur sans accès au contrôleur de domaine, les GPO ordinateurs pourraient s’appliquer, déploiement applicatiosn compris.

    Qu’en pensez-vous ?
    Merci.

    Répondre
  • Bonjour,

    J’ai une GPO pour l’installation d’une application qui se fait à l’arrêt du poste avec un fichier mit en cache sous C:\Windows\System32\GroupPolicy\DataStore\0\sysvol ..or si le poste est branché électriquement la mise à jour se fait. Si l’ordinateur n’est pas sur secteur rien ne se passe.
    Auriez-vous un idée svp ?
    Merci par avance pour votre aide

    Répondre

Répondre à Florian Burnel Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.