บัญชีบริการที่มีการจัดการ (MSA ) เป็นบัญชี Active Directory ชนิดพิเศษที่สามารถใช้เพื่อเรียกใช้บริการ แอปพลิเคชัน และงานตามกำหนดเวลาได้อย่างปลอดภัย แนวคิดพื้นฐานคือรหัสผ่านสำหรับบัญชีเหล่านี้ได้รับการจัดการโดย Active Directory รหัสผ่านที่ซับซ้อนซึ่งมีความยาว 240 อักขระจะถูกสร้างขึ้นโดยอัตโนมัติสำหรับพวกเขา ซึ่งจะเปลี่ยนโดยอัตโนมัติ (โดยค่าเริ่มต้น ทุกๆ 30 วัน) เฉพาะ Kerberos เท่านั้นที่ใช้สำหรับการรับรองความถูกต้อง (ไม่มีปัญหาด้านความปลอดภัย NTLM) ไม่อนุญาตให้เข้าสู่ระบบแบบโต้ตอบ ไม่มีใครรู้จักรหัสผ่านและไม่ได้จัดเก็บไว้ในระบบภายในเครื่อง (คุณไม่สามารถแยกรหัสผ่านจากกระบวนการระบบ LSASS ด้วย mimikatz หรือสิ่งที่คล้ายคลึงกัน เครื่องมือ). ด้วยวิธีนี้ ในการเริ่มบริการหรืองานที่ไม่มีผู้ดูแล คุณไม่จำเป็นต้องสร้างผู้ใช้บริการแต่ละรายใน AD และจัดการรหัสผ่านของพวกเขา
บัญชีบริการที่มีการจัดการ ถูกนำมาใช้ใน Windows Server 2008 R2 (ประเภทอ็อบเจ็กต์ msDS-ManagedServiceAccount
). ข้อจำกัดหลักของพวกเขาคือบัญชีดังกล่าวสามารถใช้ได้บนเซิร์ฟเวอร์เดียวเท่านั้น (ไม่สามารถใช้ในบริการคลัสเตอร์และร้อง) ดังนั้น Windows Server 2012 จึงแนะนำบัญชีบริการที่มีการจัดการกลุ่ม/gMSA (ประเภท msDS-GroupManagedServiceAccount
). บัญชี gMSA สามารถใช้ได้พร้อมกันในหลายโฮสต์
มาพิจารณาคุณลักษณะของการใช้ MSA และ gMSA เพื่อเปิดบริการและงานบนเซิร์ฟเวอร์และเวิร์กสเตชันใน Active Directory
ข้อกำหนดสำหรับการใช้บัญชีบริการ MSA/gMSA:
บัญชีบริการที่มีการจัดการ | บัญชีบริการที่มีการจัดการกลุ่ม | |
โดเมน AD และระดับการทำงานของฟอเรสต์ | Windows Server 2008 R2 หรือใหม่กว่า | Windows Server 2012 หรือใหม่กว่า |
KDC | ตัวควบคุมโดเมนที่เปิดใช้งาน Microsoft Key Distribution Service (KdsSvc) | |
PowerShell | ในการสร้างและจัดการบัญชี AD ของบริการ คุณต้องติดตั้งโมดูล Active Directory สำหรับ Windows PowerShell | |
.Net Framework | ต้องติดตั้ง.NET Framework 3.5 หรือใหม่กว่าบนเซิร์ฟเวอร์ | |
เวอร์ชัน Windows ที่รองรับ | Windows 7/Windows Server 2008 R2 หรือใหม่กว่า | Windows Server 2012/Windows 8 หรือใหม่กว่า |
สร้างคีย์บริการการกระจายคีย์ (KDS)
ก่อนที่คุณจะเริ่มสร้างบัญชี MSA/gMSA คุณต้องดำเนินการแบบครั้งเดียวและสร้างคีย์รูท KDS ในการดำเนินการ ให้เรียกใช้คำสั่ง PowerShell ต่อไปนี้บนตัวควบคุมโดเมน (ต้องติดตั้งและเรียกใช้ Microsoft Key Distribution Services):
Add-KdsRootKey –EffectiveImmediately
ในกรณีนี้ คีย์จะถูกสร้างขึ้นและจะพร้อมใช้งานภายใน 10 ชั่วโมงหลังจากการจำลองแบบ AD สิ้นสุดลง
เคล็ดลับ หากต้องการใช้คีย์ทันทีในสภาพแวดล้อมการทดสอบ คุณสามารถเรียกใช้คำสั่งนี้:Add-KdsRootKey –EffectiveTime ((get-date).addhours(-10))
ตรวจสอบให้แน่ใจว่าสร้างคีย์รูท KDS สำเร็จแล้ว:Get-KdsRootKey
ใช้คำสั่งเพื่อตรวจสอบคีย์ KDS:
Test-KdsRootKey -KeyId (Get-KdsRootKey).KeyId
วิธีการสร้างบัญชี MSA ที่มีการจัดการใน Active Directory
ในการสร้างบัญชีที่จัดการ MSA ใหม่ใน AD ให้ใช้คำสั่ง:
New-ADServiceAccount -Name msaMunSrv1 –RestrictToSingleComputer
โดยค่าเริ่มต้น MSA และ gMSA จะถูกสร้างขึ้นในคอนเทนเนอร์ CN=Managed Service Accounts แต่คุณสามารถเปลี่ยน OU ได้โดยใช้ เส้นทาง พารามิเตอร์
เชื่อมโยงบัญชีบริการ MSA ของคุณกับคอมพิวเตอร์เป้าหมาย:
$Identity = Get-ADComputer -identity mun-srv01
Add-ADComputerServiceAccount -Identity $identity -ServiceAccount msaMunSrv1
เปิดคอนโซล ADUC (ผู้ใช้และคอมพิวเตอร์ของ Active Directory) และตรวจสอบให้แน่ใจว่าบัญชีใหม่ประเภท msDS-ManagedServiceAccount ปรากฏใน บัญชีบริการที่มีการจัดการ คอนเทนเนอร์ (OU)
คอนเทนเนอร์ AD นี้ถูกซ่อนไว้โดยค่าเริ่มต้น หากต้องการดู ให้เปิดใช้งาน คุณลักษณะขั้นสูง ใน มุมมอง เมนูของสแนปอิน
คุณสามารถรับข้อมูลบัญชี MSA ได้โดยใช้คำสั่ง:
Get-ADServiceAccount msaMunSrv1
สร้างบัญชีบริการที่มีการจัดการกลุ่ม (gMSA) ใน Active Directory
ก่อนสร้างบัญชี gMSA ให้สร้างกลุ่มความปลอดภัยของโดเมนและเพิ่มเซิร์ฟเวอร์ในบัญชีที่จะได้รับอนุญาตให้ใช้รหัสผ่านสำหรับบัญชีบริการกลุ่มนี้ วิธีที่ง่ายที่สุดในการสร้างและเติมข้อมูลกลุ่มคือการใช้ PowerShell:New-ADGroup grMunSQL1 -path 'OU=Groups,OU=Munich,OU=DE,dc=woshub,DC=com' -GroupScope Global -PassThru –Verbose
Add-AdGroupMember -Identity grMunSQL1 -Members mun-sql01$, mun-sql02$, mun-sql03$
ในการสร้างบัญชีบริการที่มีการจัดการกลุ่ม (gMSA) ให้ใช้คำสั่ง:
New-ADServiceAccount -name gmsaMunSQL1 -DNSHostName gmsaMunSQL1.woshub.com -PrincipalsAllowedToRetrieveManagedPassword grMunSQL1 –verbose
บัญชี gMSA จะถูกสร้างขึ้นตามค่าเริ่มต้นใน OU ของบัญชีบริการที่มีการจัดการ
การติดตั้งบัญชีบริการที่มีการจัดการแบบกลุ่มใน Windows
ในการใช้บัญชีบริการ MSA / gMSA บนเซิร์ฟเวอร์เป้าหมายหรือเวิร์กสเตชัน ก่อนอื่นคุณต้องติดตั้งโมดูล Active Directory PowerShell:
Add-WindowsFeature RSAT-AD-PowerShell
ติดตั้งบัญชีบริการ MSA (gMSA) บนเซิร์ฟเวอร์:
Install-ADServiceAccount -Identity gmsaMunSQL1
ตรวจสอบว่าติดตั้งบัญชีบริการถูกต้องหรือไม่:
Test-ADServiceAccount gmsaMunSQL1
หากคำสั่งส่งคืน จริง , ทุกอย่างได้รับการกำหนดค่าอย่างถูกต้อง
หากคำสั่งส่งคืน
False
เป็นไปได้มากว่าบัญชี MSA ไม่ได้ติดตั้งบนเซิร์ฟเวอร์หรือคอมพิวเตอร์เครื่องนี้ไม่มีสิทธิ์ในการใช้งาน:
WARNING: Test failed for Managed Service Account gmsaMunSQL1. If standalone Managed Service Account, the account is linked to another computer object in the Active Directory. If group Managed Service Account, either this computer does not have permission to use the group MSA or this computer does not support all the Kerberos encryption types required for the gMSA.
คุณไม่สามารถใช้ RunAs มาตรฐานเพื่อตรวจสอบว่าบริการและสคริปต์ของคุณสามารถทำงานภายใต้บัญชีบริการ MSA ได้ ใช้เครื่องมือ PsExec แทน (ก่อนหน้านี้เราได้แสดงให้คุณเห็นถึงวิธีใช้ psexec เพื่อเรียกใช้พรอมต์คำสั่งในนามของ NT Authority\System)
- เปิดพรอมต์คำสั่งในฐานะผู้ดูแลระบบ
- เรียกใช้คำสั่ง:
PsExec64.exe -i -u woshub\gmsaMunSQL1$ -p ~ cmd.exe
แทนที่รหัสผ่านด้วย ~ . ซึ่งหมายความว่าต้องได้รับรหัสผ่านจาก AD - ในหน้าต่าง cmd ที่เปิดขึ้น ให้เรียกใช้
whoami
คำสั่งเพื่อให้แน่ใจว่าคอนโซลทำงานภายใต้บัญชี gMSA - ตรวจสอบว่าสคริปต์ โปรแกรม หรือบริการทำงานอย่างถูกต้องภายใต้บัญชีบริการที่มีการจัดการ
ตอนนี้ยังคงต้องกำหนดค่าบริการ Windows ที่จำเป็น งานตัวกำหนดเวลางาน พูล IIS เป็นต้น เพื่อให้ทำงานเป็นผู้ใช้ MSA/gMSA
จะเรียกใช้บริการ Windows ภายใต้บัญชีบริการที่มีการจัดการได้อย่างไร
ตอนนี้คุณกำหนดค่าบริการ Windows ที่จำเป็นให้ทำงานภายใต้บัญชี MSA/gMSA ได้แล้ว
- เปิดคอนโซลการจัดการบริการ (
services.msc
); - เปิดคุณสมบัติของบริการที่จำเป็นและไปที่ “เข้าสู่ระบบ ” แท็บ;
- เลือก บัญชีนี้ ตัวเลือกและป้อนชื่อบัญชี MSA อย่าลืมเพิ่ม $ สัญลักษณ์ที่ท้ายชื่อบัญชี (คุณไม่จำเป็นต้องป้อนรหัสผ่านบัญชี)
- บัญชีบริการ MSA จะได้รับโดยอัตโนมัติ เข้าสู่ระบบในฐานะบริการ สิทธิ์;
- หลังจากบันทึกการเปลี่ยนแปลงแล้ว ต้องเริ่มบริการใหม่
การเรียกใช้งานที่กำหนดเวลาไว้ด้วยบัญชีบริการที่มีการจัดการ/gMSA
คุณสามารถกำหนดค่า Windows Task Scheduler เพื่อเรียกใช้งานภายใต้บัญชีบริการ gMSA สะดวกเพราะว่ารหัสผ่านสำหรับบัญชี gMSA ไม่ได้จัดเก็บไว้ในสคริปต์ คุณไม่จำเป็นต้องเข้ารหัสหรือป้องกัน เมื่อรหัสผ่านเปลี่ยน คุณไม่จำเป็นต้องกำหนดค่างานใหม่
ในการให้สิทธิ์กับบัญชี MSA/gMSA การเพิ่มไปยังกลุ่มความปลอดภัยที่จำเป็นก็เพียงพอแล้ว ตัวอย่างเช่น ไปยังกลุ่มผู้ดูแลระบบภายใน, ผู้ดูแลระบบโดเมน, ผู้ดูแลระบบ DNS เป็นต้นคุณสามารถกำหนดค่างานให้ทำงานเป็นบัญชี gMSA โดยใช้ PowerShell ตัวอย่างเช่น สคริปต์ต่อไปนี้จะสร้างงานที่กำหนดเวลาไว้ใหม่ซึ่งเรียกใช้สคริปต์ PowerShell ทุกวันเวลา 23:00 น. เพื่อสำรองฐานข้อมูล:
$action = New-ScheduledTaskAction -Execute powershell.exe -Argument "-file C:\PS\Scripts\DBBackup.ps1 -executionpolicy bypass -NoProfile"
$trigger = New-ScheduledTaskTrigger -At 23:00 -Daily
$principal = New-ScheduledTaskPrincipal -UserID woshub\gmsaMunSQL1$ -LogonType Password
Register-ScheduledTask DBBackup –Action $action –Trigger $trigger –Principal $principal
เคล็ดลับ ในการเรียกใช้งานที่กำหนดเวลาไว้ คุณต้องให้สิทธิ์บัญชี gMSA “เข้าสู่ระบบเป็นงานชุดงาน " การอนุญาต.
'-LogonType Password
' อาร์กิวเมนต์ระบุว่ารหัสผ่านสำหรับบัญชี gMSA นี้จะถูกดึงมาจากตัวควบคุมโดเมน
คุณยังสามารถสร้างงานที่กำหนดเวลาไว้ด้วยการตั้งค่าที่ต้องการโดยใช้ taskschd.msc
กุย. จากนั้นคุณสามารถกำหนดค่าใหม่โดยใช้เครื่องมือ schtasks.exe เพื่อเรียกใช้ภายใต้บัญชีบริการที่มีการจัดการ:
schtasks /Change /TN BackupDB /RU "woshub\gmsaMunSQL1$" /RP ""