Points clés
Méthodes pour auditer et supprimer les comptes administrateurs obsolètes dans Active Directory
- Audit des administrateurs cloud : ouvrez PowerShell en tant qu’administrateur, connectez-vous à Microsoft Graph, exécutez le script d’audit pour lister les comptes administrateurs et leurs dernières connexions, puis exportez les comptes obsolètes (inactifs depuis plus de 30 jours) et désactivez-les ou retirez-leur leurs privilèges.
- Découverte des administrateurs locaux : utilisez PowerShell sur les appareils Windows pour lister tous les administrateurs locaux, vérifier l’heure de dernière connexion de chaque utilisateur et désactiver ou supprimer les comptes inactifs depuis plus de 30 jours ; étendez le processus à tous les terminaux grâce à votre RMM.
- Vérifications manuelles des comptes obsolètes : lorsque PowerShell n’est pas disponible, exécutez net localgroup administrators dans CMD (invite de commande), examinez les dernières connexions dans les journaux d’événements de sécurité et utilisez des outils d’analyse du registre/de la base SAM pour identifier les comptes administrateur cachés ou hérités.
- Contrôle des comptes par GPO : utilisez la stratégie de groupe pour restreindre qui peut être administrateur local, refuser la connexion aux comptes obsolètes ou à risque, et configurer LAPS pour renouveler automatiquement les mots de passe administrateur locaux à intervalles réguliers.
- Audit et nettoyage automatisés : activez la journalisation des transcriptions PowerShell, planifiez des audits récurrents via votre RMM, désactivez automatiquement les comptes obsolètes, archivez les journaux d’audit et configurez des alertes en cas de création non autorisée d’un administrateur.
Les comptes administrateurs obsolètes constituent des vulnérabilités de sécurité silencieuses : ils font office de portes dérobées déverrouillées pour les attaquants dans votre tenant Microsoft 365 ou votre environnement hybride. Ces comptes à privilèges oubliés échappent souvent à la surveillance tout en exposant à de sérieux risques de conformité et de compromission.
Dans ce guide, vous apprendrez précisément comment repérer les comptes obsolètes dans Active Directory, les auditer efficacement et mettre en place un nettoyage automatisé avec PowerShell, Microsoft Graph et des outils RMM afin de maintenir un environnement sécurisé.
Supprimez les accès administrateur superflus pour renforcer la sécurité et la conformité.
Découvrez les fonctionnalités de gestion d’Active Directory de NinjaOne.
Procédures pour repérer et nettoyer les comptes obsolètes dans Active Directory
Un compte administrateur obsolète est une identité à privilèges sans activité récente : il peut s’agir d’administrateurs généraux Microsoft 365 ou de rôles à privilèges sans connexion depuis plus de 30 jours, de comptes administrateur locaux Windows 11 sur des appareils inutilisés depuis longtemps, ou encore de comptes de service sans connexion interactive ni documentation claire du propriétaire.
Les comptes d’anciens collaborateurs qui n’ont pas été entièrement déprovisionnés entrent également dans cette catégorie. Repérer et nettoyer ces comptes de façon proactive dans Active Directory permet d’éviter les compromissions de sécurité et de garder votre environnement conforme.
📌 Cas d’utilisation : effectuez ce nettoyage lors des audits de sécurité trimestriels, après le départ d’un collaborateur ou lors de la préparation de rapports de conformité, par exemple une revue des comptes inactifs depuis 30 jours dans Office 365. Des vérifications mensuelles sont idéales pour détecter les risques au plus tôt, en particulier lorsque vous générez des rapports utilisateur sur les comptes inactifs.
📌 Prérequis : avant de commencer, assurez-vous de disposer d’un accès administrateur à tous les tenants Microsoft 365, des modules PowerShell (Microsoft Graph et AzureAD/MSOnline, par exemple), de journaux d’audit Microsoft Entra activés et d’outils d’administration locale pour les vérifications sur les terminaux. Pour l’automatisation, appuyez-vous sur votre plateforme RMM (NinjaOne, par exemple) afin de centraliser les analyses et d’appliquer les politiques.
Nous vous recommandons de consulter ⚠️ Points de vigilance avant de poursuivre.
📌 Stratégies de déploiement recommandées :
| Cliquez pour choisir une méthode | 💻 Idéal pour les utilisateurs individuels | 💻💻💻 Idéal pour les grandes entreprises |
| Méthode 1 : auditer les administrateurs cloud avec Microsoft Graph ou AzureAD PowerShell | ✓ | ✓ |
| Méthode 2 : identifier les comptes administrateur locaux sur les appareils Windows avec PowerShell | ✓ | |
| Méthode 3 : auditer la persistance des administrateurs locaux via CMD (invite de commande) et le registre | ✓ | |
| Méthode 4 : empêcher la persistance des administrateurs locaux avec une GPO | ✓ | |
| Méthode 5 : automatiser et journaliser la piste d’audit et la vérification du nettoyage | ✓ | ✓ |
Méthode 1 : auditer les administrateurs cloud avec Microsoft Graph ou AzureAD PowerShell
PowerShell vous donne un accès direct aux données d’activité dans le cloud, ce qui en fait le moyen le plus rapide de repérer les comptes administrateurs obsolètes.
📌 Cas d’utilisation : réalisez cet audit chaque trimestre pour les contrôles de conformité, immédiatement après l’offboarding d’un collaborateur ou lors de la préparation des rapports de sécurité mensuels. Il est particulièrement utile lorsque vous avez besoin de rapports personnalisés sur les comptes Office 365 inactifs depuis 30 jours, que les outils natifs ne savent pas générer.
Procédure pas à pas :
- Ouvrez PowerShell (Admin).
- Appuyez sur Win + X, puis sélectionnez Terminal Windows (Admin).
- Exécutez ce script pour vous connecter à Microsoft Graph.
Connect-MgGraph -Scopes "Directory.Read.All", "AuditLog.Read.All"
- Authentifiez-vous lorsque vous y êtes invité.
- Listez tous les comptes administrateurs :
$admins = Get-MgRoleManagementDirectoryRoleAssignment |Where-Object { (Get-MgDirectoryRole -DirectoryRoleId $_.RoleDefinitionId).DisplayName -match "Admin" } |ForEach-Object { Get-MgUser -UserId $_.PrincipalId }
- Vérifiez la date de dernière connexion.
$results = @()foreach ($admin in $admins) {$lastSignIn = Get-MgUserSignIn -UserId $admin.Id -All |Sort-Object CreatedDateTime -Descending |Select-Object -First 1$daysInactive = if ($lastSignIn) { (New-TimeSpan $lastSignIn.CreatedDateTime).Days } else { 999 }$results += [PSCustomObject]@{User = $admin.UserPrincipalNameLastSignIn = if ($lastSignIn) { $lastSignIn.CreatedDateTime } else { "Never" }DaysInactive= $daysInactiveRiskStatus = if ($daysInactive -ge 30) { "STALE" } else { "Active" }}}
- Un compte est considéré comme obsolète si la dernière connexion date de 30 jours ou plus.
- Exportez les comptes signalés :
$results | Where-Object { $_.RiskStatus -eq "STALE" } |Export-Csv "C:\Audit\Stale_Admins_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation
À l’issue de l’audit, vous disposerez d’un fichier CSV listant tous les comptes utilisateur obsolètes dotés de privilèges administrateur restés inactifs pendant 30 jours ou plus. Désactivez immédiatement les comptes à haut risque avec PowerShell ou le centre d’administration Microsoft, retirez les rôles administrateur aux utilisateurs signalés, documentez vos constats dans votre plateforme RMM et planifiez des audits récurrents.
Méthode 2 : identifier les comptes administrateur locaux sur les appareils Windows avec PowerShell
Les comptes administrateur locaux non surveillés sur les appareils Windows sont des cibles de choix pour les attaquants. Cette méthode permet d’interroger directement la base SAM de Windows, sans aucune dépendance au cloud.
📌 Cas d’utilisation : réalisez cet audit chaque mois sur l’ensemble des terminaux, en particulier après le départ d’un collaborateur ou pendant les analyses de vulnérabilités. Il est essentiel pour identifier les comptes obsolètes conservant un accès local persistant qui échappe à la surveillance cloud.
Procédure pas à pas :
- Dans PowerShell (Admin), exécutez ce script pour lister les administrateurs locaux d’un appareil Windows 11 :
Get-LocalGroupMember -Group "Administrators" |Select-Object Name, PrincipalSource
- La sortie doit distinguer les comptes de domaine/cloud (AzureAD) des comptes locaux.
- Vérifiez l’heure de dernière connexion :
Get-LocalUser |Where-Object {$_.Enabled -eq $true} |Select-Object Name, LastLogon
- Désactivez ou supprimez les comptes obsolètes (inactifs depuis plus de 30 jours) :
Disable-LocalUser -Name "LegacyAdmin" # First disableRemove-LocalUser -Name "LegacyAdmin" # Then delete permanently
- Déployez à l’échelle sur tous les appareils à l’aide du script RMM (NinjaOne, par exemple) :
$computers = Get-ADComputer -Filter * | Select-Object -ExpandProperty NameInvoke-Command -ComputerName $computers -ScriptBlock {Get-LocalUser | Where-Object {($_.LastLogon -lt (Get-Date).AddDays(-30)) -and($_.Name -ne "Administrator")} | Disable-LocalUser}
Après l’audit, vous pouvez identifier les comptes utilisateur locaux obsolètes dotés de droits administrateur. Désactivez immédiatement les comptes à haut risque, faites tourner les mots de passe avec LAPS (Local Administrator Password Solution), documentez le tout dans votre plateforme RMM avec des indicateurs de risque et planifiez des analyses récurrentes pour éviter l’apparition de nouveaux comptes obsolètes.
Méthode 3 : auditer la persistance des administrateurs locaux via CMD (invite de commande) et le registre
Lorsque PowerShell n’est pas disponible, ces méthodes manuelles permettent de mettre au jour des comptes obsolètes cachés.
📌 Cas d’utilisation : utilisez cette approche pour des vérifications rapides sur un appareil Windows 11 lors d’une réponse à incident ou lorsque l’accès à PowerShell est restreint. Idéale pour repérer les comptes obsolètes qui passent entre les mailles du filet des outils automatisés.
Procédure pas à pas :
- Listez les administrateurs locaux via l’invite de commandes (Admin).
- Recherchez Invite de commandes (Admin) via la Recherche de la barre des tâches.
- Exécutez cette commande :
net localgroup administrators
- La sortie doit afficher tous les utilisateurs disposant de droits administrateur sur l’appareil en cours.
- Vérifiez la dernière connexion d’un compte précis à l’aide de ce journal d’événements de sécurité :
wevtutil qe Security "/q:*[System[(EventID=4624)] and EventData[Data[@Name='TargetUserName']='oldadmin']" /f:text /c:1
- Remplacez oldadmin par le nom d’utilisateur suspect. Ce script affichera la dernière connexion réussie.
- Vérification manuelle du registre (solution de repli avancée) :
reg save HKLM\SAM sam.bakreg save HKLM\SYSTEM system.bak
- Utilisez des visionneuses SAM hors ligne (SAMInsight, par exemple) pour analyser \SAM\Domains\Account\Users\Names.
⚠️ Avertissement : une modification incorrecte du registre peut provoquer une instabilité système grave. Sauvegardez toujours votre registre ou créez un point de restauration du système avant de poursuivre. Consultez la section ⚠️Points de vigilance pour en savoir plus.
Méthode 4 : empêcher la persistance des administrateurs locaux avec une GPO
Les GPO vous offrent un contrôle centralisé pour empêcher les attaquants d’abuser des comptes administrateur locaux obsolètes.
📌 Cas d’utilisation : déployez cette méthode lors du durcissement initial de l’environnement, après avoir identifié des comptes obsolètes ou en préparation d’audits de conformité (SOC 2, par exemple). Essentielle pour appliquer le moindre privilège à grande échelle.
Procédure pas à pas :
- Restreignez l’appartenance au groupe Administrateurs local.
- Ouvrez l’éditeur de gestion des stratégies de groupe (gpedit.msc).
- Accédez à Configuration ordinateur > Stratégies > Paramètres Windows > Paramètres de sécurité > Groupes restreints.
- Ajoutez le groupe Administrateurs, puis définissez les membres autorisés via :
DOMAIN\SecuredAdmins (Allowed admin group)
- Cela empêche les utilisateurs non autorisés d’élever leurs privilèges.
- Refusez la connexion aux comptes obsolètes ou à risque.
- Dans la même GPO, accédez à : Configuration ordinateur > Stratégies > Paramètres Windows > Paramètres de sécurité > Stratégies locales > Attribution des droits utilisateur.
- Modifiez Interdire l’ouverture d’une session locale :
DOMAIN\OldAdminDOMAIN\Contractor_2020
- Cela empêche les comptes indiqués de se connecter de manière interactive.
- Imposez LAPS pour la rotation des mots de passe.
- Installez LAPS sur les contrôleurs de domaine :
Install-WindowsFeature -Name "RSAT-AD-PowerShell"Install-Module LAPS -Force
- Configurez la politique LAPS :
Computer Configuration > Policies > Administrative Templates > LAPSEnable "Password Settings" and "Local Account Password Management"
Après l’implémentation, dans un délai de 90 minutes (prochain rafraîchissement des GPO), les comptes utilisateur obsolètes perdront leurs droits administrateur et leur accès en connexion, les mots de passe administrateur locaux seront renouvelés automatiquement tous les 30 jours via LAPS, et la surface d’attaque se réduira grâce au blocage des risques de pass-the-hash.
Méthode 5 : automatiser et journaliser la piste d’audit et la vérification du nettoyage
L’automatisation transforme la gestion des comptes obsolètes : d’une corvée réactive, elle devient une mesure de sécurité proactive.
📌 Cas d’utilisation : mettez en place cette approche pour assurer une conformité continue dans les environnements multi-tenant, en particulier après les audits initiaux ou pendant les cycles de sécurité mensuels. Indispensable pour les MSP qui gèrent plus de 100 terminaux.
Procédure pas à pas :
- Journalisez toutes les actions avec PowerShell :
Start-Transcript -Path "C:\AuditLogs\$(Get-Date -Format 'yyyyMMdd').txt" -Append
- Exécutez votre script d’audit (méthode 1 ou 2, par exemple)
Stop-Transcript
- Cela crée des enregistrements inaltérables pour la conformité.
- Planifiez dans une plateforme RMM (NinjaOne, par exemple) :
- Réalisez des audits mensuels des administrateurs.
- Utilisez le script PowerShell de la méthode 1 pour repérer les comptes obsolètes
- Désactivez automatiquement les comptes inactifs depuis 30 jours ou plus :
- Réalisez des audits mensuels des administrateurs.
$staleUsers = Import-Csv "C:\Audit\Stale_Admins.csv"$staleUsers | ForEach-Object {if ($_.DaysInactive -ge 30) {Set-MgUser -UserId $_.User -AccountEnabled:$false}}
- Exportez et archivez les rapports :
Compress-Archive -Path "C:\AuditLogs\*.txt" -DestinationPath "\\NAS\Archives\StaleAdmins_$(Get-Date -Format 'yyyyMM').zip"
- Alertez en cas de violation des politiques :
- Déclenchez un e-mail si un nouvel administrateur est créé en dehors de l’équipe informatique.
$newAdmin = Get-MgDirectoryRoleMember -DirectoryRoleId "role-id" |Where-Object { $_.CreatedDateTime -gt (Get-Date).AddHours(-1) }if ($newAdmin) {Send-MailMessage -To "[email protected]" -Subject "ALERT: Unauthorized Admin Created" -Body $newAdmin.UserPrincipalName}
Une fois l’automatisation en place, votre système signalera automatiquement les comptes utilisateur obsolètes chaque mois, désactivera les comptes inactifs après 30 jours, archivera des journaux chiffrés pour la conformité, alertera en temps réel en cas de violation des politiques et générera des rapports de direction via les tableaux de bord RMM.
⚠️ Points de vigilance
Cette section met en lumière les difficultés potentielles à garder en tête en suivant ce guide.
| Risques | Conséquences possibles | Solutions de retour arrière |
| 1. Données de connexion incohérentes | Faux positifs entraînant la désactivation d’administrateurs actifs | 1. Vérifiez que les journaux d’audit unifiés sont activés. 2. Exécutez |
| 2. Échec de détection des administrateurs locaux | Comptes obsolètes non détectés sur les terminaux | 1. Accordez les droits Administrateur à l’agent RMM. 2. Utilisez |
| 3. Suppression d’un compte protégé | Interruption d’un service critique | 1. Vérifiez l’indicateur msDS-ProtectedFromAccidentalDeletion.2. Validez l’application des GPO avec |
| 4. Erreurs d’authentification à l’API Graph | Échecs de scripts pendant l’automatisation | 1. Validez les portées avec Get-MgContext.2. Utilisez |
| 5. Corruption du registre | Le système d’exploitation devient instable et le démarrage échoue. | Sauvegardez le registre* ou créez un point de restauration du système. *Ouvrez l’Éditeur du registre (regedit), puis sélectionnez Fichier > Exporter. Regardez Comment sauvegarder et restaurer le registre Windows pour en savoir plus. |
| 6. GPO trop restrictive | Verrouillage de tous les appareils | 1. Conservez le compte de secours (break-glass) dans la GPO. 2. Revenez en arrière via |
| 7. Automatisation trop agressive | Désactivation massive accidentelle d’utilisateurs actifs | 1. Prévoyez un délai de grâce de 72 heures dans les scripts. 2. Restaurez depuis la corbeille Entra ID (jusqu’à 30 jours). |
Points essentiels à prendre en compte lors de l’audit des comptes obsolètes
Conciliez sécurité et continuité opérationnelle grâce à ces garde-fous essentiels.
Comptes de secours (break-glass)
Excluez toujours au moins un compte d’administrateur général par tenant du nettoyage automatisé (par exemple, [email protected]). Conservez les identifiants dans une enveloppe scellée ou un coffre-fort de mots de passe, et vérifiez-les chaque trimestre via :
Get-MgUser -UserId "[email protected]" | Select AccountEnabled
Cela évitera un verrouillage complet en cas de mauvaise configuration ou d’attaque par ransomware.
Privileged Identity Management (PIM)
Activez l’accès juste-à-temps dans Microsoft Entra ID pour supprimer les rôles administrateur permanents. Pour cela, accédez à Entra ID > Gouvernance des identités > Accès privilégié, puis convertissez les administrateurs en rôles éligibles soumis à des limites de temps activées par MFA (authentification forte).
Intégration des alertes
Connectez Microsoft Sentinel/Defender for Cloud Apps pour détecter les comptes dormants. Créez ces règles d’analyse :
SigninLogs| where TimeGenerated > ago(90d)| summarize LastLogin = max(TimeGenerated) by UserPrincipalName| where LastLogin < ago(30d)
Alertes par e-mail/SMS pour les comptes Office 365 inactifs et les écarts relevés dans le rapport à 30 jours.
Comptes de service
Marquez les comptes non interactifs avec le préfixe [SERVICE] et exemptez-les des politiques d’inactivité standard :
Set-MgUser -UserId "svc_sqlbackup" -Department "ServiceAccount-Exempt"
Puis auditez via :
Get-MgUser -Filter "startsWith(Department,'ServiceAccount')"
Conservation des journaux d’audit
Étendez la conservation des journaux d’audit unifiés à 365 jours, ce qui nécessite une licence Entra ID P2. Vous pouvez le vérifier en accédant à Portail Azure > Microsoft Entra ID > Surveillance > Paramètres de diagnostic. Activez ensuite AuditLogs et SignInLogs avec une conservation d’un an.
Conformité : répond aux exigences FINRA/SOC 2 en matière d’identification des utilisateurs inactifs dans O365.
Guide de démarrage rapide
NinjaOne s’intègre à plusieurs solutions antivirus de premier plan afin de renforcer la gestion de la sécurité et la détection des menaces sur les appareils gérés. Voici les principales intégrations antivirus disponibles dans NinjaOne :
1. Bitdefender GravityZone
- Lancez des analyses antivirus directement depuis le tableau de bord NinjaOne.
- Consultez et corrigez les menaces : fichiers mis en quarantaine, actifs ou bloqués.
- Synchronisez les données de menaces entre NinjaOne et Bitdefender pour des mises à jour en temps réel.
2. SentinelOne
- Déployez les politiques SentinelOne au niveau du groupe pour une gestion centralisée.
- Effectuez des analyses complètes du disque et corrigez les menaces directement depuis NinjaOne.
- Surveillez l’état des agents et consultez des journaux d’activité détaillés.
3. Webroot
- Intégrez Webroot pour l’analyse et la correction des menaces en temps réel.
- Consultez les résultats d’analyse et gérez les menaces depuis l’interface NinjaOne.
4. CrowdStrike Falcon (EDR (détection et réponse sur les terminaux) et EPP)
- Importez les données de vulnérabilités de CrowdStrike Spotlight pour un suivi centralisé.
- Activez la gestion de l’exposition pour identifier et réduire les risques.
Simplifiez la gestion d’Active Directory avec l’aide de NinjaOne
NinjaOne simplifie l’audit des comptes obsolètes grâce à une automatisation intégrée.
- Déploiement de scripts : automatisez les audits PowerShell (méthodes 1 et 2) sur l’ensemble des tenants et des terminaux.
- Détection des comptes locaux : analysez les appareils Windows 11 à la recherche d’administrateurs non autorisés et signalez les comptes obsolètes en temps réel.
- Rapports planifiés : générez des rapports mensuels sur les comptes Office 365 inactifs depuis 30 jours, avec export en un clic.
- Application des politiques : appliquez des restrictions équivalentes aux GPO (méthode 4) pour imposer le moindre privilège.
- Alertes : soyez averti de la création de nouveaux administrateurs locaux ou de la présence d’administrateurs généraux inactifs depuis plus de 30 jours.
- Références de configuration de sécurité : appliquez les contrôles CIS/NIST pour désactiver automatiquement les comptes à haut risque.
Renforcez la sécurité d’Active Directory grâce à un meilleur contrôle des comptes administrateur.
Sécurisez votre environnement : repérez les comptes obsolètes dans Active Directory
Auditer et supprimer les comptes administrateurs obsolètes est un fondement de la sécurité des identités, et ce guide vous donne des méthodes éprouvées pour éliminer ces risques invisibles.
En appliquant ces techniques, vous refermerez les portes dérobées oubliées que les attaquants peuvent exploiter et vous répondrez aux exigences de conformité telles que SOC 2 ou le RGPD (règlement général sur la protection des données). Lancez dès aujourd’hui vos audits mensuels pour maintenir un environnement sécurisé et prêt pour un audit.
Sujets connexes
- Comment nettoyer Active Directory : bonnes pratiques et conseils
- Comment installer et importer le module Active Directory de PowerShell
- Comment se connecter à Active Directory à distance et gérer les utilisateurs
- Sauvegarde d’Active Directory : présentation et exemples
- NinjaOne01 Surveiller les modifications des utilisateurs Active Directory
