ค้นหาเว็บไซต์

ข้อควรพิจารณาด้านความปลอดภัยของ JEA


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

บัญชี Run-As

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

บัญชีเสมือนเป็นวิธีที่แนะนำในการกำหนดค่าบัญชี ทำงานตาม บัญชีเสมือนเป็นบัญชีภายในชั่วคราวที่เกิดขึ้นเพียงครั้งเดียวซึ่งสร้างขึ้นเพื่อให้ผู้ใช้ที่เชื่อมต่อใช้ในช่วงระยะเวลาของเซสชัน JEA ทันทีที่เซสชั่นสิ้นสุดลง บัญชีเสมือนจะถูกทำลายและไม่สามารถใช้งานได้อีกต่อไป ผู้ใช้ที่เชื่อมต่อไม่ทราบข้อมูลประจำตัวสำหรับบัญชีเสมือน ไม่สามารถใช้บัญชีเสมือนเพื่อเข้าถึงระบบผ่านวิธีอื่น เช่น Remote Desktop หรือปลายทาง PowerShell ที่ไม่จำกัด

ตามค่าเริ่มต้น บัญชีเสมือนเป็นสมาชิกของกลุ่ม ผู้ดูแลระบบ ภายในเครื่อง การเป็นสมาชิกนี้ให้สิทธิ์เต็มรูปแบบในการจัดการทุกสิ่งบนระบบ แต่ไม่มีสิทธิ์ในการจัดการทรัพยากรบนเครือข่าย เมื่อผู้ใช้เชื่อมต่อกับเครื่องอื่นจากเซสชัน JEA บริบทผู้ใช้จะเป็นของบัญชีคอมพิวเตอร์ในระบบ ไม่ใช่บัญชีเสมือน

ตัวควบคุมโดเมนเป็นกรณีพิเศษเนื่องจากไม่มีกลุ่ม ผู้ดูแลระบบ ในเครื่อง แต่บัญชีเสมือนจะเป็นของ ผู้ดูแลระบบโดเมน และสามารถจัดการบริการไดเรกทอรีบนตัวควบคุมโดเมนได้ ข้อมูลประจำตัวของโดเมนยังคงถูกจำกัดสำหรับการใช้งานบนตัวควบคุมโดเมนซึ่งมีการสร้างอินสแตนซ์ของเซสชัน JEA การเข้าถึงเครือข่ายใด ๆ ดูเหมือนจะมาจากวัตถุคอมพิวเตอร์ตัวควบคุมโดเมนแทน

ในทั้งสองกรณี คุณสามารถกำหนดบัญชีเสมือนให้กับกลุ่มความปลอดภัยเฉพาะได้ โดยเฉพาะอย่างยิ่งเมื่องานนี้สามารถทำได้โดยไม่ต้องใช้สิทธิ์ของผู้ดูแลระบบภายในหรือโดเมน หากคุณมีกลุ่มความปลอดภัยที่กำหนดไว้สำหรับผู้ดูแลระบบของคุณอยู่แล้ว ให้มอบความเป็นสมาชิกบัญชีเสมือนให้กับกลุ่มนั้น การเป็นสมาชิกกลุ่มสำหรับบัญชีเสมือนนั้นจำกัดเฉพาะกลุ่มความปลอดภัยภายในเครื่องบนเวิร์กสเตชันและเซิร์ฟเวอร์สมาชิก บนตัวควบคุมโดเมน บัญชีเสมือนต้องเป็นสมาชิกของกลุ่มความปลอดภัยของโดเมน เมื่อบัญชีเสมือนถูกเพิ่มในกลุ่มความปลอดภัยตั้งแต่หนึ่งกลุ่มขึ้นไป บัญชีนั้นจะไม่อยู่ในกลุ่มเริ่มต้นอีกต่อไป (ผู้ดูแลระบบภายในหรือโดเมน)

ตารางต่อไปนี้สรุปตัวเลือกการกำหนดค่าที่เป็นไปได้และการอนุญาตผลลัพธ์สำหรับบัญชีเสมือน:

Computer type Virtual account group configuration Local user context Network user context
Domain controller Default Domain user, member of <DOMAIN>\Domain Admins Computer account
Domain controller Domain groups A and B Domain user, member of <DOMAIN>\A, <DOMAIN>\B Computer account
Member server or workstation Default Local user, member of BUILTIN\Administrators Computer account
Member server or workstation Local groups C and D Local user, member of <COMPUTER>\C and <COMPUTER>\D Computer account

เมื่อคุณดูการตรวจสอบความปลอดภัยและบันทึกเหตุการณ์ของแอปพลิเคชัน คุณจะเห็นว่าเซสชันผู้ใช้ JEA แต่ละเซสชันมีบัญชีเสมือนที่ไม่ซ้ำกัน บัญชีที่ไม่ซ้ำใครนี้ช่วยให้คุณติดตามการกระทำของผู้ใช้ในตำแหน่งข้อมูล JEA กลับไปยังผู้ใช้เดิมที่รันคำสั่ง ชื่อบัญชีเสมือนเป็นไปตามรูปแบบ WinRM Virtual Users\WinRM_VA___ ตัวอย่างเช่น ถ้าผู้ใช้ Alice ในโดเมน Contoso เริ่มบริการใหม่ในตำแหน่งข้อมูล JEA ชื่อผู้ใช้ที่เชื่อมโยงกับเหตุการณ์ตัวจัดการการควบคุมบริการใด ๆ จะเป็น WinRM Virtual Users\WinRM_VA_1_contoso_alice

บัญชีบริการที่จัดการกลุ่ม (gMSA) มีประโยชน์เมื่อเซิร์ฟเวอร์สมาชิกจำเป็นต้องมีสิทธิ์เข้าถึงทรัพยากรเครือข่ายในเซสชัน JEA ตัวอย่างเช่น เมื่อใช้ตำแหน่งข้อมูล JEA เพื่อควบคุมการเข้าถึงบริการ REST API ที่โฮสต์บนเครื่องอื่น การเขียนฟังก์ชันเพื่อเรียกใช้ REST API เป็นเรื่องง่าย แต่คุณต้องมีข้อมูลประจำตัวเครือข่ายเพื่อตรวจสอบสิทธิ์กับ API การใช้บัญชีบริการที่จัดการกลุ่มทำให้การกระโดดครั้งที่สองเป็นไปได้ ในขณะเดียวกันก็รักษาการควบคุมว่าคอมพิวเตอร์เครื่องใดที่สามารถใช้บัญชีได้ สมาชิกกลุ่มความปลอดภัย (ท้องถิ่นหรือโดเมน) ของ gMSA ได้กำหนดสิทธิ์ที่มีผลบังคับใช้สำหรับบัญชี gMSA

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

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

บัญชีที่ทำงานเป็นมาตรฐาน ช่วยให้คุณสามารถระบุบัญชีผู้ใช้ใดๆ ที่จะเรียกใช้เซสชัน PowerShell ทั้งหมดได้ การกำหนดค่าเซสชันที่ใช้บัญชี run-as แบบคงที่ (พร้อมพารามิเตอร์ -RunAsCredential) จะไม่รับรู้จาก JEA คำจำกัดความของบทบาทไม่ทำงานตามที่คาดไว้อีกต่อไป ผู้ใช้ทุกคนที่ได้รับอนุญาตให้เข้าถึงตำแหน่งข้อมูลจะได้รับมอบหมายบทบาทเดียวกัน

คุณไม่ควรใช้ RunAsCredential บนปลายทาง JEA เนื่องจากเป็นการยากที่จะติดตามการดำเนินการกลับไปยังผู้ใช้บางราย และขาดการสนับสนุนในการแมปผู้ใช้กับบทบาท

ACL ปลายทาง WinRM

เช่นเดียวกับตำแหน่งข้อมูลระยะไกลของ PowerShell ปกติ ตำแหน่งข้อมูล JEA แต่ละจุดมีรายการควบคุมการเข้าถึง (ACL) แยกต่างหากที่ควบคุมว่าใครสามารถตรวจสอบสิทธิ์การรับรองความถูกต้องกับตำแหน่งข้อมูล JEA ได้ หากกำหนดค่าไม่ถูกต้อง ผู้ใช้ที่เชื่อถือได้อาจไม่สามารถเข้าถึงตำแหน่งข้อมูล JEA ได้ และผู้ใช้ที่ไม่น่าเชื่อถืออาจสามารถเข้าถึงได้ WinRM ACL ไม่ส่งผลต่อการแมปผู้ใช้กับบทบาท JEA การแมปถูกควบคุมโดยฟิลด์ RoleDefinitions ในไฟล์การกำหนดค่าเซสชันที่ใช้ในการลงทะเบียนตำแหน่งข้อมูล

ตามค่าเริ่มต้น เมื่อตำแหน่งข้อมูล JEA มีความสามารถหลายบทบาท WinRM ACL จะได้รับการกำหนดค่าให้อนุญาตการเข้าถึงผู้ใช้ที่แมปทั้งหมด ตัวอย่างเช่น เซสชัน JEA ที่กำหนดค่าโดยใช้คำสั่งต่อไปนี้ให้สิทธิ์การเข้าถึงแบบเต็มแก่ CONTOSO\JEA_Lev1 และ CONTOSO\JEA_Lev2

$roles = @{ 'CONTOSO\JEA_Lev1' = 'Lev1Role'; 'CONTOSO\JEA_Lev2' = 'Lev2Role' }
New-PSSessionConfigurationFile -Path '.\jea.pssc' -SessionType RestrictedRemoteServer -RoleDefinitions $roles -RunAsVirtualAccount
Register-PSSessionConfiguration -Path '.\jea.pssc' -Name 'MyJEAEndpoint'

คุณสามารถตรวจสอบสิทธิ์ของผู้ใช้ได้ด้วย Get-PSSessionConfiguration cmdlet

Get-PSSessionConfiguration -Name 'MyJEAEndpoint' | Select-Object Permission
Permission
----------
CONTOSO\JEA_Lev1 AccessAllowed
CONTOSO\JEA_Lev2 AccessAllowed

หากต้องการเปลี่ยนผู้ใช้ที่มีสิทธิ์เข้าถึง ให้เรียกใช้ Set-PSSessionConfiguration -Name 'MyJEAEndpoint' -ShowSecurityDescriptorUI สำหรับพร้อมท์แบบโต้ตอบหรือ Set-PSSessionConfiguration -Name 'MyJEAEndpoint' -SecurityDescriptorSddl เพื่ออัปเดตการอนุญาต ผู้ใช้ต้องมีสิทธิ์ เรียกใช้ เป็นอย่างน้อยเพื่อเข้าถึงตำแหน่งข้อมูล JEA

คุณสามารถสร้างตำแหน่งข้อมูล JEA ที่ไม่แมปบทบาทที่กำหนดกับผู้ใช้ทุกคนที่มีสิทธิ์เข้าถึงได้ ผู้ใช้เหล่านี้สามารถเริ่มเซสชัน JEA ได้ แต่มีสิทธิ์เข้าถึงเฉพาะ cmdlets เริ่มต้นเท่านั้น คุณสามารถตรวจสอบสิทธิ์ของผู้ใช้ในตำแหน่งข้อมูล JEA ได้โดยการเรียกใช้ Get-PSSessionCapability สำหรับข้อมูลเพิ่มเติม โปรดดูที่การตรวจสอบและการรายงานเกี่ยวกับ JEA

บทบาทสิทธิพิเศษน้อยที่สุด

เมื่อออกแบบบทบาทของ JEA สิ่งสำคัญคือต้องจำไว้ว่าบัญชีบริการแบบเสมือนและแบบกลุ่มที่ทำงานอยู่เบื้องหลังสามารถเข้าถึงเครื่องภายในเครื่องได้อย่างไม่จำกัด ความสามารถของบทบาท JEA ช่วยจำกัดคำสั่งและแอปพลิเคชันที่สามารถรันในบริบทที่ได้รับสิทธิ์นั้น บทบาทที่ได้รับการออกแบบอย่างไม่เหมาะสมสามารถยอมให้ออกคำสั่งที่เป็นอันตรายซึ่งอาจอนุญาตให้ผู้ใช้แยกตัวออกจากขอบเขต JEA หรือเข้าถึงข้อมูลที่ละเอียดอ่อนได้

ตัวอย่างเช่น พิจารณารายการความสามารถตามบทบาทต่อไปนี้:

@{
    VisibleCmdlets = 'Microsoft.PowerShell.Management\*-Process'
}

ความสามารถของบทบาทนี้ทำให้ผู้ใช้สามารถเรียกใช้ PowerShell cmdlet ใดๆ ด้วยคำนาม กระบวนการ จากโมดูล Microsoft.PowerShell.Management ผู้ใช้อาจต้องเข้าถึง cmdlets เช่น Get-Process เพื่อดูว่าแอปพลิเคชันใดกำลังทำงานอยู่บนระบบ และ Stop-Process เพื่อปิดแอปพลิเคชันที่ไม่ตอบสนอง อย่างไรก็ตาม รายการนี้ยังอนุญาต Start-Process ซึ่งสามารถใช้เพื่อเริ่มต้นโปรแกรมที่ต้องการด้วยสิทธิ์ผู้ดูแลระบบเต็มรูปแบบ ไม่จำเป็นต้องติดตั้งโปรแกรมภายในระบบ ผู้ใช้ที่เชื่อมต่อสามารถเริ่มโปรแกรมจากการแชร์ไฟล์ที่ให้สิทธิ์ผู้ดูแลระบบภายในแก่ผู้ใช้ เรียกใช้มัลแวร์ และอื่นๆ

เวอร์ชันที่ปลอดภัยยิ่งขึ้นของความสามารถในบทบาทเดียวกันนี้จะมีลักษณะดังนี้:

@{
    VisibleCmdlets = 'Microsoft.PowerShell.Management\Get-Process',
                     'Microsoft.PowerShell.Management\Stop-Process'
}

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

คำแนะนำแนวทางปฏิบัติที่ดีที่สุด

ต่อไปนี้เป็นคำแนะนำแนวทางปฏิบัติที่ดีที่สุดเพื่อให้มั่นใจถึงความปลอดภัยของตำแหน่งข้อมูล JEA ของคุณ:

จำกัดการใช้งานและความสามารถของผู้ให้บริการ PowerShell

ตรวจสอบวิธีการใช้ผู้ให้บริการที่ได้รับอนุญาตเพื่อให้แน่ใจว่าคุณไม่สร้างช่องโหว่ในเซสชันที่กำหนดค่าไว้

คำเตือน

ไม่อนุญาตผู้ให้บริการ FileSystem หากผู้ใช้สามารถเขียนไปยังส่วนใดส่วนหนึ่งของระบบไฟล์ได้ ก็เป็นไปได้ที่จะข้ามการรักษาความปลอดภัยโดยสิ้นเชิง

ไม่อนุญาตผู้ให้บริการ ใบรับรอง เมื่อเปิดใช้งานผู้ให้บริการ ผู้ใช้จะสามารถเข้าถึงคีย์ส่วนตัวที่เก็บไว้ได้

ไม่อนุญาตให้ใช้คำสั่งที่สามารถสร้าง runspaces ใหม่ได้

คำเตือน

*-Job cmdlet สามารถสร้าง runspaces ใหม่ได้โดยไม่มีข้อจำกัด

ไม่อนุญาตให้ Trace-Command cmdlet

คำเตือน

การใช้ Trace-Command จะนำคำสั่งที่ติดตามทั้งหมดมาสู่เซสชัน

อย่าสร้างการใช้งานพร็อกซีของคุณเองสำหรับคำสั่งที่ถูกจำกัด

PowerShell มีชุดคำสั่งพร็อกซีสำหรับสถานการณ์คำสั่งแบบจำกัด คำสั่งพร็อกซีเหล่านี้ช่วยให้แน่ใจว่าพารามิเตอร์อินพุตไม่สามารถกระทบต่อความปลอดภัยของเซสชันได้ คำสั่งต่อไปนี้มีพรอกซีแบบจำกัด:

    Exit-PSSession
    Get-Command
    Get-FormatData
    Get-Help
    Measure-Object
    Out-Default
    Select-Object

หากคุณสร้างการใช้งานคำสั่งเหล่านี้ด้วยตนเอง คุณอาจอนุญาตให้ผู้ใช้รันโค้ดที่คำสั่งพร็อกซี JEA ห้ามโดยไม่ได้ตั้งใจ

JEA ไม่ได้ป้องกันผู้ดูแลระบบ

หลักการสำคัญประการหนึ่งของ JEA คืออนุญาตให้ผู้ที่ไม่ใช่ผู้ดูแลระบบทำงานด้านการดูแลระบบบางอย่างได้ JEA ไม่ได้ป้องกันผู้ใช้ที่มีสิทธิ์ของผู้ดูแลระบบอยู่แล้ว ผู้ใช้ที่เป็น ผู้ดูแลระบบโดเมน ผู้ดูแลระบบ ในพื้นที่ หรือกลุ่มที่ได้รับสิทธิพิเศษสูงอื่นๆ สามารถหลบเลี่ยงการป้องกันของ JEA ด้วยวิธีอื่นได้ ตัวอย่างเช่น พวกเขาสามารถลงชื่อเข้าใช้ด้วย RDP ใช้คอนโซล MMC ระยะไกล หรือเชื่อมต่อกับตำแหน่งข้อมูล PowerShell ที่ไม่จำกัด นอกจากนี้ ผู้ดูแลระบบภายในระบบยังสามารถแก้ไขการกำหนดค่า JEA เพื่อเพิ่มผู้ใช้เพิ่มเติม หรือเปลี่ยนความสามารถของบทบาทเพื่อขยายขอบเขตของสิ่งที่ผู้ใช้สามารถทำได้ในเซสชัน JEA ของตน สิ่งสำคัญคือต้องประเมินสิทธิ์เพิ่มเติมของผู้ใช้ JEA เพื่อดูว่ามีวิธีอื่นในการรับสิทธิ์เข้าถึงระบบแบบพิเศษหรือไม่

นอกเหนือจากการใช้ JEA สำหรับการบำรุงรักษาในแต่ละวันตามปกติแล้ว การมีระบบจัดการการเข้าถึงสิทธิพิเศษแบบทันเวลาก็เป็นเรื่องปกติ ระบบเหล่านี้อนุญาตให้ผู้ใช้ที่ได้รับมอบหมายเป็นผู้ดูแลระบบภายในได้ชั่วคราวหลังจากที่ดำเนินการเวิร์กโฟลว์ที่บันทึกการใช้สิทธิ์เหล่านั้นแล้วเท่านั้น

บทความที่เกี่ยวข้อง