การบริหารที่เพียงพอ (JEA ) ใช้งานได้ตั้งแต่ PowerShell เวอร์ชัน 5.0 และอนุญาตให้คุณมอบสิทธิ์ผู้ดูแลระบบให้กับทุกสิ่งที่คุณสามารถจัดการด้วย PowerShell ได้ วัตถุประสงค์หลักของ PowerShell JEA คือการจำกัดสิทธิ์ JEA อนุญาตให้คุณให้สิทธิ์ผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบเพื่อดำเนินการดูแลระบบเฉพาะโดยไม่ต้องให้สิทธิ์ผู้ดูแลระบบเซิร์ฟเวอร์หรือบริการ (AD, Exchange, SharePoint ฯลฯ ) เมื่อใช้ JEA คุณสามารถตั้งค่าว่าผู้ใช้รายใดสามารถเรียกใช้ cmdlet, ฟังก์ชันหรือสคริปต์ PowerShell เฉพาะที่มีสิทธิ์ของผู้ดูแลระบบและบันทึกการดำเนินการทั้งหมด (คล้ายกับประวัติคำสั่ง PowerShell)
วิธีการใช้ PowerShell เพียงแค่การดูแลที่เพียงพอ
ผู้ดูแลระบบสร้างไฟล์การกำหนดค่าเซสชัน PowerShell บนเซิร์ฟเวอร์ที่มีคำสั่งที่ผู้ใช้สามารถเรียกใช้ได้ ตำแหน่งข้อมูล JEA จะถูกสร้างขึ้นโดยอิงจากไฟล์ ซึ่งผู้ใช้สามารถเชื่อมต่อและดำเนินการคำสั่งหรือโปรแกรมใดๆ ที่สามารถใช้ได้
ที่นี่เราจะแสดงตัวอย่างวิธีการให้สิทธิ์ผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบในการรีบูตตัวควบคุมโดเมน และเริ่มบริการ DNS และ ADDS ใหม่
ในกรณีนี้ คุณไม่ได้ให้สิทธิ์การเข้าถึง RDP ไปยังตัวควบคุมโดเมนสำหรับผู้ใช้ มอบสิทธิ์ผู้ดูแลระบบใน AD มอบสิทธิ์ในบริการ Windows หรือรีสตาร์ทเซิร์ฟเวอร์ตามคำแนะนำตามลิงก์ ข้อจำกัดที่จำเป็นทั้งหมดถูกกำหนดไว้ในการกำหนดค่า Just Enough Administrationก่อนอื่น สร้างไฟล์การกำหนดค่าของเซสชัน PowerShell (*.pssc ). โดยเรียกใช้คำสั่งนี้บนตัวควบคุมโดเมนของคุณ:
New-PSSessionConfigurationFile -Path 'C:\Program Files\WindowsPowerShell\dc_manage.pssc'
เปิดไฟล์ PSSC โดยใช้ Notepad
ชุดไฟล์ PSSC ที่อาจเชื่อมต่อกับปลายทาง JEA นี้และภายใต้บัญชีใดที่คำสั่งในเซสชัน JEA จะทำงาน
แก้ไขค่าต่อไปนี้:
- ประเภทเซสชัน จากค่าเริ่มต้นเป็น RemoteServer ที่ถูกจำกัด . โหมดนี้อนุญาตให้ใช้ cmdlet ของ PowerShell ต่อไปนี้:Clear-Host, Exit-PSSession, Get-Command, Get-FormatData, Get-Help, Measure-Object, Out-Default หรือ Select-Objectl
- ระบุโฟลเดอร์ (สร้าง) ใน TranscriptDirectory พารามิเตอร์. คุณจะบันทึกการดำเนินการของผู้ใช้ JEA ทั้งหมดได้ที่นี่:
TranscriptDirectory = C:\PS\JEA_logs
- RunAsVirtualAccount ตัวเลือกอนุญาตให้เรียกใช้คำสั่งภายใต้บัญชีผู้ดูแลระบบเสมือน (สมาชิกของกลุ่มผู้ดูแลระบบภายในหรือผู้ดูแลระบบโดเมน):
RunAsVirtualAccount = $true
GroupManagedServiceAccount = 'woshub\gMSAJEAUser'
ในคำสั่ง RoleDefinitions ให้ระบุกลุ่มความปลอดภัย AD ที่อนุญาตให้เชื่อมต่อกับเซสชัน PowerShell และชื่อของบทบาท JEA (ต้องตรงกับชื่อไฟล์ PSRC ที่เราจะสร้างในภายหลัง)
ตัวอย่างเช่น:
RoleDefinitions = @{‘woshub.com\HelpDesk' = @{ RoleCapabilities = 'HelpDesk_admins' }}
บันทึกไฟล์การกำหนดค่าเซสชัน
ก่อนดำเนินการต่อ ตรวจสอบให้แน่ใจว่าไม่มีข้อผิดพลาดในไฟล์การกำหนดค่า:
Test-PSSessionConfigurationFile -Path 'C:\Program Files\WindowsPowerShell\dc_manage.pssc'
สร้างไดเร็กทอรีใหม่เพื่อเก็บไฟล์คอนฟิกูเรชัน JEA เช่น:
New-Item -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities ' -ItemType Directory
จากนั้นสร้างไฟล์การกำหนดค่า PSRC พร้อมคำอธิบายบทบาท (ใช้ชื่อไฟล์จากการกำหนดค่า PSSC ด้านบน)
New-PSRoleCapabilityFile -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities\HelpDesk_admins.psrc'
ไฟล์ PSRC ระบุสิ่งที่ได้รับอนุญาตให้ทำในเซสชัน JEA ปัจจุบัน ใน VisibleCmdlets คำสั่ง คุณอาจระบุ cmdlets (และพารามิเตอร์ที่ถูกต้อง) ที่อนุญาตให้ใช้สำหรับกลุ่มผู้ใช้ที่กำหนด
ใน VisibleExternalCommands คุณสามารถระบุคำสั่งภายนอกและไฟล์ EXE ที่อนุญาตให้เรียกใช้ได้
ตัวอย่างเช่น การกำหนดค่าต่อไปนี้อนุญาตให้ HelpDesk ให้ผู้ใช้รีสตาร์ทตัวควบคุมโดเมนโดยใช้คำสั่งปิดระบบหรือ Restart-Computer
cmdlet รวมถึงการรีสตาร์ท DNSServer และ Active Directory Domain Services โดยใช้ Restart-Service
cmdlet.
VisibleCmdlets = 'Restart-Computer', @{ Name = 'Restart-Service'; Parameters = @{ Name = 'Name'; ValidateSet = 'DNS', 'NTDS' }} VisibleExternalCommands = 'c:\windows\system32\shutdown.exe'
บันทึกไฟล์ PSRC ของคุณ
จากนั้นลงทะเบียนการกำหนดค่า PSSession ใหม่สำหรับไฟล์ PSSC ของคุณ:
Register-PSSessionConfiguration –Name testHelpDesk -Path 'C:\Program Files\WindowsPowerShell\dc_manage.pssc'
และรีสตาร์ท WinRM:
Restart-Service WinRM
คุณแสดงรายการปลายทาง JEA ที่ใช้งานได้:
Get-PSSessionConfiguration|ft name
มาดูกันว่าการกำหนดค่า Just-Enough-Administration (JEA) ใหม่ของเราทำงานอย่างไร คุณสามารถเชื่อมต่อกับปลายทาง JEA ที่สร้างขึ้นภายใต้บัญชีผู้ใช้จากกลุ่มความปลอดภัยที่ระบุในไฟล์การกำหนดค่า เชื่อมต่อกับตัวควบคุมโดเมนโดยใช้ PowerShell Remoting (คุณต้องระบุชื่อปลายทาง JEA):
Enter-PSSession -ComputerName dc01 -ConfigurationName testHelpDesk
ดูรายการ cmdlet ที่มีอยู่ในเซสชัน PowerShell ของคุณ:
Get-Command
อย่างที่คุณเห็น มีคำสั่งจำนวนเล็กน้อย ซึ่งรวมถึง Restart-Service และ Restart-Computer ผู้ใช้สามารถทำสิ่งที่เขาได้รับอนุญาตให้ทำเท่านั้น
ลองเริ่มบริการ DNS ใหม่:
Restart-Computer dns
เริ่มบริการใหม่ได้สำเร็จ (คำสั่งถูกเรียกใช้ในฐานะผู้ใช้ที่มีสิทธิ์โดยมีสิทธิ์ของผู้ดูแลระบบโดเมน)
หากคุณพยายามเริ่มบริการอื่นที่ไม่ได้อธิบายไว้ในไฟล์การกำหนดค่า JEA ข้อความแสดงข้อผิดพลาดต่อไปนี้จะปรากฏขึ้น:
Cannot validate argument on parameter 'Name'. The argument "spooler" does not belong to the set "DNS,NTDS" specifiedby the ValidateSet attribute. Supply an argument that is in the set and then try the command again. + CategoryInfo : InvalidData: (:) [Restart-Service], ParameterBindingValidationException
ประวัติการดำเนินการของผู้ใช้ทั้งหมดในเซสชัน JEA PowerShell จะถูกบันทึกลงในไฟล์ใน C:\PS\JEA_logs
ดังนั้น JEA อนุญาตให้คุณให้สิทธิ์ผู้ใช้ในการเข้าถึงแบบละเอียดเพื่อเรียกใช้ cmdlet ของ PowerShell สคริปต์หรือโปรแกรมเฉพาะในฐานะผู้ดูแลระบบ