ntdsutil snapshot

ntdsutil snapshot sert à générer des clichés instantanés de la base Acive Directory. Toutefois, faites attention au terme snapshot qui peut prêter à confusion. Il mérite une clarification pour une utilisation à bon escient et une bonne compréhension de tous. Il n’a aucune lien avec l’état du système dans ce cas précis.

 

… snapshot vesus snapshot

 

Les infrastructures étant de plus en plus virtualisées de nos jours, nous ne devons surtout pas confondre donc snapshot et snapshot. Par conséquent, celui relatif au niveau de l’annuaire Active Directory en tant que service d’infrastructure est différent de celui l’hyperviseur. Il fait reconnaitre aussi qu’un snapshot de l’hôte Active Directory ne nous aidera pas à restaurer l’attribut altéré d’un objet.

Gardez à l’esprit que le snapshot système (cliché instantané de l’état du système et des applications associées) est généralement déconseillé. Il est carrément inutile quant à la protection de l’annuaire Active Directory dans un environnement de production conséquente.

La réplication étant adossée à une base transactionnelle, les dernières données écraseront toujours les précédentes.

L’horodatage des objets et des données a son importance. Un snapshot sera toujours plus vieux par définition par rapport aux informations des contrôleurs de domaines restés en ligne.

Tout ceci pour dire que l’utilisation d’un snapshot système pour restaurer Active Directory oblige a minima :

  1. Une isolation,
  2. Un nettoyage des métadonnées,
  3. Un redeployment l’ensemble des  contrôleurs de domaine.

 

Snapshot NTDS

 

Nous pouvons tirer profit autrement du snapshot fait directement au niveau d’Active Directory dans l’optique de protéger efficacement les données afférentes aux objets.

L’utilitaiure ntdsutil snapshot ne nécessite rien de particulier. C’est-à-dire, inutile de partir sur un DSRM (Directory Services Restore Mode) ou encore moins une éventuelle isolation.

 

REX et réalité du terrain

 

Il n’est pas concevable qu’une opération de manipulation répétitive et successive des objets engendre une restauration authoritative.

Donc, nous sommes toujours très surpris d’apprendre le contraire.

Certaines équipes IAM/IGA et N3 Active Directory ont été contraintes de faire ce choix de restauration a priori.

La posture à adopter lors de ce style de manipulation d’une grande quantité d’objets commandent une méthode simple et efficace. Autrement-dit, un procédé qui est plus souple que la restauration.

 

Concept

 

Si la précision n’est pas au rendez-vous, il va falloir miser sérieusement sur l’agilité.

Si bien que, dans cette optique de bien protéger les informations relatives aux objets lors des manipulation en masse, nos recommandations sont :

  1. L’activation de la corbeille Active Directory,
  2. La génération des snapshots (ntdsutil snapshot) par domaine Active Directory concerné,
  3. L’export de l’existant avec les utilitaires ad hoc (ldide ou csvde).

 

Mise en oeuvre

 

En admettant que l’éventuelle industrialisation d’un retour arrière peut être basée sur le snapshot, cela pour des raisons de rapidité du traitement, voici la mise en oeuvre.

  • ntdsutil snapshot “activate instance ntds” create q q (retenez ou copiez l’instance ou la valeur du GUID du snapshot)

Vérifiez si un snapshot est déjà monté. L’objectif est que vous puissiez baser votre opération de restauration sur le snapshot ad hoc. En conséquence, un snapshot inadapté doit être simplement démonté si la situation l’impose.

  • Vérification : ntdsutil snapshot « list mounted » q q
  • Démontage peut se faire comme suit :  ntdsutil snapshot « mount %guid% » q q

 

Une fois le snapshot ad hoc monté, un dossier nommé $_SNAP_*_VOLUME?$ apparaitra.

L’utilitaire DASMAIN vous permettra de lire le contenu de ce snapshot en spécifiant un port d’aaccès spécifique. Le style de ligne de commandes est ci-après :

  • dsamain /dbpath C:\$SNAP_202211121158_VOLUMEC$\windows\NTDS\ntds.dit /ldapport 10000

 

Ouvrez maintenant la console DSA en ajoutant le contrôleur de domaine suivi du port spécifique défini lors du montage du snapshot (port 10000 dans notre exemple).

Visuellement vous allez retrouver l’ensemble des information précédemment altérées ou supprimées.

Ce cliché instantané monté (en lecture seule) vous est profitable maintenant pour restaurer l’état précis d’un ou plusieurs objets Active Directory.

Le principe est de lire les données dans le cliché instantané et les injecter injecter par la suite dans l’annuaire en ligne.

 

Restauration des informations

 

Voici comment restaurer les données à partir d’un snapshot :

  • Pour les groupes d’appartenance :

Get-ADUser -Identity john.doe -Properties memberof -server knw001:10000 | select -ExpandProperty memberof | ForEach-Object {Add-ADGroupMember -Identity $_ -Members (Get-ADUser -Identity john.doe)}

  • Pour les autres attributs, e.g. emailaddress :

$previousemailvalue = (Get-ADUser -Identity john.doe -server knw001:10000 -Properties emailaddress).emailaddress
Set-ADUser -Identity john.doe -emailaddress $previousemailvalue

De cette façon, sur la base d’un snapshot cohérent, le retour arrière est industrialisable.

L’idée serait de traiter les groupes d’appartenance en priorité, puisque c’est ce qui donne accès aux ressources. Ensuite, le traitement des autres attributs peut se faire progressivement. il est possible de el réaliser par boucle, quelques exemples de scripts ci-dessous :

  • Traitement unitaire par attribut :

$userrestore = Get-ADUser -Identity john.doe -Properties description -Server knw001 :10000
Set-ADUser -Identity john.doe -description $userrestore.description -Server knw001:389

  • Traitement par boucle, par OU et par attribut :

$userrbs = Get-ADUser -Filter * -SearchBase « OU=_T2,DC=mtech,DC=lab » -Properties emailaddress
foreach ($userrb in $userrbs)
{
$previousValue = Get-ADUser -Identity $userrb -Properties emailaddress -server knw001:10000
$currentvalue = Get-ADUser -Identity $userrb -Properties emailaddress -server knw001:389
if ($previousValue.EmailAddress -ne $currentvalue.EmailAddress)
{
Set-ADUser -Identity john.doe -emailaddress $PreviousValue.emailaddress -Server knw001:389
}
}

 

Conclusion

 

Restaurer proprement une base Active Directory est toujours une opération lourde. Elle peut impacter votre capacité à produire de façon nominale.

Ainsi, il convient de dénombrer les objets qui seront traités.

Etant donné les impacts éventuels liés à la manipulation massive des objets, en dernier lieu la préparation d’un plan de repli simple est toujours utile.

C’est pourquoi, l’exploitation de ntdsutil snpashot reste simple et carrément efficace. D’autant plus que l’utilitaire est gratuit.

 

Pour le reste, n’hésitez pas à partager l’article si vous le trouvez intéressant ou de le commenter en cas d’erreur ou d’omission de notre part (tout est perfectible).

Share This