2026-10-28 16:45:44 +01:00
2026-10-28 15:40:39 +00:00
2026-10-28 15:40:39 +00:00
2026-10-28 16:45:44 +01:00

form-gpresult-user
Paquet WAPT d'audit des stratégies de groupe de l'utilisateur ayant une session active sur le poste. Il collecte les données GPResult et les expose sous forme structurée dans audit-gpresult.user-gpo.
Identification dans le dépôt

  • Nom du paquet : form-gpresult-user
  • Libellé : Audit GPO — Utilisateur actif
  • Description proposée pour le champ description de WAPT/control :
Audit des GPO de l'utilisateur actif : identification du compte, listes des GPO appliquees et non appliquees et compteurs dans audit-gpresult.user-gpo.  
   

Le fichier WAPT/description.txt contient cette ligne à reporter dans le fichier WAPT/control existant. Ce n'est pas un fichier de contrôle complet : conserver les autres métadonnées du paquet, notamment la version, les dépendances et les informations de signature.
Fonctionnement

  1. L'installation appelle install(), volontairement vide.
  2. L'audit recherche les sessions Windows actives avec les API WTS, via win32ts.
  3. Il sélectionne l'unique compte actif et lance :
gpresult.exe /USER "DOMAINE\utilisateur" /SCOPE USER /X "<fichier temporaire>" /F  
   
  1. Il analyse la section XML UserResults, puis classe les GPO et calcule les compteurs.
  2. Il transmet directement un dictionnaire à WAPT.write_audit_data_if_changed, sans convertir le résultat en chaîne JSON.
  3. Le dossier et le rapport XML temporaires sont supprimés à la sortie du bloc de collecte, y compris en cas d'exception.
    L'audit s'exécute dans le contexte de l'agent WAPT et cible explicitement les données RSoP de l'utilisateur. Il n'utilise pas session_setup(). Il consulte les données disponibles sans lancer de gpupdate ni modifier les stratégies du poste.
    Prérequis
  • Poste Windows disposant de gpresult.exe, accessible depuis le contexte de l'agent.
  • Agent WAPT fournissant setuphelpers, win32ts et WAPT.write_audit_data_if_changed.
  • Une session utilisateur active et des données RSoP accessibles pour le compte ciblé.
  • Droits suffisants dans le contexte d'exécution de l'agent pour lire ces données et créer un fichier temporaire.
    La présence d'un compte actif ne garantit pas la disponibilité de ses données RSoP. Un compte local est détectable, mais ne dispose pas nécessairement de données de stratégies exploitables.
    Résultat d'audit
    Catégorie : audit-gpresult — Clé : user-gpo.
    Exemple illustratif :
{  
   "status": "OK",  
   "summary": {  
     "total_gpo_count": 2,  
     "denied_gpo_count": 1,  
     "applied_gpo_count": 1  
   },  
   "computer": {  
     "name": "POSTE01"  
   },  
   "user": {  
     "account": "DOMAINE\\utilisateur",  
     "name": "utilisateur",  
     "domain": "DOMAINE"  
   },  
   "denied_gpos": ["Local Group Policy"],  
   "applied_gpos": ["GPO Utilisateurs"]  
 }  
   
Champ Signification
status État de la collecte, pas un verdict de conformité des GPO.
summary.total_gpo_count Nombre d'entrées GPO analysées dans UserResults.
summary.applied_gpo_count Nombre d'entrées classées comme appliquées.
summary.denied_gpo_count Nombre d'entrées classées comme non appliquées.
computer.name Nom du poste remonté par COMPUTERNAME.
user.account Compte complet sélectionné via WTS.
user.name Nom d'utilisateur.
user.domain Domaine fourni par WTS, généralement NetBIOS ; ce n'est pas nécessairement le nom DNS du domaine AD.
applied_gpos Liste triée des noms des GPO appliquées.
denied_gpos Liste triée des noms des GPO non appliquées.

 
Convention : denied_gpos inclut les GPO non appliquées pour toutes les causes reconnues par les indicateurs XML, notamment le filtrage, la désactivation ou l'invalidité. Cela peut inclure une GPO vide ; cette liste ne signifie donc pas uniquement « refus de sécurité ». Si le nom manque, l'identifiant XML est utilisé lorsqu'il est disponible.
Le classement conserve exactement la logique de la version retenue : un indicateur Enabled, IsValid ou FilterAllowed à faux, ou AccessDenied à vrai, classe la GPO comme non appliquée. Sinon, IsValid et FilterAllowed doivent être vrais pour la classer comme appliquée. Un état indéterminable déclenche une erreur.
Statuts et cas particuliers

Statut Situation
OK Export XML et analyse terminés, résultat enregistré. Des GPO non appliquées peuvent être présentes.
WARNING Aucun utilisateur avec une session active.
ERROR Plusieurs comptes actifs, échec WTS/GPResult, XML absent ou inexploitable, ou état de GPO indéterminable.

 
Les sessions déconnectées sont ignorées. Plusieurs sessions actives du même compte sont regroupées ; plusieurs comptes actifs distincts provoquent une erreur pour éviter une sélection arbitraire.
En cas de WARNING ou d'ERROR, le résultat de la même clé est remplacé par un objet de statut et un message. Les listes et compteurs du précédent succès ne sont pas recopiés. Le champ user vaut alors null ou contient le compte ciblé sous forme de chaîne, selon le cas ; les consommateurs doivent consulter status avant de lire les champs du résultat de succès.
Les paramètres d'enregistrement sont keep_days=365 et max_count=1. La collecte ne crée pas une clé distincte par utilisateur : elle représente le résultat du dernier audit du poste, selon le compte actif au moment de l'exécution.
Mise en place et exploitation

  1. Remplacer le setup.py du paquet existant par le fichier fourni.
  2. Reporter la description proposée dans WAPT/control et incrémenter la version du paquet selon les conventions du dépôt.
  3. Reconstruire, signer et téléverser le paquet dans le dépôt WAPT.
  4. Déployer la nouvelle version sur un poste avec une session utilisateur active.
  5. Lancer l'audit du paquet depuis WAPT et consulter audit-gpresult.user-gpo.
    La fréquence de réexécution dépend de la configuration d'audit WAPT existante ; ce code n'ajoute aucun mécanisme de planification.
    Dépannage
    Le journal indique le compte ciblé, la commande et la présence du dossier temporaire. Le délai maximal de la commande est de 120 secondes.
  • Aucun utilisateur actif : ouvrir une session, puis relancer l'audit.
  • Plusieurs utilisateurs actifs : ne conserver qu'un seul compte actif sur le poste, puis relancer l'audit.
  • Erreur GPResult : consulter la sortie de la commande dans le journal ; vérifier les droits, les données RSoP et l'accès au dossier temporaire.
  • Erreur XML ou état indéterminable : récupérer un export XML produit dans les mêmes conditions pour examiner la structure avant de modifier le parseur.
    L'appel direct à gpresult.exe est conservé dans cette version ; aucun chemin Sysnative n'est forcé.
    Contenu
  • setup.py : version retenue, enrichie uniquement de commentaires et de docstrings.
  • README.md : identification, fonctionnement, données et exploitation.
  • WAPT/description.txt : ligne de description à reporter dans le contrôle existant.
S
Description
affiche le gpresult du user actif dans les données d'audit
Readme GPL-3.0
58 KiB
0 Stars 3 Watchers 0 Forks
Languages
Python 100%