Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows Server

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

ฟีเจอร์ Just Enough Administration (JEA) พร้อมใช้งานตั้งแต่ PowerShell เวอร์ชัน 5.0 ขึ้นไป และช่วยให้คุณมอบสิทธิ์ผู้ดูแลระบบให้กับทุกสิ่งที่คุณสามารถจัดการด้วย PowerShell ได้ วัตถุประสงค์หลักของ PowerShell JEA คือการจำกัดสิทธิ์ JEA ช่วยให้คุณมอบสิทธิ์ผู้ใช้ที่ไม่ใช่แอดมินให้ทำงานบริหารเฉพาะเจาะจงได้ โดยไม่ต้องให้สิทธิ์แอดมินของเซิร์ฟเวอร์หรือบริการ (AD, Exchange, SharePoint ฯลฯ) โดยใช้ JEA คุณสามารถกำหนดได้ว่าผู้ใช้คนไหนสามารถรัน Cmdlet, ฟังก์ชัน หรือสคริปต์ PowerShell เฉพาะเจาะจงด้วยสิทธิ์แอดมิน และบันทึกการกระทำทั้งหมด (คล้ายกับประวัติคำสั่ง PowerShell)

วิธีการนำ PowerShell Just Enough Administration ไปใช้

ผู้ดูแลระบบสร้างไฟล์การกำหนดค่าเซสชัน PowerShell (*.pssc) บนเซิร์ฟเวอร์ที่มีคำสั่งที่ผู้ใช้สามารถรันได้ จากไฟล์เหล่านี้ จะสร้าง JEA Endpoint ที่ผู้ใช้สามารถเชื่อมต่อและรันคำสั่งหรือโปรแกรมใดๆ ที่มีให้ใช้งานได้

ที่นี่เราจะแสดงตัวอย่างการให้สิทธิ์ผู้ใช้ที่ไม่ใช่แอดมินให้รีบูตโดเมนคอนโทรลเลอร์ และรีสตาร์ทบริการ DNS และ ADDS บนมัน

💡 ข้อดี: ในกรณีนี้ คุณไม่ต้องให้สิทธิ์ RDP เข้าถึงโดเมนคอนโทรลเลอร์สำหรับผู้ใช้ มอบสิทธิ์ผู้ดูแลใน AD กำหนดสิทธิ์บนบริการ Windows หรือการรีสตาร์ทเซิร์ฟเวอร์ตามคู่มือที่ลิงก์ไว้ ข้อจำกัดที่จำเป็นทั้งหมดถูกตั้งค่าในการกำหนดค่า Just Enough Administration

1. สร้างไฟล์การกำหนดค่าเซสชัน PowerShell (*.pssc)

รันคำสั่งนี้บนโดเมนคอนโทรลเลอร์ของคุณ:

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

เปิดไฟล์ PSSC ด้วย Notepad ไฟล์ PSSC กำหนดว่าใครสามารถเชื่อมต่อกับ JEA Endpoint นี้ได้ และภายใต้บัญชีใดที่คำสั่งในเซสชัน JEA จะทำงาน

2. แก้ไขค่าต่อไปนี้ในไฟล์ PSSC

  • SessionType จาก Default เป็น RestrictedRemoteServer โหมดนี้อนุญาตให้ใช้ PowerShell Cmdlet ต่อไปนี้: Clear-Host, Exit-PSSession, Get-Command, Get-FormatData, Get-Help, Measure-Object, Out-Default หรือ Select-Object
  • ระบุโฟลเดอร์ (สร้างขึ้น) ในพารามิเตอร์ TranscriptDirectory ที่นี่จะบันทึกการกระทำทั้งหมดของผู้ใช้ JEA: TranscriptDirectory = C:\PS\JEA_logs
  • ตัวเลือก RunAsVirtualAccount อนุญาตให้รันคำสั่งภายใต้บัญชีแอดมินเสมือน (เป็นสมาชิกของกลุ่ม Administrator ท้องถิ่นหรือ Domain Administrator): RunAsVirtualAccount = $true

คุณสามารถใช้ Group Managed Service Account (gMSA) เพื่อเข้าถึงทรัพยากรเครือข่าย: GroupManagedServiceAccount = 'woshub\gMSAJEAUser'

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

ตัวอย่าง:

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

3. ตรวจสอบไฟล์การกำหนดค่า

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

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

4. สร้างไฟล์การกำหนดค่าบทบาท PSRC

สร้างไดเรกทอรีใหม่เพื่อเก็บไฟล์การกำหนดค่า 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 คุณสามารถระบุ Cmdlet (และพารามิเตอร์ที่ถูกต้อง) ที่อนุญาตให้กลุ่มผู้ใช้ใช้งานได้

ในตัวเลือก VisibleExternalCommands คุณสามารถระบุคำสั่งภายนอกและไฟล์ EXE ที่อนุญาตให้รันได้

ตัวอย่างการกำหนดค่าที่อนุญาตให้ผู้ใช้ HelpDesk รีสตาร์ทโดเมนคอนโทรลเลอร์ด้วยคำสั่ง shutdown หรือ Cmdlet Restart-Computer รวมถึงรีสตาร์ทบริการ DNSServer และ Active Directory Domain Services โดยใช้ Cmdlet Restart-Service:

VisibleCmdlets = 'Restart-Computer', @{ Name = 'Restart-Service'; Parameters = @{ Name = 'Name'; ValidateSet = 'DNS', 'NTDS' }}
VisibleExternalCommands = 'c:\windows\system32\shutdown.exe'

5. ลงทะเบียนการกำหนดค่าเซสชัน PSSession ใหม่

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

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

Restart-Service WinRM

6. ทดสอบการทำงานของ JEA

คุณสามารถเชื่อมต่อกับ JEA Endpoint ที่สร้างขึ้นภายใต้บัญชีผู้ใช้จากกลุ่มความปลอดภัยที่ระบุในไฟล์การกำหนดค่า เชื่อมต่อกับโดเมนคอนโทรลเลอร์โดยใช้ PowerShell Remoting (คุณต้องระบุชื่อ JEA Endpoint):

Enter-PSSession -ComputerName dc01 -ConfigurationName testHelpDesk

ดูรายการ Cmdlet ที่มีอยู่ในเซสชัน PowerShell ของคุณ:

Get-Command

ลองรีสตาร์ทบริการ DNS:

Restart-Service DNS

บริการถูกรีสตาร์ทสำเร็จ (คำสั่งรันภายใต้ผู้ใช้ที่มีสิทธิ์ Domain Admin)

หากคุณพยายามรีสตาร์ทบริการอื่นที่ไม่ได้ระบุในไฟล์การกำหนดค่า JEA จะปรากฏข้อความข้อผิดพลาด:

Cannot validate argument on parameter 'Name'. The argument "spooler" does not belong to the set "DNS,NTDS" specified by the ValidateSet attribute.

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

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