
Contexte
Dans un environnement Active Directory, les Unités d’Organisation (OU) permettent de structurer les comptes et de déléguer la gestion à des équipes spécifiques (RH, services, etc.). Créer manuellement chaque OU et configurer les ACL peut être fastidieux et source d’erreurs.

Quand l’utiliser ?
- Déploiement d’une nouvelle branche ou d’un service interne.
- Mise en place d’une politique de délégation granulaire (ex. : un groupe de support pourra réinitialiser les mots de passe uniquement dans son OU).
- Automatisation via scripts d’infrastructure-as-code.
🔹 Étapes
- Pré‑requis – Le serveur doit disposer du module
ActiveDirectoryet le compte exécutant le script doit être membre de Domain Admins ou disposer des droits suffisants. - Définir les variables
- Créer l’OU
- Créer le groupe de sécurité dédié (si besoin)
- Définir la délégation (reset pwd + création d’objets)
- Vérifier la délégation
# Variables
$ouName = "OU=Finance,DC=contoso,DC=com"
$ouPath = "OU=Finance,DC=contoso,DC=com"
$delegatedGroup = "Finance-Admins"
$delegatedUser = "Finance-Admins"
# Crée l'OU si elle n'existe pas
if (-not (Get-ADOrganizationalUnit -Filter "DistinguishedName -eq '$ouPath'" -ErrorAction SilentlyContinue)) {
New-ADOrganizationalUnit -Name "Finance" -Path "DC=contoso,DC=com" -ProtectedFromAccidentalDeletion $true
Write-Host "OU Finance créée."
} else {
Write-Host "OU Finance existe déjà."
}
# Crée le groupe s'il n'existe pas
if (-not (Get-ADGroup -Filter "Name -eq '$delegatedGroup'" -ErrorAction SilentlyContinue)) {
New-ADGroup -Name $delegatedGroup -GroupScope Global -Path $ouPath -Description "Gestionnaires Finance"
Write-Host "Groupe $delegatedGroup créé."
}
# Délégation de réinitialisation de mot de passe
$resetPwdRight = "Reset Password"
$createObjRight = "Create Computer Objects"
$rights = @($resetPwdRight,$createObjRight)
foreach ($right in $rights) {
$acl = Get-ACL "AD:$ouPath"
$identity = New-Object System.Security.Principal.NTAccount("$delegatedGroup")
$activeDirectoryRights = [System.DirectoryServices.ActiveDirectoryRights]::$right
$inheritanceType = [System.Security.AccessControl.InheritanceFlags]::None
$propagationType = [System.Security.AccessControl.PropagationFlags]::None
$ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule($identity,$activeDirectoryRights,$inheritanceType,$propagationType)
$acl.AddAccessRule($ace)
Set-ACL -Path "AD:$ouPath" -AclObject $acl
}
Write-Host "Délégation appliquée au groupe $delegatedGroup."
# Affiche les ACE appliquées
Get-ACL "AD:$ouPath" | Format-Table IdentityReference,ActiveDirectoryRights -AutoSize
🔹 Méthode alternative
Utiliser l’outil graphique Delegation of Control Wizard via dsa.msc. Cette approche est visuelle mais ne s’intègre pas dans les pipelines d’automatisation.
⚠️ Bonnes pratiques de sécurité
- Activer ProtectedFromAccidentalDeletion sur les OU critiques.
- Limiter les droits aux seules actions nécessaires (ex. : éviter Full Control).
- Documenter chaque délégation dans un référentiel de configuration (Git).
- Tester les permissions avec un compte non privilégié avant la mise en production.
✅ Conclusion
En quelques lignes de PowerShell, vous avez créé une OU, un groupe de sécurité dédié et appliqué des délégations précises. Cette méthode est réutilisable, versionnable et réduit le risque d’erreurs humaines, tout en respectant les principes du moindre privilège.
