Lors de la création de nouveaux comptes utilisateurs dans Active Directory, la procédure habituelle consiste à leur attribuer un mot de passe initial temporaire. Ce mot de passe est généralement unique et généré aléatoirement, et l’utilisateur est invité à le modifier lors de sa première connexion (c’est là qu’intervient l’option « L’utilisateur doit changer son mot de passe à la prochaine connexion », configurée via l’attribut userAccountControl ).Si vous effectuez cette opération manuellement, ce n’est pas trop contraignant ; mais lorsque vous créez un grand nombre de comptes, par exemple à l’aide d’un script PowerShell, saisir un mot de passe aléatoire pour chacun d’eux devient vite fastidieux. C’est là qu’un générateur de mots de passe automatisé peut vous faire gagner un temps précieux et garantir que tous les mots de passe sont robustes et uniques, sans que vous ayez à vous arracher les cheveux.
Une méthode simple pour générer des mots de passe avec PowerShell consiste à utiliser la méthode GeneratePassword de la classe System. Web. Security. Membership. Je l’ai testée sur mon ordinateur et elle est très fiable. Voici un bref aperçu de son fonctionnement, ainsi que quelques conseils supplémentaires pour éviter les mots de passe non conformes à la politique de votre entreprise ou tout simplement pénibles à saisir.
Comment générer des mots de passe sécurisés pour les utilisateurs d’Active Directory
Méthode 1 : Génération de mot de passe basique avec GeneratePassword
Cette méthode est simple. Elle convient si votre politique de mots de passe n’est pas trop stricte. Elle vous permet de spécifier la longueur du mot de passe et le nombre de caractères spéciaux qu’il contient. Sur certaines configurations, elle peut générer un mot de passe légèrement trop complexe ou ne répondant pas à tous vos critères de complexité ; il est donc conseillé d’en tester plusieurs pour trouver la configuration optimale, surtout si votre politique de mots de passe est stricte.
Voici comment procéder en PowerShell :
# Import the necessary assembly Add-Type -AssemblyName System. Web # Generate a password of 8 characters with 2 special characters [System. Web. Security. Membership]::GeneratePassword(8, 2)
Par exemple, le mot de passe généré pourrait ressembler à ceciQX.9ogy: : pas mal, mais attention : l’ajout de plus d’un ou deux caractères spéciaux peut rendre la saisie difficile, surtout avec certains claviers ou raccourcis. C’est un peu étrange, mais certains systèmes ont du mal avec les combinaisons trop complexes.
Méthode 2 : Création de nouveaux utilisateurs avec des mots de passe personnalisés
C’est là que ça devient pratique. Si vous créez un script de création de compte avec New-ADUser, vous pouvez intégrer directement le générateur de mots de passe dans votre script :
Add-Type -AssemblyName System. Web New-ADUser -Name "Jeremy Irons" ` -GivenName "Jeremy" ` -Surname "Irons" ` -SamAccountName "jirons" ` -UserPrincipalName "[email protected]" ` -Path "OU=Users, OU=Glasgow, OU=UK, DC=woshub, DC=com" ` -AccountPassword ( [System. Web. Security. Membership]::GeneratePassword(8, 2) ) ` -ChangePasswordAtLogon $true ` -Enabled $true
Ainsi, chaque nouvel utilisateur reçoit d’emblée un mot de passe aléatoire et relativement robuste. Attention toutefois : si votre stratégie Active Directory est stricte, il se peut que le mot de passe généré ne respecte pas les règles de complexité. Dans ce cas, il faudra peut-être le vérifier ou le régénérer. Vous pouvez également utiliser la même méthode pour réinitialiser les mots de passe ultérieurement : il suffit d’en générer un nouveau et de l’appliquer.
Méthode 3 : S’assurer que les mots de passe respectent les exigences de complexité de votre domaine
Cette partie est un peu délicate. Les politiques de mots de passe d’Active Directory exigent souvent non seulement une longueur, mais aussi une complexité : au moins trois types de caractères : majuscules, minuscules, chiffres et caractères spéciaux. La méthode GeneratePassword ne le garantit pas, et un mot de passe faible ou non conforme peut donc passer entre les mailles du filet. Pour pallier ce problème, un peu de script s’avère utile afin de générer des mots de passe aléatoires mais conformes.
J’ai créé une petite fonction PowerShell qui génère des résultats en continu jusqu’à ce qu’elle atteigne le seuil de complexité requis. Voici le principe :
Function GenerateStrongPassword ([Parameter(Mandatory=$true)][int]$PasswordLength) { Add-Type -AssemblyName System. Web $PassComplexCheck = $false do { $newPassword = [System. Web. Security. Membership]::GeneratePassword($PasswordLength, 1) if ( ($newPassword -cmatch "[A-Z]") -and ($newPassword -cmatch "[a-z]") -and ($newPassword -cmatch "[\d]") -and ($newPassword -cmatch "[^\w]") ) { $PassComplexCheck = $true } } while (-not $PassComplexCheck) $newPassword }
Lorsque vous exécutez ce programme GenerateStrongPassword (5), il génère en continu des mots de passe de 5 caractères contenant au moins un caractère spécial, et ne s’arrête que lorsque le mot de passe remplit tous les critères. Son fonctionnement exact reste incertain, mais il produit généralement des mots de passe conformes même aux politiques de sécurité les plus strictes. Attention toutefois : les mots de passe courts peuvent être plus difficiles à mémoriser pour les utilisateurs, ou ne pas être acceptés si votre politique est particulièrement exigeante.
Bref, une fois le mot de passe validé généré, vous pouvez l’attribuer au compte utilisateur ou réinitialiser son mot de passe en toute sécurité. Le script permet de garantir que le mot de passe est non seulement robuste mais aussi conforme aux politiques de sécurité, ce qui vous évitera bien des soucis par la suite.
Résumé
- À utiliser
[System. Web. Security. Membership]::GeneratePassword()pour créer rapidement des mots de passe aléatoires. - Intégrez cela dans vos scripts de création d’utilisateurs AD pour automatiser la création des comptes.
- Si les mots de passe doivent respecter des politiques complexes, écrivez une petite boucle pour les générer et les vérifier jusqu’à ce qu’ils soient conformes.
- Testez les mots de passe générés pour éviter la frustration des utilisateurs, surtout si votre politique est stricte.
Conclure
Voici une solution qui a fonctionné sur plusieurs configurations et qui, je l’espère, simplifiera légèrement la création de nouveaux comptes Active Directory. Comme toujours, vérifiez attentivement vos politiques de mots de passe avant de déployer ce type de script, sous peine de devoir régénérer manuellement un grand nombre de mots de passe. Croisons les doigts pour que l’intégration de vos utilisateurs reste fluide et sécurisée.