Active Directory Recycle Bin

Pour ce billet, un sujet que j’ai eu à traiter plusieurs fois : La restauration d’objets AD. La mise en œuvre d’un annuaire Active Directory ne pose pas de problème particulier en terme de conception. Par contre quand un exploitant viens vous demander comment on peut restaurer un utilisateur supprimé, là, cela devient sportif.

 

Pour ceux qui n’ont pas pratiqué ce sport au moins une fois, il faut savoir que :

  • L’objet supprimé reste dans l’annuaire Active Directory pendant un certain temps (dépend du système d’exploitation et du niveau de Service Pack), c’est la notion de TombStone
  • L’objet est dépouillé d’un certain nombre de ces attributs, donc en particulier l’appartenance aux groupes

 

La restauration d’un utilisateur ne pose pas de problème particulier, par contre, son appartenance à d’éventuels groupes implique de savoir à quel(s) groupes il appartenait. Le sujet se corse quand on sait que l’appartenance à un groupe est un attribut du groupe et non de l’utilisateur. L’attribut “MembeOf” de l’objet utilisateur n’est qu’un attribut calculé. Autre problème, si on restaure l’utilisateur et les groupes, on risque de repositionner des membres qui devraient ne plus l’être.

 

Maintenant que les règles de ce sport sont clairement établies, voyons comment traiter cette problématique  :

 

Etant donné que Windows Server 2008 R2 fait la part belle à PowerShell avec des cmdlets dédiées à Active Directory, il était donc tout naturel de faire le tour du propriétaire avant de s’attaquer à la restauration d’un objet utilisateur et de son appartenance à un groupe sans restaurer le groupe en question (challenge!).

 

Mise en place de la cible

Objectif, tout faire en Powershell, en premier lieu, créer un conteneur organisationnel dans lequel on va créer le compte qui sera supprimé. La commande utilisée est “New-ADOrganizationalUnit” :

R2RecycleBIn1 

Une fois le conteneur créé, on peut afficher toutes ses caractéristiques à l’aide de la commande “Get-ADOrganizationalUnit” :

R2RecycleBIn2

Remarque : On peut constater la présence de l’attribut “ProtectedFromAccidentalDeletion”, une des nouveautés de Windows Server 2008 qui permet de positionner des permissions empêchant un administrateur de supprimer un conteneur sans réfléchir!

 

Une fois le conteneur créé, passons à l’utilisateur avec la commande “new-ADUser” tel qu’illustré ci-dessous :

R2RecycleBIn4

 

Vérifions que notre utilisateur existe bien dans le conteneur. Comment? Simplement avec l’aide du provider “AD:”, c’est comme se balader dans une structure de répertoire :

R2RecycleBIn5

 

Passons à la suite avec la création de notre groupe global avec la commande “New-ADGroup” :

R2RecycleBIn6

 

Et le plus important, le positionnement de notre utilisateur comme membre de ce groupe avec la commande “Add-ADGroupMember” :

R2RecycleBIn7

 

Histoire de vérifier, voyons la liste des membres de ce groupe avec la commande “Get-ADGroupmember” :

R2RecycleBIn8

Tout est maintenant prêt pour notre démonstration, à l’exception de l’Active Directory Recycle Bin qui n’est pas activée par défaut

 

Mise en place de l’Active Directory recycle Bin

Avant de commencer, il faut respecter un certain nombre de pré-requis :

  • Tous les contrôleurs de domaine de la forêt en Windows Server 2008 R2
  • Augmenter le niveau de forêt à “Windows Server 2008 R2”

Le décors est posé. Maintenant la pièce de résistance! Celle-ci est une fonctionnalité optionnelle d’Active Directory qu’il faut activer à l’aide de la commande “Enable-ADOptionalFeature, tel qu’illustré ci-dessous :

R2RecycleBIn0

Pour vérifier que c’est bien fait, on peut demander la liste des fonctionnalités Active Directory actuellement installées dans notre environnement avec la commande “Get-ADOptionalFeature” :

R2RecycleBIn3 

Tout peter comme il disait commandant Sylvestre!

Et toujours en PowerShell :

 R2RecycleBIn10

Pour s’en assurer, on peut lister le contenu du conteneur avec le provider “AD:”

R2RecycleBIn11

***, je vais me faire engueuler!

Une fois l’objet supprimé, il est six pieds sous terre. Pour pouvoir le restaurer, encore faut-il pouvoir le retrouver parmi les objets supprimés avec la commande “Get-ADObject” sur un conteneur bien précis “Deleted Objects” en n’oubliant pas de préciser d’inclure les objets supprimés :

R2RecycleBIn12

A ce stade, on n’est pas plus avancé qu’avant. L’objet est supprimé. Une simple restauration autoritaire de l’objet (pourvu qu’on dispose d’une sauvegarde récente!) ne restaurera pas les appartenances aux éventuels groupes.

 

C’est là que l’Active Directory Recycle Bin change tout. La commande “Restore-ADObject” à laquelle on précise le GUID de l’objet à restaurer (d’ou l’intérêt de lister préalablement les objets supprimés et les attributs) va nous permettre de restaurer non seulement l’utilisateur mais aussi ses appartenances à un ou plusieurs groupes sans pour autant effectuer une restauration de ces groupes :

R2RecycleBIn13

On peut s’assurer que l’objet est bien restauré en affichant le contenu du conteneur organisationnel à l’aide du provider “AD:” et même afficher la liste des membres du groupe.

R2RecycleBIn14

L’utilisateur restauré est de nouveau membre du groupe.

 

Dans cette démonstration, j’ai supprimé un user mais j’aurai tout aussi bien pu supprimer l’intégralité du conteneur. L’opération aurait juste été un peu plus complexe dans la mesure où il faut penser à restaurer le conteneur parent d’un objet avant de pouvoir restaurer celui-ci.

 

Voila une fonctionnalité de Windows Server 2008 R2 qui est plus qu’intéressante pour les exploitants. Quand on sait que les extensions Active Directory de PowerShell reposent sur un Web Service, donc plus besoin de RPC pour administrer des contrôleurs de domaine!

 

Pour plus d’informations sur la restauration d’objets Active Directory, un excellent article de Technet Magazine de l’époque, bien plus digeste que la KB.

 

BenoîtS – Simple by Design

Share this post:                                       
Published 19 January 2009 11:28 PM by BenoitS

Comments

# Site d'information sur Windows Server 2008 R2 et Windows 7 said on 27 January, 2009 03:38 AM

Benoit Sautière vient d'écrire sur son blog un très bon billet concernant une des nouveautés d'Active

# PowerShell sur Technet et en français said on 29 January, 2009 07:19 AM

Vous comprendrez mieux en regardant ceci : Windows Server 2008 R2 - Active Directory Recycle Bin et en