« Une GPO liée à l’OU s’applique immédiatement à tous les objets visibles dedans. »
L’application dépend du type d’objet, du lien, de l’héritage, du filtrage de sécurité, des filtres WMI, de la réplication et du cycle de rafraîchissement.
01Sépare ordinateur et utilisateur
Les paramètres Computer Configuration suivent le compte ordinateur. Les paramètres User Configuration suivent le compte utilisateur. Une GPO peut contenir les deux, mais une GPO ciblée et nommée par fonction est plus facile à dépanner.
02Comprends LSDOU
Local → Site → Domain → Organizational Unit
Les paramètres sont traités dans cet ordre général. Les OU enfants peuvent recevoir des liens supplémentaires. Block Inheritance et Enforced modifient le comportement et doivent rester exceptionnels.
secpol.msc ou exportée avec secedit n’est donc pas nécessairement la valeur finale sur un poste joint au domaine. Le résultat effectif se vérifie depuis le client.03Crée une GPO en simulation
New-GPO -Name 'SORIA-Workstations-Baseline' -Comment 'Socle postes du laboratoire' -WhatIf
Après création réelle dans le lab, sauvegarde immédiatement la GPO avant toute modification.
New-Item -ItemType Directory -Path 'C:\SORIA-Labs\GPO-Backup' -Force
Backup-GPO -Name 'SORIA-Workstations-Baseline' -Path 'C:\SORIA-Labs\GPO-Backup'
04Lie la GPO à la bonne OU
$domainDn = (Get-ADDomain).DistinguishedName
$targetOu = "OU=Workstations,$domainDn"
New-GPLink -Name 'SORIA-Workstations-Baseline' -Target $targetOu -LinkEnabled Yes -WhatIf
05Documente le contenu
Get-GPOReport -Name 'SORIA-Workstations-Baseline' -ReportType Html -Path 'C:\SORIA-Labs\SORIA-Workstations-Baseline.html'
Get-GPInheritance -Target $targetOu
Le rapport HTML constitue une preuve lisible des paramètres. Conserve aussi la sauvegarde GPO et la justification du filtrage.
06Vérifie depuis le client
gpupdate /force
gpresult /r
gpresult /h C:\SORIA-Labs\gpresult.html
gpupdate /force ne remplace pas le diagnostic. Certaines stratégies nécessitent fermeture de session, redémarrage ou traitement au démarrage.
07Diagnostique l’absence d’application
Get-WinEvent -LogName 'Microsoft-Windows-GroupPolicy/Operational' -MaxEvents 50 |
Select-Object TimeCreated, Id, LevelDisplayName, Message
Contrôle successivement : OU réelle de l’objet, lien, état User/Computer, filtrage, droits Read/Apply Group Policy, réplication SYSVOL, DNS et résultat gpresult.
08Durcis le navigateur comme une politique, pas comme une liste magique
Microsoft Edge fournit des modèles administratifs dédiés. Dans le laboratoire, installe les modèles ADMX compatibles avant de configurer les paramètres ; ne crée pas des valeurs de registre au hasard pour imiter une GPO.
Commence par une petite matrice de décision :
SmartScreenEnabled
→ objectif : conserver Microsoft Defender SmartScreen actif
→ preuve : stratégie appliquée + état vu dans edge://policy
BrowserSignin
→ objectif : décider si la connexion au navigateur est autorisée, désactivée ou imposée
→ dépendance : politique d'identité de l'organisation
PasswordManagerEnabled
→ objectif : décider si Edge peut enregistrer de nouveaux mots de passe
→ dépendance : existence éventuelle d'un gestionnaire de mots de passe approuvé
Les bonnes valeurs dépendent du contexte. Pour le laboratoire, applique d’abord uniquement un réglage non ambigu sur une OU pilote, par exemple l’activation de SmartScreen, puis prouve son application.
Preuve complémentaire côté poste :
Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Edge' -ErrorAction SilentlyContinue |
Select-Object SmartScreenEnabled,BrowserSignin,PasswordManagerEnabled
gpresult, le rapport de GPO et edge://policy doivent raconter la même histoire.09Prépare un script de connexion minimal
Un script de connexion doit rester rapide, prévisible et sans secret. Commence avec une action locale inoffensive :
$evidenceDir = Join-Path $env:LOCALAPPDATA 'SORIA-Lab'
New-Item -ItemType Directory -Path $evidenceDir -Force | Out-Null
[pscustomobject]@{
User = $env:USERNAME
Computer = $env:COMPUTERNAME
Time = Get-Date -Format o
} | ConvertTo-Json |
Set-Content (Join-Path $evidenceDir 'logon-proof.json') -Encoding UTF8
Dans une GPO utilisateur, le script se configure sous User Configuration → Policies → Windows Settings → Scripts (Logon/Logoff). Le fichier doit être disponible dans un emplacement adapté au domaine, versionné et lisible par les utilisateurs concernés.
Ne mets pas dans un script de connexion :
mot de passe en clair
jeton d'API
clé privée
commande nécessitant un administrateur sans justification
traitement long bloquant le bureau
suppression destructive sans contrôle
10Comprends le temps d’exécution du script
Windows peut différer l’exécution des scripts de connexion selon la stratégie appliquée. Il existe aussi des paramètres permettant de les exécuter de manière synchrone ou de définir l’ordre entre scripts PowerShell et scripts non-PowerShell. Ne conclus donc pas qu’un script est absent simplement parce qu’il n’a pas écrit son fichier immédiatement après l’ouverture de session.
Vérifie :
gpresult /h C:\SORIA-Labs\gpresult-logon.html
Test-Path "$env:LOCALAPPDATA\SORIA-Lab\logon-proof.json"
Get-Content "$env:LOCALAPPDATA\SORIA-Lab\logon-proof.json" -ErrorAction SilentlyContinue
Puis corrèle avec :
Get-WinEvent -LogName 'Microsoft-Windows-GroupPolicy/Operational' -MaxEvents 100 |
Select-Object TimeCreated,Id,LevelDisplayName,Message
11Prépare le rollback
Set-GPLink -Name 'SORIA-Workstations-Baseline' -Target $targetOu -LinkEnabled No -WhatIf
Restore-GPO -Name 'SORIA-Workstations-Baseline' -Path 'C:\SORIA-Labs\GPO-Backup' -WhatIf
Pour un script de connexion, retire d’abord la référence dans la GPO pilote, vérifie qu’aucun utilisateur ne dépend encore du script, puis seulement après supprime ou archive le fichier.
Déploie une baseline poste contrôlée
Sur une OU pilote, combine un paramètre de sécurité non destructif, une politique Edge justifiée et un script de connexion minimal. Pour chaque élément, définis cible, preuve gpresult, preuve fonctionnelle, événement attendu, limite du test et rollback. N’étends pas la GPO à d’autres postes tant que les trois preuves ne sont pas cohérentes.
✓Ce que tu retiens
Une GPO est un objet versionné, lié et ciblé. Son succès se prouve depuis le client. La même méthode s’applique aux paramètres système, au durcissement du navigateur et aux scripts de connexion : pilote, preuve, limite et retour arrière.