GeneratePassword – PowerShell ile unique ve complex AD user şifresi oluşturma

Okuma süresi - 3 dk.


Active Directory’de yeni kullanıcı hesapları oluştururken, yönetici her hesap için unique olacak şekilde bir parola belirler ve bu parolayı kullanıcıya söyler. Genellikle ilk kez oturum açıldığında, kullanıcıdan bu parolayı “User must change password at next logon” seçeneği ile değiştirmesi istenir. Her kullanıcı için yeni bir şifre oluşturmak istemiyorsanız veya AD hesapları oluşturmak için bir PowerShell kullanıyorsanız, basit bir PowerShell betiği kullanarak otomatik olarak unique parolalar oluşturabilirsiniz.

Parola oluşturmak için .NET’in System.Web.Security.Membership class’ından GeneratePassword method’unu kullanabilirsiniz. Aşağıdaki PowerShell komutlarını kullanarak güçlü bir şifre oluşturalım.

# Import System.Web assembly
Add-Type -AssemblyName System.Web
# Generate random password
[System.Web.Security.Membership]::GeneratePassword(9,3)

GeneratePassword method’u 128 karaktere kadar bir parola oluşturulmasını sağlar. Method, iki ​​parametre kullanır. Şifre uzunluğu (benim durumumda 9 karakter) ve minimum alfabetik olmayan veya sayısal olmayan özel karakter sayısı. Örneğin; !, -, $, &, @, #, %,
(benim örneğimde 2 özel karakter). Gördüğünüz gibi, bu argümanlara göre benim için c}PxWP#;5 şifresi üretildi.

Son kullanıcı hatalarının önüne geçebilmek için bir kullanıcı şifresinde bir veya iki özel karakterden fazla kullanılması önerilmez.

New-ADUser PowerShell cmdlet’iyle yeni kullanıcılar oluşturursanız ve bunlar için benzersiz şifreler ayarlamak istiyorsanız, aşağıdaki komutları kullanabilirsiniz.

Add-Type -AssemblyName System.Web
New-ADUser -Name “Mathilda Tender” -GivenName “Mathilda” -Surname “Tender” -SamAccountName “mathilda” -UserPrincipalName “mathilda@teknolojikadam.com” -Path “OU=Users,OU=Sales,OU=TR,DC=teknolojikadam,DC=com” –AccountPassword ([System.Web.Security.Membership]::GeneratePassword(8,2)) -ChangePasswordAtLogon $true -Enabled $true

Şirketiniz güçlü bir şifre politikası kullanıyorsa, bazı durumlarda GeneratePassword yöntemiyle oluşturulan bir şifre, AD domain password policy gereksinimlerini karşılamayabilir. Bir kullanıcıya parola ayarlamadan önce parolanın password complexity policy’e uygun olduğundan emin olmalısınız. Parolanın “Password must meet complexity requirements” policy’de bulunan en az 3 gereksinimini karşılayıp karşılamadığını kontrol edebilirsiniz. Parola aşağıdaki listeden en az 3 tür karakter içermelidir. Sayılar, küçük harfler, büyük karakterler ve özel karakter gibi. Parola denetimi başarısız olursa, yeniden oluşturmanız gerekir.

Aşağıda, yeni bir parola üreten ve rastgele üretilen parolanın, parola karmaşıklığı gereksinimi karşılayıp karşılamadığını denetleyen PowerShell komutunu inceleyebilirsiniz.

Function GenerateStrongPassword ([Parameter(Mandatory=$true)][int]$PasswordLenght)
{
Add-Type -AssemblyName System.Web
$PassComplexCheck = $false
do {
$newPassword=[System.Web.Security.Membership]::GeneratePassword($PasswordLenght,1)
If ( ($newPassword -cmatch “[A-Z\p{Lu}\s]”) `
-and ($newPassword -cmatch “[a-z\p{Ll}\s]”) `
-and ($newPassword -match “[\d]”) `
-and ($newPassword -match “[^\w]”)
)
{
$PassComplexCheck=$True
}
} While ($PassComplexCheck -eq $false)
return $newPassword
}

5 karakterden ve en az bir özel karakterden oluşan bir şifre oluşturmak için aşağıdaki komutu çalıştırabilirsiniz.

GenerateStrongPassword (5)

**Bu komut, her zaman AD password complexity policy’i karşılayan bir parola oluşturacaktır.