/
/

Comment auditer et supprimer les comptes administrateurs obsolètes dans Active Directory sur l’ensemble des tenants

par Team Ninja
How to Audit and Remove Stale Admin Accounts Across Tenants in Active Directory blog banner image

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 :

  1. Ouvrez PowerShell (Admin).
    • Appuyez sur Win + X, puis sélectionnez Terminal Windows (Admin).
  2. 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é.
  1. Listez tous les comptes administrateurs :

$admins = Get-MgRoleManagementDirectoryRoleAssignment |
Where-Object { (Get-MgDirectoryRole -DirectoryRoleId $_.RoleDefinitionId).DisplayName -match "Admin" } |
ForEach-Object { Get-MgUser -UserId $_.PrincipalId }

  1. 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.UserPrincipalName
LastSignIn = if ($lastSignIn) { $lastSignIn.CreatedDateTime } else { "Never" }
DaysInactive= $daysInactive
RiskStatus = 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.
  1. 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 :

  1. 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.
  1. Vérifiez l’heure de dernière connexion :

Get-LocalUser |
Where-Object {$_.Enabled -eq $true} |
Select-Object Name, LastLogon

  1. Désactivez ou supprimez les comptes obsolètes (inactifs depuis plus de 30 jours) :

Disable-LocalUser -Name "LegacyAdmin" # First disable
Remove-LocalUser -Name "LegacyAdmin" # Then delete permanently

  1. Déployez à l’échelle sur tous les appareils à l’aide du script RMM (NinjaOne, par exemple) :

$computers = Get-ADComputer -Filter * | Select-Object -ExpandProperty Name
Invoke-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 :

  1. 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.
  1. 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.
  1. Vérification manuelle du registre (solution de repli avancée) :

reg save HKLM\SAM sam.bak
reg 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 :

  1. 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.
  1. 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\OldAdmin
DOMAIN\Contractor_2020

      • Cela empêche les comptes indiqués de se connecter de manière interactive.
  1. 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 > LAPS
Enable "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 :

  1. 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é.
  1. 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 :

$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"

  1. 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.

RisquesConséquences possiblesSolutions de retour arrière
1. Données de connexion incohérentesFaux positifs entraînant la désactivation d’administrateurs actifs1. Vérifiez que les journaux d’audit unifiés sont activés.

2. Exécutez Get-MgAuditLogSignIn -UserId [email protected] pour valider l’activité.

2. Échec de détection des administrateurs locauxComptes obsolètes non détectés sur les terminaux1. Accordez les droits Administrateur à l’agent RMM.

2. Utilisez icacls C:\Windows\System32\config\SAM /grant "NETWORK SERVICE":RX pour accéder au registre.

3. Suppression d’un compte protégéInterruption d’un service critique1. Vérifiez l’indicateur msDS-ProtectedFromAccidentalDeletion.

2. Validez l’application des GPO avec gpresult /H gpreport.html.

4. Erreurs d’authentification à l’API GraphÉchecs de scripts pendant l’automatisation1. Validez les portées avec Get-MgContext.

2. Utilisez Connect-MgGraph -Scopes "Directory.ReadWrite.All" pour les opérations d’écriture.

5. Corruption du registreLe 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 restrictiveVerrouillage de tous les appareils1. Conservez le compte de secours (break-glass) dans la GPO.

2. Revenez en arrière via dcgpofix /target:DC sur les contrôleurs de domaine.

7. Automatisation trop agressiveDésactivation massive accidentelle d’utilisateurs actifs1. 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.

💻 Essayez NinjaOne RMM gratuitement ou regardez une démo.

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

FAQs

Un compte obsolète est un compte d’utilisateur ou d’ordinateur qui ne s’est pas authentifié, n’a pas ouvert de session et n’a pas changé de mot de passe pendant une période définie (généralement 30, 60 ou 90 jours). Cette inactivité peut indiquer que le compte n’est plus utilisé.

Les comptes administrateurs obsolètes présentent un risque de sécurité élevé, car les attaquants exploitent souvent des comptes à privilèges inactifs ou non surveillés pour obtenir un accès persistant, se déplacer latéralement et élever leurs privilèges au sein d’un domaine.

Oui. L’automatisation est possible à l’aide de scripts PowerShell planifiés, de rapports de stratégie de groupe, d’outils de contrôle de santé AD ou de plateformes RMM qui analysent en continu les comptes inactifs et alertent les équipes informatiques lorsque les seuils d’inactivité sont dépassés.

La bonne pratique consiste à désactiver d’abord le compte, à surveiller d’éventuelles défaillances de services, à vérifier qu’aucune application ne dépend de ses identifiants, puis à ne le supprimer qu’après avoir confirmé que l’utilisateur ou l’appareil n’est plus nécessaire.

You might also like

Prêt à simplifier les aspects les plus complexes de l'informatique et de la sécurité ?