Dans beaucoup d’environnements Active Directory, il est courant de rencontrer des pratiques simples mais risquées :
- Un groupe “Administrateurs serveurs” regroupant tous les administrateurs avec droits sur tous les serveurs.
- Un groupe “Administrateurs postes” donnant les droits d’administration sur l’ensemble des postes de l’entreprise.
Cette approche, bien que pratique, présente plusieurs risques :
- Propagation rapide des attaques : un compte compromis sur un serveur ou poste peut compromettre tous les autres.
- Perte de traçabilité : difficile de savoir quel administrateur a accès à quelle machine.

Dans cet article je vous présente le principe du moindre privilège qui consiste à donner à chaque compte uniquement les droits nécessaires pour accomplir ses tâches, ni plus, ni moins.
1. Le problème des groupes globaux
Un administrateur compromis sur un serveur peut contrôler tous les autres serveurs, même problème sur les postes : propagation d’attaques, droits excessifs.
En pratique, les environnements sécurisés nécessitent des groupes par machine, ce que permet de gérer automatiquement le script présenté ci-dessous.
Cette approche garantit :
- Une séparation stricte des privilèges.
- Une traçabilité complète des droits par machine.
- Une réduction de la surface d’attaque, car un compte compromis n’affecte que les objets sur lesquels il a des permissions.
2. Automatiser la gestion des groupes “LocalAdmins”
Pour appliquer ce principe, il est recommandé de créer un groupe AD par machine, par exemple LocalAdmins-<NomMachine>, et de l’ajouter aux administrateurs locaux de cette machine.
Le script PowerShell que je propose permet :
- De créer automatiquement les groupes LocalAdmins pour chaque machine.
- De nettoyer les groupes orphelins associés à des machines supprimées.
- De loguer toutes les actions dans un fichier de journalisation.
Le script inclut également la journalisation pour garder une trace de chaque action (création, suppression, groupes existants).
Comment utiliser le script ?
- Copiez le script sur un contrôleur de domaine
- Ouvrez PowerShell en tant qu’administrateur
- Exécutez-le avec :
.\LocalAdminGroups.ps1
🔗 Télécharger le script LocalAdminGroups.ps1 sur GitHub
À quelle fréquence l’exécuter ?
La fréquence d’exécution dépend de la taille de votre organisation et du rythme du cycle de vie de votre infrastructure, personnellement je recommande une exécution quotidienne, a planifier sur un contrôleur de domaine via le Planificateur de tâches Windows avec un compte de service disposant des autorisations nécessaires.
3. Mise en place de la GPO pour administrateurs locaux
Une fois les groupes créés, il est possible de déployer automatiquement les groupes LocalAdmins sur les machines via une GPO.
- Ouvrir la console Group Policy Management (GPMC).
- Créer une nouvelle GPO, par exemple GPO_LocalAdmins.
- Éditer la GPO :
- Appliquer la GPO.
Cette procédure permet de centraliser la gestion des administrateurs locaux tout en respectant le principe du moindre privilège.
En séparant les droits par machine, cette approche applique concrètement le principe du moindre privilège, améliore la sécurité globale et facilite l’audit des comptes administrateurs.
L’automatisation via le script PowerShell, combinée à une GPO ciblée, permet de gérer efficacement les droits sans complexité supplémentaire, tout en réduisant la surface d’attaque.