Menerapkan banyak kebijakan password dalam satu domain dengan Fine-Grained Password Policies: membuat Password Settings Objects dengan PowerShell, memahami atribut dan prioritas PSO, menautkannya ke user atau group, serta perbandingannya dengan Default Domain Policy.

Di episode 10 kalian mengatur password policy dan account lockout lewat GPO — dan mungkin kalian sudah bertanya: bagaimana kalau admin butuh password 16 karakter tapi user biasa cukup 10? Dengan GPO biasa, kebijakan password berlaku seragam untuk seluruh domain karena Default Domain Policy tidak bisa dibedakan per user. Episode 11 menjawab keterbatasan ini dengan Fine-Grained Password Policies (FGPP).
Kita akan membahas mengapa FGPP dibutuhkan, syarat domain functional level, apa itu Password Settings Objects (PSO), cara membuatnya dengan New-ADFineGrainedPasswordPolicy, atribut-atributnya, aturan precedence, cara menautkan ke user dan group, serta perbandingannya dengan Default Domain Policy.
Kebijakan password klasik punya satu kelemahan struktural: satu domain, satu kebijakan. Padahal populasi dalam satu domain heterogen:
Solusi naifnya adalah memecah menjadi banyak domain — tapi itu mahal dan kompleks. FGPP memberi kalian beberapa kebijakan password dalam satu domain yang sama, tanpa domain baru. Inilah jawaban yang tepat untuk sebagian besar organisasi.
Sebelum mulai, pastikan prasyarat terpenuhi:
Get-ADDomain dan properti DomainMode.Inti FGPP adalah Password Settings Object (PSO) — objek AD yang menyimpan satu set kebijakan password lengkap. PSO disimpan dalam Password Settings Container (di bawah CN=Password Settings Container,CN=System) dan direplikasi seperti objek AD lain. Sebuah PSO didefinisikan oleh sekumpulan atribut msDS-*, lalu diterapkan (di-subject) ke user atau group.
Cara paling praktis membuat PSO adalah cmdlet New-ADFineGrainedPasswordPolicy. Contoh untuk kebijakan admin yang lebih ketat:
$parameter = @{
Name = "PSO-Admin"
Precedence = 10
MinPasswordLength = 16
ComplexityEnabled = $true
PasswordHistoryCount = 24
MinPasswordAge = (New-TimeSpan -Days 2)
MaxPasswordAge = (New-TimeSpan -Days 90)
LockoutThreshold = 5
LockoutDuration = (New-TimeSpan -Minutes 30)
LockoutObservationWindow = (New-TimeSpan -Minutes 30)
}
New-ADFineGrainedPasswordPolicy @parameterPerhatikan pola splatting: parameter dikumpulkan dalam hashtable lalu dipanggil dengan @parameter — membuat perintah panjang tetap terbaca dan mudah diubah. New-TimeSpan dipakai untuk nilai durasi seperti umur password.
Setiap PSO diterjemahkan ke atribut msDS-* di AD:
| Atribut | Fungsi |
|---|---|
| msDS-PasswordSettingsPrecedence | Nomor prioritas; semakin kecil semakin menang |
| msDS-MinimumPasswordLength | Panjang minimum password |
| msDS-PasswordComplexityEnabled | Mengaktifkan kompleksitas |
| msDS-MinimumPasswordAge | Umur minimum sebelum password bisa diganti |
| msDS-MaximumPasswordAge | Umur maksimum sebelum kedaluwarsa |
| msDS-PasswordHistoryLength | Riwayat password yang tidak boleh diulang |
| msDS-LockoutThreshold | Ambang percobaan login gagal |
| msDS-LockoutDuration | Durasi akun terkunci |
Dengan memahami atribut ini, kalian bisa memetakan kebijakan GPO di episode 10 ke bentuk PSO — hanya saja kini cakupannya bisa berbeda-beda per kelompok.
Bagaimana AD memutuskan PSO mana yang berlaku jika user termasuk beberapa group yang punya PSO berbeda? Aturannya berurutan:
Menautkan PSO ke group dilakukan dengan Add-ADFineGrainedPasswordPolicySubject:
Add-ADFineGrainedPasswordPolicySubject -Identity "PSO-Admin" -Subjects "Domain Admins", "Enterprise Admins"Strategi umum: buat beberapa PSO dengan selisih precedence yang jelas (misalnya 10, 20, 30) lalu tautkan ke group yang tepat. Anggota baru dari group admin otomatis dijatuhi kebijakan lebih ketat tanpa perubahan lain — inilah kekuatan penerapan berbasis group.
Default Domain Policy adalah kebijakan password bawaan yang berlaku untuk semua user di domain — tidak bisa dihapus dan menjadi fallback jika tidak ada PSO yang berlaku. FGPP bekerja di atasnya:
Praktik yang disarankan: biarkan Default Domain Policy sebagai jaring pengaman dengan nilai yang masuk akal untuk umum, lalu buat PSO khusus untuk kelompok yang butuh kebijakan berbeda (lebih ketat untuk admin, lebih longgar untuk kontraktor). Jangan mengandalkan Default Domain Policy sebagai satu-satunya kebijakan — FGPP adalah pelengkap yang membuat kebijakan benar-benar sesuai populasi.
Siklus hidup PSO dikelola dengan cmdlet yang konsisten:
Get-ADFineGrainedPasswordPolicy -Filter *
Set-ADFineGrainedPasswordPolicy -Identity "PSO-Admin" -MinPasswordLength 18Untuk memverifikasi kebijakan mana yang sebenarnya berlaku bagi seorang user:
Get-ADUserResultantPasswordPolicy -Identity budi.santosoGet-ADUserResultantPasswordPolicy adalah alat paling berharga dalam troubleshooting FGPP: ia menampilkan kebijakan hasil akhir setelah seluruh aturan precedence diterapkan. Bila user tidak mendapat PSO yang diharapkan, periksa urutan precedence dan keanggotaan group-nya. Keluarkan user dari subjek PSO dengan Remove-ADFineGrainedPasswordPolicySubject jika diperlukan.
Episode 11 ini melengkapi puzzle kebijakan password: kalian memahami mengapa FGPP dibutuhkan ketika populasi domain heterogen, syarat domain functional level Windows Server 2008 ke atas, apa itu Password Settings Objects, membuat PSO dengan New-ADFineGrainedPasswordPolicy, membaca atribut msDS-* yang mendasarinya, aturan precedence yang menentukan PSO menang, menautkan PSO ke user dan group, serta memverifikasi dengan Get-ADUserResultantPasswordPolicy.
Inti yang harus dibawa pulang:
Kebijakan password yang baik hanyalah salah satu lapisan pertahanan. Di episode 12 kita membahas sisanya: Active Directory Security Best Practices — privileged access management, Protected Users group, model admin tier, keamanan service account, hardening DC, dan auditing. Sampai jumpa di episode 12!