15/11/2024

Activer la protection contre la suppression accidentelle sur vos objets

I. Présentation

Dans le but de protéger le contenu d’un annuaire Active Directory, notamment contre les suppressions accidentelles, Microsoft a intégré une protection qu’il est possible de déployer sur les objets de son annuaire.

Par défaut, lorsque l’on crée une unité d’organisation (OU – Organizational Unit), cette option est activée. Cependant, sur les annuaires plus anciens et qui sont migrés au fur et à mesure des évolutions serveurs, il est possible que cette option ne soit pas active sur certaines unités d’organisation.

L’option en question s’appelle : Protéger l’objet des suppressions accidentelles.

Nous verrons comment protéger l’intégralité des unités d’organisation, et nous verrons également comment protéger les comptes utilisateurs, ordinateurs et groupes sensibles de votre organisation.

Comme nous l’avons, il existe la corbeille Active Directory pour récupérer des objets supprimés, mais il vaut mieux éviter d’en arriver là.

II. Lister les OU non protégées

Commençons par lister les unités d’organisation où cette option n'est pas active : bien que cette étape  facultative, elle permettra de se rendre compte s'il y a beaucoup d'OUs concernées ou non. Une sorte d’audit rapide de la situation… C’est également l’occasion de découvrir une commande PowerShell supplémentaire.

Pour récupérer cette liste, on s'appuie sur le commandlet Get-ADOrganizationalUnit où l'on filtrera les résultats afin d'afficher uniquement les Unités d'organisation où le paramètre ProtectedFromAccidentalDeletion (correspondant à l'option de protection) est à false (faux).

La commande est la suivante :

Get-ADOrganizationalUnit -Filter * -Property ProtectedFromAccidentalDeletion | `
                         Where{ $_.ProtectedFromAccidentalDeletion -eq $false }

Pour que ce soit plus lisible, nous pouvons optimiser la sortie :

Get-ADOrganizationalUnit -Filter * -Property ProtectedFromAccidentalDeletion | `
                         Where{ $_.ProtectedFromAccidentalDeletion -eq $false } | `
                         Format-Table DistinguishedName

Seulement une OU concernée dans mon exemple, sur laquelle j’ai volontairement désactivé cette option :

Passons maintenant à l'activation de cette option sur l'ensemble des OUs où ce n'est pas actif.

III. Activer la protection sur toute les OU de l'annuaire

Plutôt que de devoir repointer une par une les OUs afin d'activer la protection manuellement là où elle n'est pas active, on va plutôt faire cela en PowerShell.

Pour cela, on reprend la commande qui permet de lister les OUs où l'option de protection n'est pas active, à laquelle on appliquera une commande supplémentaire sur la sortie : Set-ADOrganizationalUnit pour modifier une OU.

Autrement dit, à partir de la liste obtenue avec la commande précédente on indique que l'on souhaite activer l'option ProtectedFromAccidentalDeletion sur ces unités d'organisation, la « liste » étant envoyée via le pipeline.

Sans plus tarder, voici la commande :

Get-ADOrganizationalUnit -Filter * -Property ProtectedFromAccidentalDeletion | `
                    Where{ $_.ProtectedFromAccidentalDeletion -eq $false } | `
                    Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $true

Bonne nouvelle ! Suite à l'exécution de cette commande, vous pouvez être sûr que l'ensemble des Unités d'organisations de votre annuaire Active Directory sont protégées. Si vous souhaitez vous en assurer, c’est tout simple : il suffit d’exécuter à nouveau la première commande pour lister les OUs, et logiquement elle ne doit pas retourner la moindre OU.

Cette commande, simple finalement, vous permettra de faire un gain de temps conséquent.

IV. Protéger un autre objet : utilisateur, ordinateur, etc.

Maintenant que nos unités d’organisation sont protégées, il est intéressant d’ajouter cette protection sur les comptes utilisateurs et ordinateurs sensibles. Ce serait dommage que l’objet ordinateur correspondant au PC du DSI soit supprimé… Idem pour son compte utilisateur.

Pour protéger un objet, il va falloir le récupérer : par exemple via « Get-ADUser » pour un utilisateur, ou « Get-ADComputer » pour un ordinateur. Ensuite, l’objet sera modifié via Set-ADObject qui dispose de l’option ProtectedFromAccidentalDeletion comme le cmdlet dédié à la modification des OUs.

Pour protéger le compte Administrateur, voici la commande :

Get-ADUser -Identity "Administrateur" | `
     Set-ADObject -ProtectedFromAccidentalDeletion:$true

De la même façon, pour protéger l’ordinateur « PC-DSI » :

Get-ADComputer -Identity "PC-DSI" | `
  Set-ADObject -ProtectedFromAccidentalDeletion:$true

Grâce aux deux exemples ci-dessus, vous voyez bien que la logique reste la même et que c’est la récupération de l’objet ou des objets en entrée qui est différente.

Pour vérifier cette valeur, il faudra utiliser la commande Get-ADObject. Elle est utile, car elle permet de faire des requêtes très précises sur l’annuaire, peu importe le type d’objet.

Pour vérifier que notre compte « Administrateur » est bien protégé :

Get-ADObject -Filter {ObjectClass -eq "user" -and SamAccountName -eq "Administrateur"} -Properties ProtectedFromAccidentalDeletion

Voici le résultat :

Pour le PC, il faudra seulement modifier la classe d’objet (ObjectClass) et modifier le SamAccountName pour indiquer « PC-DSI$ » : le dollar à la fin est obligatoire sur un identifiant d’objet ordinateur.

Get-ADObject -Filter {ObjectClass -eq "computer" -and SamAccountName -eq "PC-DSI$"} -Properties ProtectedFromAccidentalDeletion

Le tour est joué, maintenant à vous d’activer ces options sur les objets qui sont précieux au niveau de votre infrastructure.

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail