Procédure

Changer le mot de passe d’un compte de service Windows

Faire tourner le mot de passe d’un compte de service sans provoquer d’arrêt : inventaire des services, tâches, pools IIS et applications, changement coordonné, validation et recherche des échecs 4625.

⌚ Environ 7 min de lecture
Voir mes favoris
DomaineWindows ServerNiveauAvancéDurée30-120 minRisqueÉlevé

Objectif

Changer le secret d’un compte de service Windows utilisé par plusieurs composants sans perdre une dépendance cachée, en inventoriant les usages, en préparant l’ordre de mise à jour, en testant chaque service et en surveillant les authentifications échouées après la rotation.

Prérequis

  • Identité exacte du compte et propriétaire métier/technique.
  • Accès aux serveurs où le compte est utilisé et droit de modifier les dépendances.
  • Nouveau secret conforme généré et stocké dans le coffre prévu.
  • Fenêtre de maintenance et compte administrateur de secours.
  • État initial des services, tâches et applications documenté.

Procédure pas à pas

1

Inventorier les services Windows utilisant le compte

Recherchez le compte dans les services locaux et sur les serveurs concernés. Utilisez StartName plutôt que le nom du service, car plusieurs services peuvent partager la même identité. Exportez la liste avec l’état actuel afin de savoir ce qui doit être redémarré et validé après la rotation. Si le compte est présent sur plusieurs serveurs, centralisez la liste avant de modifier quoi que ce soit.

Get-CimInstance Win32_Service | Where-Object StartName -match '<DOMAINE\COMPTE>' | Select Name,DisplayName,State,StartMode,StartName
Résultat attendu
  • La liste des services dépendants est complète et horodatée.
2

Inventorier les tâches planifiées

Les tâches planifiées sont une source fréquente d’ancien mot de passe oublié. Listez les tâches dont le Principal.UserId correspond au compte. Notez le chemin de la tâche, son dernier résultat, son prochain déclenchement et le serveur. Certaines applications créent leurs propres tâches : ne limitez pas la recherche au dossier racine de Task Scheduler.

Get-ScheduledTask | Where-Object {$_.Principal.UserId -match '<DOMAINE\COMPTE>'} | Select TaskPath,TaskName,@{n='UserId';e={$_.Principal.UserId}}
Get-ScheduledTaskInfo -TaskName '<TASK-NAME>' -TaskPath '<TASK-PATH>'
Résultat attendu
  • Toutes les tâches connues utilisant le compte sont intégrées au plan de changement.
3

Rechercher les pools IIS et autres dépendances

Sur les serveurs IIS, inspectez les pools d’applications configurés avec SpecificUser. Complétez l’inventaire avec les applications métiers, services SQL Agent, outils de sauvegarde, connecteurs et scripts documentés. Les commandes ci-dessous servent uniquement à découvrir l’identité ; ne placez jamais le nouveau mot de passe dans une commande enregistrée dans l’historique.

Import-Module WebAdministration
Get-ChildItem IIS:AppPools | Select Name,@{n='IdentityType';e={$_.processModel.identityType}},@{n='UserName';e={$_.processModel.userName}}
Résultat attendu
  • Le plan contient services, tâches, IIS et dépendances applicatives non Windows.
4

Mesurer l’état de référence avant rotation

Avant le changement, vérifiez que les composants sont réellement sains. Un service déjà arrêté ou une tâche déjà en erreur ne doit pas être attribué à la rotation. Relevez les événements 4625 récents pour le compte, si l’audit de connexion est disponible, et les journaux applicatifs. Fixez également l’ordre de changement : annuaire, puis dépendances, puis redémarrages/tests.

Get-Service | Where-Object Status -eq 'Stopped' | Select Name,DisplayName
Get-WinEvent -FilterHashtable @{LogName='Security';Id=4625;StartTime=(Get-Date).AddHours(-2)} -ErrorAction SilentlyContinue | Select -First 20 TimeCreated,Id,Message
Résultat attendu
  • Les anomalies préexistantes sont séparées des incidents causés par la rotation.
5

Changer le secret dans l’autorité de compte

Effectuez la rotation dans Active Directory ou dans l’autorité concernée avec l’outil administratif sécurisé de votre organisation. Si vous utilisez le module ActiveDirectory, une méthode interactive peut éviter d’exposer le nouveau mot de passe en clair dans l’historique. Après changement, ne testez pas le secret en ouvrant une session interactive si le compte n’est pas destiné à cet usage.

$NewPassword = Read-Host 'Nouveau mot de passe' -AsSecureString
Set-ADAccountPassword -Identity '<SERVICE-ACCOUNT>' -Reset -NewPassword $NewPassword
Résultat attendu
  • Le mot de passe du compte est changé sans apparaître en clair dans la commande ou le ticket.
6

Mettre à jour les dépendances par lots

Commencez par les composants dont l’impact est le plus faible et mettez à jour le mot de passe avec l’interface de gestion appropriée : propriétés du service, Task Scheduler, IIS Manager ou console applicative. Pour chaque élément, sauvegardez la configuration si possible, appliquez le nouveau secret, puis redémarrez uniquement le composant concerné. Ne passez au lot suivant qu’après validation.

Résultat attendu
  • Chaque dépendance est mise à jour et testée avant la suivante.
7

Valider services, tâches et application

Vérifiez que les services redémarrent avec le compte attendu. Déclenchez manuellement une tâche non destructive ou attendez son prochain passage et contrôlez LastTaskResult. Pour IIS, recyclez uniquement le pool concerné si le changement le nécessite et testez l’URL ou l’application. Le fait qu’un service soit Running ne prouve pas qu’il accède encore correctement aux ressources réseau.

Get-CimInstance Win32_Service | Where-Object StartName -match '<DOMAINE\COMPTE>' | Select Name,State,StartName
Get-ScheduledTask | Where-Object {$_.Principal.UserId -match '<DOMAINE\COMPTE>'} | Get-ScheduledTaskInfo | Select LastRunTime,LastTaskResult,NextRunTime
Résultat attendu
  • Les dépendances sont démarrées et les fonctions métier utilisant des ressources distantes réussissent.
8

Surveiller les échecs 4625 et comptes verrouillés

Après la rotation, surveillez les échecs d’authentification sur une durée couvrant au moins le cycle des tâches non fréquentes. Un événement 4625 répétitif provenant d’une machine précise indique souvent un service, une tâche ou un script resté avec l’ancien secret. Corrigez la source au lieu de simplement déverrouiller le compte à répétition.

Get-WinEvent -FilterHashtable @{LogName='Security';Id=4625;StartTime=(Get-Date).AddHours(-1)} -ErrorAction SilentlyContinue | Where-Object {$_.Message -match '<SERVICE-ACCOUNT>'} | Select TimeCreated,MachineName,Message
Résultat attendu
  • Aucun 4625 persistant lié au compte n’apparaît après la période de surveillance.
9

Documenter et préparer la prochaine rotation

Enregistrez la date, le propriétaire, les dépendances découvertes et le prochain jalon de rotation dans le coffre ou la CMDB

Résultat attendu
  • La prochaine rotation dispose d’un inventaire à jour et d’un responsable clairement identifié.

Validation

La procédure est validée lorsque :

  • Tous les services dépendants sont démarrés avec le compte prévu.
  • Les tâches planifiées exécutent leur action avec un résultat attendu.
  • Les applications accèdent encore à leurs ressources réseau et bases nécessaires.
  • Aucun événement 4625 persistant ni verrouillage du compte n’apparaît après surveillance.

Retour arrière

  • Si une dépendance critique échoue et que la politique l’autorise, restaurer temporairement l’ancien secret dans l’autorité et dans les composants déjà modifiés.
  • Si l’ancien secret ne peut pas être réutilisé, appliquer un nouveau secret de secours coordonné à toutes les dépendances plutôt que multiplier les valeurs.
  • Remettre chaque service ou tâche à sa configuration sauvegardée si une autre propriété a été modifiée par erreur.
  • Documenter le rollback et relancer l’inventaire avant une nouvelle tentative.

Dépannage / erreurs fréquentes

  • Service 1069 après rotation : vérifier le nom de compte et le secret configurés dans Log On, ainsi que le droit Log on as a service.
  • Tâche 0x8007052E : rechercher une mauvaise paire utilisateur/mot de passe ou un compte verrouillé.
  • 4625 depuis un serveur inattendu : identifier une dépendance non inventoriée sur cette machine.
  • Application démarre mais n’accède plus au partage/SQL : vérifier les droits réseau et l’identité réellement utilisée.
  • Le compte est verrouillé régulièrement : ne déverrouillez pas en boucle ; corrigez d’abord toutes les sources conservant l’ancien secret.

Références officielles

♡ 0