Fine-Grained Password Policies (FGPP) ช่วยให้คุณสร้างนโยบายรหัสผ่านหลายรายการสำหรับผู้ใช้หรือกลุ่มเฉพาะ นโยบายรหัสผ่านหลายรายการพร้อมใช้งานตั้งแต่ Windows Server 2008 version ของ Active Directory ใน AD versions ก่อนหน้า คุณสามารถสร้างได้เพียงนโยบายรหัสผ่านเดียวต่อโดเมน (โดยใช้ Default Domain Policy)
ในบทความนี้ เราจะแสดงวิธีสร้างและกำหนดค่า Password Setting Objects หลายรายการในโดเมน Active Directory
محتويات:
- แนวคิดของ Fine-Grained Password Policies
- วิธีสร้าง Password Setting Policy (PSO) ใน Active Directory
- การกำหนดค่า Fine-Grained Password Policies (PSOs) ด้วย PowerShell
แนวคิดของ Fine-Grained Password Policies
Fine-Grained Password Policies ช่วยให้ผู้ดูแลระบบสร้าง Password Setting Objects (PSO) แบบกำหนดเองหลายรายการในโดเมน AD ใน PSOs คุณสามารถตั้งค่าข้อกำหนดของรหัสผ่าน (ความยาว ความซับซ้อน ประวัติ) และตัวเลือกการล็อกเอาต์ นโยบาย PSO สามารถมอบหมายให้กับผู้ใช้หรือกลุ่มเฉพาะ แต่ไม่ใช่ Active Directory containers (OUs) หากมีการมอบหมาย PSO ให้กับผู้ใช้ การตั้งค่านโยบายรหัสผ่านจาก Default Domain Policy GPO จะไม่ถูกนำไปใช้กับผู้ใช้นั้นอีกต่อไป
ตัวอย่างเช่น การใช้ FGPP policies คุณสามารถเพิ่มข้อกำหนดความยาวและความซับซ้อนของรหัสผ่านสำหรับบัญชีผู้ดูแล บัญชีบริการ หรือผู้ใช้ที่มีการเข้าถึงทรัพยากรโดเมนจากภายนอก (ผ่าน VPN หรือ DirectAccess)
ข้อกำหนดพื้นฐานสำหรับการใช้ FGPP password policies หลายรายการในโดเมน:
- Domain functional level ของ Windows Server 2008 domain หรือใหม่กว่า
- Password policies สามารถมอบหมายให้กับผู้ใช้หรือ Global (!) security groups
- FGPP ถูกนำไปใช้ทั้งหมด (คุณไม่สามารถตั้งค่าการตั้งค่ารหัสผ่านบางส่วนใน GPO และบางส่วนใน FGPP)
วิธีสร้าง Password Setting Policy (PSO) ใน Active Directory
ใน Windows Server 2012 และใหม่กว่า คุณสามารถสร้างและแก้ไข Fine-Grained Password Policies จากอินเทอร์เฟซกราฟิกของคอนโซล Active Directory Administration Center (ADAC)
AD version นี้ยังรวมถึง Active Directory Recycle Bin ซึ่งช่วยให้คุณกู้คืน AD objects ที่ลบได้ และ Managed Service Accounts (gMSA)
ในตัวอย่างนี้ เราจะแสดงวิธีสร้างและมอบหมายนโยบายรหัสผ่านแยกต่างหากสำหรับกลุ่ม Domain Admins
เริ่ม Active Directory Administrative Center (dsac.msc) สลับไปที่ tree view และขยาย container System หา Password Settings Container คลิกขวา และเลือก New -> Password Settings.

ระบุชื่อของนโยบายรหัสผ่าน (ในตัวอย่างของเราคือ Password Policy for Domain Admins) และกำหนดค่าการตั้งค่าของมัน (ความยาวขั้นต่ำและความซับซ้อนของรหัสผ่าน จำนวนรหัสผ่านที่จัดเก็บในประวัติ การตั้งค่าล็อกเอาต์ ความถี่ในการเปลี่ยนรหัสผ่าน ฯลฯ)
พารามิเตอร์แต่ละอันของ PSO (คลาส msDS-PasswordSettings) ถูกอธิบายโดยแอตทริบิวต์ AD แยกต่างหาก:
- msDS-LockoutDuration
- msDS-LockoutObservationWindow
- msDS-LockoutThreshold
- msDS-MaximumPasswordAge
- msDS-MinimumPasswordAge
- msDS-MinimumPasswordLength
- msDS-PasswordComplexityEnabled
- msDS-PasswordHistoryLength
- msDS-PasswordReversibleEncryptionEnabled
- msDS-PasswordSettingsPrecedence
โปรดใส่ใจถึงแอตทริบิวต์ Precedence แอตทริบิวต์นี้กำหนดความสำคัญของนโยบายรหัสผ่านปัจจุบัน หาก object มี FGPP policies หลายรายการมอบหมายให้ นโยบายที่มีค่าต่ำสุดในฟิลด์ Precedence จะถูกนำไปใช้
หมายเหตุ:
- หากผู้ใช้มีนโยบายสองรายการที่มีค่า Precedence เท่ากัน นโยบายที่มี GUID ต่ำกว่าจะถูกนำไปใช้
- หากผู้ใช้มีนโยบายหลายรายการมอบหมาย และหนึ่งในนั้นเปิดใช้งานผ่าน AD security group อีกหนึ่งมอบหมายให้กับบัญชีผู้ใช้โดยตรง นโยบายที่มอบหมายให้กับบัญชีจะถูกนำไปใช้
จากนั้นเพิ่มกลุ่มหรือผู้ใช้ในส่วน Direct Applies To เพื่อนำนโยบายไปใช้ (ในกรณีของเราคือ Domain Admins) เราแนะนำให้ใช้ PSO policy กับกลุ่มแทนที่จะเป็นผู้ใช้รายบุคคล บันทึกนโยบาย

หลังจากนั้น นโยบายรหัสผ่านนี้จะถูกนำไปใช้กับสมาชิกทั้งหมดของกลุ่ม Domain Admins
เริ่มคอนโซล Active Directory Users and Computers (dsa.msc) (พร้อมตัวเลือก Advanced Features) และเปิดคุณสมบัติของผู้ใช้รายใดจากกลุ่ม Domain Admins ไปที่แท็บ Attribute Editor และเลือกตัวเลือก Constructed ในฟิลด์ Filter
หาแอตทริบิวต์ผู้ใช้ msDS-ResultantPSO แอตทริบิวต์นี้แสดงนโยบายรหัสผ่านที่เปิดใช้งานสำหรับผู้ใช้ (CN=Password Policy for Domain Admin,CN=Password Settings Container,CN=System,DC=woshub,DC=com)

คุณยังสามารถดู PSO policy ปัจจุบันสำหรับผู้ใช้โดยใช้เครื่องมือ dsget:
dsget user "CN=Max,OU=Admins,DC=woshub,DC=com" –effectivepso

การกำหนดค่า Fine-Grained Password Policies (PSOs) ด้วย PowerShell
คุณสามารถจัดการ PSO password policies ด้วย PowerShell (โมดูล Active Directory PowerShell ต้องติดตั้งบนคอมพิวเตอร์ของคุณ)
คอมมานด์เลต New-ADFineGrainedPasswordPolicy ใช้สำหรับสร้าง PSO ใหม่:
New-ADFineGrainedPasswordPolicy -Name “Admin PSO Policy” -Precedence 10 -ComplexityEnabled $true -Description “Domain password policy for admins”-DisplayName “Admin PSO Policy” -LockoutDuration “0.20:00:00” -LockoutObservationWindow “0.00:30:00” -LockoutThreshold 6 -MaxPasswordAge “12.00:00:00” -MinPasswordAge “1.00:00:00” -MinPasswordLength 8 -PasswordHistoryCount 12 -ReversibleEncryptionEnabled $false
ตอนนี้คุณสามารถมอบนโยบายรหัสผ่านให้กับกลุ่มผู้ใช้:
Add-ADFineGrainedPasswordPolicySubject “Admin PSO Policy” -Subjects “Domain Admins”

เพื่อเปลี่ยนการตั้งค่า PSO policy:
Set-ADFineGrainedPasswordPolicy "Admin PSO Policy" -PasswordHistoryCount:"12"
แสดงรายการ FGPP policies ทั้งหมดในโดเมน:
Get-ADFineGrainedPasswordPolicy -Filter *

ใช้คำสั่ง Get-ADUserResultantPasswordPolicy เพื่อดูนโยบายรหัสผ่านที่เป็นผลลัพธ์ที่ใช้กับผู้ใช้เฉพาะ
Get-ADUserResultantPasswordPolicy -Identity jsmith

ชื่อของ PSO ที่ใช้กับผู้ใช้ระบุในฟิลด์ Name
คุณสามารถแสดงรายการ PSO policies ที่มอบหมายให้กับกลุ่ม Active Directory โดยใช้คอมมานด์เลต Get-ADGroup:
Get-ADGroup "Domain Admins" -properties * | Select-Object msDS-PSOApplied
เพื่อแสดงการตั้งค่านโยบายรหัสผ่านเริ่มต้นจาก Default Domain Policy GPO ให้รันคำสั่ง:
Get-ADDefaultDomainPasswordPolicy
แม้จะใช้ Fine-Grained Password policies ผู้ใช้ยังคงสามารถใช้รหัสผ่านที่อ่อนแอได้ เช่น P@ssw0rd, Pa$$w0rd ฯลฯ เราแนะนำให้คุณตรวจสอบรหัสผ่านที่อ่อนแอของผู้ใช้ในโดเมนเป็นระยะ