AD Magic Restore: outil de restauration Active Directory

Envoyer Imprimer PDF

Sommaire

 

 

Introduction

AD Magic Restore est un outil qui va vous permettre de restaurer rapidement et en toute simplicité vos objets Active Directory de manière complète ou partielle. Il est publie sur Codeplex depuis le lien suivant: http://admagicrestore.codeplex.com/

L’avantage de mon outil par rapport à Corbeille AD (pour ceux qui ont la Corbeille AD…) : la fonctionnalité de comparaison et de restauration granulaire.

L’outil est un script développé en PowerShell. Il dispose d’une interface graphique pour faciliter son usage.

Il s’appuie essentiellement sur les composants et/ou outils suivants:

  • DSAMAIN pour l’instanciation du fichier ntds.dit
  • Les clichés instantanés de volume (volume shadow copy) ou sauvegarde locale réalisé avec Windows Server Backup (le remplaçant de NTBackup)
  • Module PowerShell Active Directory de Microsoft
  • Web Services Active Directory ou service passerelle de gestion Active Directory
  • Esentutil, diskpart…

 

 

Pre-requis et limitations

L’outil exige qu’il soit exécuté à minima sur un serveur membre Windows Server 2008 avec la fonctionnalité Windows ‘AD-Domain-Services’ (module Active Directory et outil DSAMAIN) et que vous disposiez du web service Active Directory sur au moins un de vos contrôleurs de domaine (disponible dès Windows Server 2003 R2). Si vous respectez ces pré-requis, vous pourrez au moins instancier votre base de données depuis un fichier NTDS.DIT récupéré depuis un de vos contrôleurs de domaine restaurer vos objets de votre fichier vers la base de production.

Si vous voulez exploiter les fonctionnalités « Snaphots » ou/et « Backups », il sera impératif d’utiliser l’outil directement depuis un contrôleur de domaine.

L’outil ne fait tous les miracles. Il ne peut pas restaurer un objet purgé. En effet, si votre objet a été purgé de la base, l’outil ne sera pas en mesure de restaurer des attributs tel que le objectSid ou l’objectGUID. Cela signifie que la restauration de vos objets ne pourra se faire une fois que l’objet supprimé à dépasser la valeur de rétention définie par l’attribut « tombstonelifetime » (60 jours ou 180 jours par défaut selon votre environnement).

L’outil a été pas mal éprouvé mais j’ai rajouté au fur et à mesure certaines nouvelles fonctionnalités qui peuvent générer des bugs. Utilisez-le Donc avec précautions. D’ailleurs toute remontée sera la bienvenue (ajout de fonctionnalités, bugs…).

Pour le moment, je n’ai pas pu tout testé mai j’ai déjà quelques autres mises en garde et/ou limitations :

  • Restauration du mot de passe impossible
  • Restauration des clés BitLocker non-testée
  • Restauration de l’attribut « sIDHistory » non-testée
  • Identification des attributs protégés non-exhaustive (possibilité de gérer manuellement une liste d’exceptions depuis la variable « $script:CustomExcludedAttributes »)

 

 

Présentation générale


L’interface graphique est constituée de trois parties principales :

  • « Data Source » (1): sélection de la source de données utilisée par le script pour restaurer vos objets sur votre environnement de production. Vous pouvez utiliser un sauvegarde locale (sauvegarde complète sur un volume dédié avec un point de montage), un cliché instantané (via ntdsutil, mon script), en spécifiant un fichier NTDS.DIT ou en vous connectant à une instance DSAMAIN distante.
  • « Data Destination » (2): sélection de la partition Active Directory de destination. En général vous utiliserez ce qu’on appelle la  partition « default naming context » mais si vous devez restaurer, par exemple un sous-réseau, il faudra passer par la partition de « configuration », pour un enregistrement DNS vous sélectionnerez probablement la partition « domaindnszones » ou « forestdnszones ».
  • « Search » (3): sur les trois, c’est la plus importante. Depuis cette section, vous serez à même de rechercher les objets depuis votre instance AD source et de restaurer les objets ou/et attributs sur l’AD de destination. Les options de comparaison et de restauration sont accessibles à l’aide d’un menu contextuel qui s’affiche lorsque vous faites un clic droit sur l’objet sélectionné.

 

 

La zone « Data Source »

  • Connection : vous pouvez pointer à peu près sur n’importe quelle instance LDAP. La seule condition est de disposer du Web Service Active Directory.

 

  • Exploitation d’une sauvegarde : le script détecte la présence de sauvegardes complètes et stockées sur un volume dédié à l’aide de Windows Server Backup. Pour garantir le fonctionnement de cette fonctionnalité, vous devrez à minima attribuer une lettre de lecteur à ce volume (par défaut ce n’est pas le cas avec Windows Server Backup). Pour faire simple, le script monte le cliché instantané de la sauvegarde sélectionnée. Il monte ensuite le VHD de la sauvegarde à l’aide de « DISKPART »  afin de pouvoir en parcourir le contenu. Enfin, il instancie le fichier « ntds.dit » à l’aide de « DSAMAIN ».

 

  • Exploitation d’un clic instantané : liste les clichés instantanés du volume dédié à votre base Active Directory, monte le cliché sélectionné et l’instancie à l’aide de « DSAMAIN ».

 

  • Exploitation d’un fichier NTDS : vous pouvez spécifier un fichier NTDS de votre choix que l’outil se chargera d’instancier. Les options « Repair file » et « Upgrade database » sont impératives si vous spécifiez un fichier « ntds.dit » provenant d’un contrôleur de domaine Windows Server 2003.

 

Pour finir, vous disposez de deux options spécifiques pour l’exploitation de votre source. La première concernant la durée d’attente avant que l’instanciation soit annulée. Par défaut, elle est définie à 2 minutes mais elle devra sans doute être augmentée si votre base est volumineuse et que vous faire une réparation via l’onglet « File ».

La deuxième option concerne le port sur lequel la base sera instanciée par NTDS.  Je vous conseille de jouer avec en cas de problème pour instancier votre source. Ça peut débloquer pas mal de situations…

 

 

La zone « Data Destination »

Pas besoin de trop s’attarder sur cette partie. Vous disposez par défaut de plusieurs partitions d’application sur Active Directory. Selon le type d’objet à restaurer, il vous faudra sélectionner la bonne. De plus, ce n’est pas très explicite mais en réalité cela détermine aussi la partition source utilisée par le script.

 

 

La zone « Search »

Comme je l’ai dit plus haut, c’est la zone principale du script. C’est à partir d’elle que vous réaliserez les opérations de recherche, de comparaison et de restauration.  Je vais avant tout vous présenter les différents filtres de recherche des objets. A noter que les recherches sont réalisées systématiquement depuis la source de données.

 

  • « Filter » (1) : pour spécifier le nom ou le nom d’ouverture de session (attribut « sAMAccountName ») de l’objet à retrouver depuis votre source de données. Notez que vous pouvez utiliser un « wildcard » (une étoile), pour vos recherches.

 

  • « Container » (2) : pour retourner uniquement les objets situé dans une unité d’organisation spécifique. Vous pouvez le coupler avec les autres options de filtre.

 

  • Les cases à cocher « Login » et « Name » (3) : définis principalement l’attribut utiliser par « Filter » (1). Par défaut, la recherche sera faite exclusivement sur l’attribut Active Directory  « sAMAccountName » (cela correspond à la case à cocher « Login »). Vous pouvez également ajouter dans vos critères de recherche l’attribut Active Directory « Name ». Cela peut s’avérer particulièrement utile pour les objets ne disposant pas de l’attribut « sAMAccountName ».
  • « Result size » (4) : vous permettra de limiter le nombre de résultats retourné sur votre recherche.
  • « Class » (5) : un autre filtre qui offre la possibilité de retourner des objets d’une classe spécifique.  Il s’agit en réalité d’un filtre sur l’attribut Active Directory « objectClass ».
  • Le bouton « Search » (6) et « Cancel » (7) : Lorsque que vous avez spécifié vos critères de recherche, vous pouvez l’exécuter en cliquant sur le bouton « Search ». Pour une raison ou une autre, vous pouvez décider l’annuler à l’aide du bouton « Cancel ».

 

Une fois que la recherche vous retourne le ou les objets voulus, vous pouvez faire apparaître une liste d’actions en sélectionnant l’objet et en réalisant un clic doit depuis la zone de résultat. Un menu contextuel apparait. Les actions disponibles depuis ce menu vont varier en fonction de la nature de l’objet (par exemple s’il s’agit d’un groupe ou d’un compte utilisateur) ou en fonction de son état (objet supprimé ou présent dans l’annuaire de destination.

Exemple 1 : un objet utilisateur supprimé sur votre annuaire de destination.

 

Exemple 2 : un objet groupe existant sur votre annuaire de destination.

 

 

Liste des opérations possibles depuis le menu contextuel

Vous avez donc la possibilité de réaliser différentes actions sur un objet en fonction de son état ou de sa classe. Les actions sont disponibles depuis un menu contextuel qui apparait lorsque vous sélectionnez un objet et que vous faites un clic droit sur un des résultats obtenus dans la zone « Search ».

Les actions sont :

  • « Reanimate » : pour réanimer un objet tombstone.
  • « Restore Object » : pour restaurer de manière complète un objet. Cette action englobe l’action « Reanimate », « Compare » (restauration des attributs), « Restore Memberships » et éventuellement « Restore Members » si l’objet est un groupe ou « Restore Subtree » si l’objet dispose de sous-objet (Unité d’organisation, objet utilisateur, objet ordinateur…).
  • « Compare » : pour comparer les différences entre un objet source et un objet de destination. Il est possible de restaurer les valeurs de chaque attribut de la source vers la destination.

 

  • « Restore Memberships » : pour visualiser les appartenances éventuellement manquantes sur l’objet de destination par rapport à l’objet source. Le cas échéant, vous pouvez restaurer tout ou partiellement ces appartenances.

 

  • « Restore Members » : cette action n’est disponible que pour les objets groupe. Elle permet d’obtenir la liste des membres d’un groupe manquant entre la source et la destination. De la même manière que la fonctionnalité « Restore Memberships », elle vous permet de restaurer tout ou partiellement les membres d’un groupe.

 

  • « Restore Subtree » : Cette action permet de restaurer les objets enfants de l’objet à restaurer. L’action est uniquement disponible si l’objet dispose réellement de sous-enfants. Cela concerne principalement les unités d’organisation mais pas seulement. En effet, par exemple les objets utilisateur et ordinateur sont considérés comme des conteneurs pouvant disposer d’objets enfants.

ATTENTION : cette fonctionnalité peut être utilisée pour restaurer une hiérarchie complète  d’objets mais le script est surtout développé pour de la restauration granulaire. Pour restaurer une hiérarchie complète, je vous conseille vivement d’utiliser une restauration autoritaire.

 

 

Restaurer un objet

Je vous fais maintenant une présentation pas-à-pas d’une restauration d’un objet utilisateur.

La première étape consiste à sélectionner une source de données. Vous avez du choix… dans l’exemple ci-dessous, je choisi un cliché instantané. En cliquant sur le bouton « Connect », le script me monte le cliché instantané et me l’instancie à l’aide de « DSAMAIN ».

 

Ensuite, il faut sélectionner la partition Active Directory de destination depuis la liste déroulante et en cliquant sur le bouton « Select ».

 

Je lance ma recherche (voir la présentation de la zone « Search » pour plus de détails). Faites un clic droit sur l’objet à restaurer et sélectionner l’action « Reanimate ». Vous remarquez sans doute l’action « Restore Object » mais je vous en parlerez un peu plus tard.

 

Le script vous demande une confirmation sur la réanimation de l’objet. Une fois confirmée, le script doit vous retourner le résultat de la réanimation.

 

Pour ceux qui ne savent pas exactement ce qu’est une réanimation, je vais faire simple. Lorsque vous supprimez un objet dans l’AD, il est conservé temporairement  et pour une durée déterminée afin de faire répliquer cette demande de suppression sur l’ensemble des contrôleurs de domaine de votre domaine. Pour limiter l’espace utilisé par cet objet qui est considéré comme supprimé, il est dépourvu de la plus part de ces attributs (par exemple ces appartenances). On peut considérer cet objet comme supprimé mais pas encore purgé et on peut donc intervenir avant la purge pour qu’il redevienne un objet au sens classique du terme. On appelle cette opération une réanimation d’objet tombstone. Par contre, et c’est là que le script intervient, la réanimation ne peut restaurer les attributs qui ont été définitivement supprimés lors de la demande de suppression.

Nous allons restaurer maintenant les attributs de l’objet réanimé. Sélectionnez de nouveau l’objet et Refaites un clic droit sur la zone de résultats. Si tout se passe bien, vous devriez avoir l’action « Compare » qui apparait. Sélectionnez-là.

 

Une nouvelle fenêtre apparait. Elle vous liste l’ensemble des attributs divergents entre la source et la destination. Sélectionnez ceux que vous désirez restaurer et cliquez sur le bouton « Restore ». Le script doit vous retourner le résultat de l’opération.

 

La dernière étape consiste à restaurer les appartenances aux groupes de vos objets. C’est une fonctionnalité  que j’ai décidé de traiter séparément des autres attributs afin de pouvoir avoir une réelle granularité dans la restauration des appartenances.

Faites donc de nouveau un clic droit sur l’objet sélectionné et cliquez sur l’action « Restore Memberships ».

 

Une nouvelle fenêtre apparait. Vous obtenez la liste des groupes auxquels l’objet appartient depuis la source de données. Il vous suffit des sélectionner tout ou une partie de ces groupes et de cliquer sur le bouton « Restore ».

 

Votre objet est restauré ! Pas mal non ? Peut-être un peu fastidieux toutefois… mais vous pouvez faire plus rapide.

Je vous ai montré  dans le détail les étapes de restauration pour que vous ayez une meilleure compréhension de l’outil. Mais, en fait, en sélectionnant l’option « Restore Object », vous faites la réanimation, la restauration des attributs et des appartenances en une seule fois. Encore mieux n’est-ce pas ?

 

 

La zone « Tombstones »

Lorsque vous cliquez sur le bouton « View / Manage » en bas à gauche de la fenêtre principale, vous accédez à une nouvelle fenêtre dédiée aux objets tombstones.

 

Les deux avantages principaux sont :

  • Une recherche directe depuis votre annuaire de production
  • La restauration de plusieurs objets à la fois.

 

La fenêtre « Manage Tombstones » est assez similaire à la zone « Search ». Des fonctionnalités de filtres de recherche pour aider à retrouver rapidement le ou les objets voulus (1). La zone de résultats n’intègre pas de menu contextuel mais, par contre, vous pouvez sélectionner plusieurs objets (3). Une fois fait, vous pouvez choisir soit de réanimer, soit de restaurer (4) les objets sélectionnés.

Passer par « Manage Tombstones » peut s’avérer utile lorsque vous êtes certains de votre source de données. En fait, vous n’avez aucun contrôle sur la source donc il est possible que vous puissiez seulement réanimer vos objets sans en restaurer l’ensemble de leurs attributs. A utiliser donc avec précaution.

Mise à jour le Mardi, 06 Janvier 2015 21:40