form-gpresult-computer
Paquet WAPT d'audit des stratégies de groupe appliquées à l'ordinateur. Il collecte un export XML de GPResult et enregistre un résultat structuré dans audit-gpresult.computer-gpo.
Le nom form-gpresult-computer est proposé pour identifier ce paquet dans le dépôt, en complément de form-gpresult-user. Si le paquet machine existe déjà sous un autre nom, conserver son identité actuelle.
Description pour le dépôt
Libellé proposé : Audit GPO — Ordinateur
Ligne à reporter dans le champ description du fichier WAPT/control existant :
description: Audit des GPO machine : domaine, site, listes des GPO appliquees et non appliquees et compteurs dans audit-gpresult.computer-gpo.
Cette ligne est également fournie dans WAPT/description.txt. Ce fichier n'est pas un contrôle WAPT complet : conserver les autres métadonnées du paquet existant.
Fonctionnement
- L'installation appelle
install(), volontairement vide. - L'audit supprime, s'il existe, le rapport temporaire précédent.
- Il lance GPResult depuis le chemin construit avec
makepath(system32(), "gpresult.exe"), avec les options/SCOPE COMPUTER /X "<rapport.xml>" /Fet un délai maximal de 120 secondes. - Il recherche la section XML
ComputerResults, extrait les informations et classe les GPO. - Il enregistre directement un dictionnaire avec
WAPT.write_audit_data_if_changed. - Il tente de supprimer le rapport temporaire dans un bloc
finally.
Le paquet consulte les données RSoP disponibles. Il ne lance pas degpupdateet ne modifie pas les stratégies de groupe. Il n'a pas besoin d'une session utilisateur active et ne collecte pas les GPO utilisateur.
Prérequis
- Poste Windows disposant de GPResult au chemin construit par les fonctions WAPT utilisées.
- Agent WAPT fournissant
setuphelpersetWAPT.write_audit_data_if_changed. - Données RSoP machine disponibles et droits suffisants dans le contexte de l'agent pour les consulter.
- Accès en lecture et écriture au répertoire temporaire du contexte d'exécution.
Données produites
Catégorie :audit-gpresult— Clé :computer-gpo.
Exemple illustratif :
{
"status": "OK",
"computer": {
"name": "POSTE01",
"domain": "exemple.lan",
"site": "Default-First-Site-Name"
},
"summary": {
"applied_gpo_count": 2,
"denied_gpo_count": 1,
"total_gpo_count": 3
},
"applied_gpos": [
"Local Group Policy",
"Default Domain Policy"
],
"denied_gpos": [
"GPO non appliquee"
]
}
| Champ | Signification |
status |
État de la collecte, pas un verdict de conformité. |
computer.name |
Nom du poste issu de COMPUTERNAME. |
computer.domain |
Premier texte DomainName trouvé dans le sous-arbre machine, sinon premier texte Domain. |
computer.site |
Premier texte Site trouvé dans le sous-arbre machine. |
summary.applied_gpo_count |
Nombre d'entrées retenues comme appliquées. |
summary.denied_gpo_count |
Nombre d'entrées retenues comme non appliquées. |
summary.total_gpo_count |
Somme des deux compteurs. |
applied_gpos |
Noms des GPO classées comme appliquées, dans l'ordre de collecte. |
denied_gpos |
Noms des GPO classées comme non appliquées, dans l'ordre de collecte. |
Les champs de domaine et de site restent des chaînes vides si aucune valeur n'est trouvée. La recherche de texte est récursive ; elle conserve le comportement du script fourni.
Règles de classement conservées
Une GPO est considérée comme appliquée si Enabled, IsValid et FilterAllowed sont vrais et si AccessDenied est faux. Toutes les autres entrées retenues sont placées dans denied_gpos.
Les valeurs true, 1, yes et oui, sans distinction de casse, sont interprétées comme vraies. Toute autre valeur, y compris un champ absent, est interprétée comme fausse. Un AccessDenied absent est donc considéré comme faux, tandis qu'un Enabled, IsValid ou FilterAllowed absent empêche le classement en GPO appliquée.
denied_gpos signifie ici « GPO non appliquées », et pas uniquement « refus de sécurité ». La liste peut notamment inclure des entrées filtrées, désactivées ou invalides.
La recherche des balises GPO est récursive. Les doublons sont éliminés selon le triplet (nom, version annuaire, version SYSVOL) ; un même nom peut donc apparaître plusieurs fois si les versions diffèrent. Les entrées sans nom sont ignorées. Les compteurs décrivent les entrées retenues par cet algorithme, pas un inventaire de toutes les GPO du domaine.
Statuts
| Retour d'audit | Situation |
OK |
Export, analyse et enregistrement terminés, même si des GPO non appliquées sont présentes. |
ERROR |
Échec de la commande, fichier absent, XML invalide, section machine absente ou autre exception capturée. |
En cas d'erreur, la même clé reçoit un objet contenant status: ERROR et message. Les champs du précédent succès ne sont pas recopiés. Les consommateurs doivent lire status avant d'accéder aux listes et compteurs.
Les paramètres d'enregistrement sont keep_days=365 et max_count=1. Aucun statut WARNING n'est utilisé dans cette version. Une section ComputerResults présente mais sans GPO retenue produit un résultat OK avec des compteurs à zéro.
Déploiement
- Copier le
setup.pyfourni dans les sources du paquet existant. - Reporter la description dans
WAPT/controlet incrémenter la version selon les conventions du dépôt. - Reconstruire, signer et téléverser le paquet.
- Déployer la version, puis lancer l'audit depuis WAPT.
- Consulter
audit-gpresult.computer-gpo.
La fréquence des audits dépend de la configuration WAPT existante ; le script ne crée pas de planification.
Dépannage et limites de cette version
- Consulter le journal de l'audit pour connaître l'erreur GPResult ou XML.
- Vérifier l'accès à GPResult, les droits de collecte machine et les données RSoP.
- Le rapport temporaire utilise un nom fixe :
wapt-gpresult-computer.xmldanstempfile.gettempdir(). Éviter des exécutions concurrentes de ce même audit dans le même répertoire temporaire. - Le nettoyage est tenté dans tous les cas ; un échec de suppression est ignoré et peut laisser le rapport sur disque.
- La collecte restitue les données disponibles, sans forcer leur actualisation.
Contenu setup.py: code fourni, enrichi de commentaires et de docstrings, sans modification de logique.README.md: fonctionnement, interprétation, prérequis et exploitation.WAPT/description.txt: ligne de description pour le contrôle existant