Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows Server

การใช้ PowerShell Just Enough Administration (JEA) เพื่อมอบสิทธิ์ให้กับผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบ

การบริหารที่เพียงพอ (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

การใช้ PowerShell Just Enough Administration (JEA) เพื่อมอบสิทธิ์ให้กับผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบ

ชุดไฟล์ 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
คุณสามารถใช้บัญชีบริการที่มีการจัดการกลุ่ม (gMSA) เพื่อเข้าถึงทรัพยากรเครือข่าย:GroupManagedServiceAccount = 'woshub\gMSAJEAUser'

ในคำสั่ง RoleDefinitions ให้ระบุกลุ่มความปลอดภัย AD ที่อนุญาตให้เชื่อมต่อกับเซสชัน PowerShell และชื่อของบทบาท JEA (ต้องตรงกับชื่อไฟล์ PSRC ที่เราจะสร้างในภายหลัง)

ตัวอย่างเช่น:

RoleDefinitions = @{‘woshub.com\HelpDesk' = @{ RoleCapabilities = 'HelpDesk_admins' }}

การใช้ PowerShell Just Enough Administration (JEA) เพื่อมอบสิทธิ์ให้กับผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบ

บันทึกไฟล์การกำหนดค่าเซสชัน

ก่อนดำเนินการต่อ ตรวจสอบให้แน่ใจว่าไม่มีข้อผิดพลาดในไฟล์การกำหนดค่า:

Test-PSSessionConfigurationFile -Path  'C:\Program Files\WindowsPowerShell\dc_manage.pssc'

การใช้ PowerShell Just Enough Administration (JEA) เพื่อมอบสิทธิ์ให้กับผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบ

สร้างไดเร็กทอรีใหม่เพื่อเก็บไฟล์คอนฟิกูเรชัน JEA เช่น:

New-Item -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities ' -ItemType Directory

PSRC ไฟล์ต้องอยู่ใน RoleCapabilities . เสมอ โฟลเดอร์ย่อยของโมดูลที่เกี่ยวข้อง

จากนั้นสร้างไฟล์การกำหนดค่า 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 ของคุณ

การใช้ PowerShell Just Enough Administration (JEA) เพื่อมอบสิทธิ์ให้กับผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบ

จากนั้นลงทะเบียนการกำหนดค่า PSSession ใหม่สำหรับไฟล์ PSSC ของคุณ:

Register-PSSessionConfiguration –Name testHelpDesk -Path 'C:\Program Files\WindowsPowerShell\dc_manage.pssc'

และรีสตาร์ท WinRM:

Restart-Service WinRM

การใช้ PowerShell Just Enough Administration (JEA) เพื่อมอบสิทธิ์ให้กับผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบ

คุณแสดงรายการปลายทาง JEA ที่ใช้งานได้:

Get-PSSessionConfiguration|ft name

การใช้ PowerShell Just Enough Administration (JEA) เพื่อมอบสิทธิ์ให้กับผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบ

มาดูกันว่าการกำหนดค่า 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

การใช้ PowerShell Just Enough Administration (JEA) เพื่อมอบสิทธิ์ให้กับผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบ

ประวัติการดำเนินการของผู้ใช้ทั้งหมดในเซสชัน JEA PowerShell จะถูกบันทึกลงในไฟล์ใน C:\PS\JEA_logs

การใช้ PowerShell Just Enough Administration (JEA) เพื่อมอบสิทธิ์ให้กับผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบ

ดังนั้น JEA อนุญาตให้คุณให้สิทธิ์ผู้ใช้ในการเข้าถึงแบบละเอียดเพื่อเรียกใช้ cmdlet ของ PowerShell สคริปต์หรือโปรแกรมเฉพาะในฐานะผู้ดูแลระบบ