กราฟเชิงปฏิบัติ: รายงานหน่วยการดูแลระบบ Microsoft Entra ID
รับข้อมูลเพิ่มเติมเกี่ยวกับหน่วยการดูแลระบบด้วย PowerShell
การประกาศล่าสุดของ Microsoft เกี่ยวกับการแสดงตัวอย่างของหน่วยการดูแลระบบที่ถูกจำกัด ทำให้ฉันคิดว่าเป็นความคิดที่ดีที่จะสามารถรายงานรายละเอียดของหน่วยการดูแลระบบและการเป็นสมาชิกได้ ศูนย์การจัดการ Microsoft Entra ID เปิดเผยข้อมูลนี้ และเป็นเรื่องง่ายที่จะตรวจสอบคุณสมบัติของหน่วยการดูแลระบบแต่ละหน่วย แต่การดูภาพรวมโดยย่อของหน่วยการดูแลระบบทั้งหมดในผู้เช่านั้นยากกว่ามาก
หากผู้เช่าของคุณใช้หน่วยการดูแลระบบ สิ่งสำคัญคือคุณจะต้องคอยติดตามการใช้งานของพวกเขา Microsoft ให้ความสำคัญกับออบเจ็กต์เหล่านี้มากขึ้นอย่างเห็นได้ชัด เนื่องจากช่วยแก้ไขปัญหาการกำหนดขอบเขตภายในไดเร็กทอรีได้อย่างมาก โซลูชัน Purview เช่น การป้องกันข้อมูลสูญหาย (DLP) และการจัดการวงจรชีวิตของข้อมูล (ป้ายชื่อและนโยบายการเก็บรักษา) รองรับการกำหนดค่านโยบายที่กำหนดขอบเขตเป็นหน่วยการดูแลระบบ ฉันคาดหวังว่าส่วนอื่นๆ ของระบบนิเวศ Microsoft 365 จะปฏิบัติตามแนวทางที่คล้ายกันเมื่อเวลาผ่านไป
ไมโครซอฟกราฟ PowerShell SDK V2
บทความนี้อธิบายวิธีใช้ cmdlet จาก Microsoft Graph PowerShell SDK เพื่อดึงข้อมูลและสร้างรายงาน Microsoft เปิดตัว SDK V2 ในวันที่ 4 กรกฎาคม 2023 ความแตกต่างที่ชัดเจนระหว่าง V1 และ V2 ของ SDK ก็คือ cmdlet ที่โต้ตอบกับจุดสิ้นสุดกราฟการผลิต (V1.0) เป็นไปตามการตั้งชื่อ *-Mg* ในขณะที่รุ่นเบต้ามีชื่อ *-MgBeta*
ตัวอย่างเช่น cmdlet ของการรับข้อมูลบัญชีผู้ใช้ Entra ID (Azure AD) คือ Get-MgUser และ Get-MgBetaUser ตามลำดับ การเปลี่ยนชื่อ cmdlet หมายความว่านักพัฒนาควรตรวจสอบและทดสอบสคริปต์ใดๆ ที่เขียนโดยใช้ V1 ของ SDK เพื่อให้แน่ใจว่าโค้ดของพวกเขาทำงานกับ V2
Microsoft Graph PowerShell SDK V2 แบ่ง cmdlets ออกเป็นสองโมดูลย่อย และคุณต้องติดตั้งทั้งสองโมดูลจึงจะสามารถเข้าถึง cmdlets เบต้าได้ ในทางกลับกัน การแบ่งโมดูลออกเป็นโมดูลแยกกันทำให้โหลด SDK ในสภาพแวดล้อมเช่น Azure Automation ได้ง่ายและรวดเร็วยิ่งขึ้น การเปลี่ยนแปลงที่สำคัญอีกประการหนึ่งสำหรับ Azure Automation คือการสนับสนุนอย่างเป็นทางการสำหรับข้อมูลประจำตัวที่ได้รับการจัดการ วิธีแก้ปัญหามีอยู่ในอดีต เช่น การรับโทเค็นการเข้าถึงจากบัญชี Azure Automation และใช้โทเค็นในการตรวจสอบสิทธิ์ แต่ตอนนี้ คุณทำได้ง่ายๆ:
Connect-MgGraph -Identity
หากคุณใช้ SDK กับ Azure Automation ตรวจสอบให้แน่ใจว่าได้นำเข้าโมดูลเบต้าที่มี cmdlets ใด ๆ ที่ใช้ใน runbooks
Microsoft 365 Kill Chain และการจัดการเส้นทางการโจมตี
กลยุทธ์ความปลอดภัยทางไซเบอร์ที่มีประสิทธิภาพจำเป็นต้องมีความเข้าใจที่ชัดเจนและครอบคลุมเกี่ยวกับวิธีการโจมตี อ่านเอกสารไวท์เปเปอร์นี้เพื่อรับข้อมูลเชิงลึกจากผู้เชี่ยวชาญที่คุณต้องการเพื่อปกป้ององค์กรของคุณ!
การอัปเดต Microsoft Graph PowerShell SDK
เก้าวันหลังจากปล่อย SDK V2.0 Microsoft ก็เร่งออก V2.1 (13 กรกฎาคม 2023) เพื่อแก้ไขปัญหาบางอย่าง ตัวอย่างเช่น Get-MgServicePrincipal cmdlet ปฏิเสธที่จะแสดงพารามิเตอร์ใดๆ อย่างดื้อรั้น! โดยปกติ Microsoft จะสร้าง SDK เวอร์ชันใหม่ทุกเดือน อย่างไรก็ตาม ในช่วงแรกของ V2 อาจเป็นการดีกว่าที่จะคอยจับตาดูแกลเลอรี PowerShell เพื่อให้แน่ใจว่าคุณใช้โค้ดล่าสุดและเสถียรที่สุด
สคริปต์ที่อธิบายไว้ในบทความนี้จะอัปเดตโมดูล V1.0 และ beta SDK ที่ติดตั้งในบัญชี Azure Automation ให้เป็นเวอร์ชันล่าสุด สคริปต์จากบทความนี้จะดูแลการอัปเดตโมดูล SDK (และโมดูลอื่นๆ) บนพีซี
การรายงานหน่วยบริหาร
เมื่อกลับไปที่หน่วยผู้ดูแลระบบ ขั้นตอนการประมวลผลพื้นฐานที่ฉันใช้ในการสร้างรายงานคือ:
- เชื่อมต่อกับกราฟด้วยขอบเขต Directory.Read.All
- ค้นหาหน่วยการดูแลระบบทั้งหมด (ปกติ ไดนามิก และจำกัด) ด้วย cmdlet Get-MgBetaDirectoryAdministrativeUnit
- ดึงข้อมูลการกำหนดบทบาทสำหรับหน่วยการดูแลระบบโดยใช้ cmdlet Get-MgBetaRoleManagementDirectoryRoleAssignment การกำหนดบทบาทช่วยให้บัญชีผู้ใช้เฉพาะสามารถดำเนินงานการจัดการสำหรับบัญชีผู้ใช้ กลุ่ม และอุปกรณ์ในหน่วยการดูแลระบบได้ ผู้ถือบทบาทผู้ดูแลระบบทั่วไป เช่น ผู้ดูแลระบบส่วนกลางและผู้ดูแลระบบผู้ใช้สามารถจัดการออบเจ็กต์ในหน่วยผู้ดูแลระบบปกติได้ แต่จะถูกบล็อกจากหน่วยผู้ดูแลระบบที่ถูกจำกัด เฉพาะผู้ใช้ที่ได้รับมอบหมายบทบาทโดยเฉพาะซึ่งกำหนดขอบเขตให้กับหน่วยการดูแลระบบที่ถูกจำกัดเท่านั้นที่สามารถจัดการออบเจ็กต์ในหน่วยเหล่านี้ได้
- วนซ้ำแต่ละหน่วยการดูแลระบบเพื่อบันทึกรายละเอียดการตั้งค่า
- ค้นหาการกำหนดบทบาทเฉพาะสำหรับหน่วยการดูแลระบบ และแยกรายละเอียดของบัญชีผู้ใช้ กลุ่ม หรือผู้ให้บริการหลักที่มีบทบาท
- ดึงรายละเอียดของสมาชิกของหน่วยการดูแลระบบด้วย Get-MgBetaAdministrativeUnitMember cmdlet สำหรับหน่วยการดูแลแบบไดนามิก cmdlet จะส่งกลับชุดของออบเจ็กต์ตามกฎการเป็นสมาชิกที่กำหนดไว้ในหน่วยการดูแลระบบ (เช่นวิธีการทำงานของกลุ่มไดนามิกหรือแม้แต่รายการการแจกจ่ายแบบไดนามิก)
- อัปเดตรายการ PowerShell พร้อมรายละเอียดของหน่วยการดูแลระบบ การมอบหมาย และการเป็นสมาชิก
- ผลลัพธ์ที่ได้จะเป็นไฟล์ CSV และหน้า HTML
ดังที่คุณเห็นจากรายการขั้นตอนการประมวลผล cmdlet ที่ใช้ในการประมวลผลหน่วยการดูแลระบบจะใช้ตำแหน่งข้อมูลเบต้า cmdlet อื่นๆ ในสคริปต์ เช่น Get-MgUser และ Get-MgGroup ให้ใช้ตำแหน่งข้อมูล V1.0 นี่เป็นตัวอย่างที่ดีของวิธีที่สคริปต์สามารถผสมผสานและจับคู่ cmdlet ของเบต้าและ V1.0 เพื่อให้ทำงานได้
การวิเคราะห์ผลลัพธ์
รูปที่ 1 แสดงหน้า HTML ที่สร้างขึ้นสำหรับผู้เช่าของฉัน สิ่งแรกที่ควรทราบก็คือ มีหน่วยการดูแลระบบสองหน่วยที่ไม่มีสมาชิก ซึ่งหมายความว่าออบเจ็กต์เหล่านั้นไม่มีประโยชน์อย่างแท้จริง เงื่อนไขดังกล่าวอาจมีการพัฒนาเมื่อเวลาผ่านไปหากบัญชีผู้ใช้ กลุ่ม และอุปกรณ์ทั้งหมดที่เป็นสมาชิกของหน่วยการดูแลระบบออกจากระบบด้วยเหตุผลใดก็ตาม นี่อาจเป็นการลบบัญชีแต่ละบัญชีหรือการเคลื่อนย้ายออบเจ็กต์แบบขายส่งจากผู้เช่ารายหนึ่งไปยังอีกรายหนึ่ง สำหรับหน่วยการดูแลแบบไดนามิก อาจเป็นไปได้ว่ากฎความเป็นสมาชิกในการคำนวณการเป็นสมาชิกไม่ส่งคืนสิ่งใดเนื่องจากปัญหาในคุณสมบัติบัญชีผู้ใช้ หรือเพียงว่าผู้ดูแลระบบสร้างหน่วยการดูแลระบบโดยคำนึงถึงจุดประสงค์บางอย่างที่ไม่เคยเกิดขึ้น
คุณสามารถดูกฎการเป็นสมาชิกสำหรับหน่วยการดูแลระบบแบบไดนามิกที่แสดงอยู่ในคอลัมน์ หากมีการมอบหมายบทบาทเฉพาะ จะมีการแสดงรายการพร้อมกับชื่อที่แสดงของผู้ได้รับมอบหมายและประเภท (ผู้ใช้ กลุ่ม หรือบริการหลัก) ฉันมอบหมายบทบาทให้กับบริการหลักสำหรับบัญชี Azure Automation เพื่อให้รันบุ๊กสามารถประมวลผลชุดย่อยของบัญชีผู้ใช้ได้
หากไม่มีการกำหนดบทบาทเฉพาะสำหรับหน่วยผู้ดูแลระบบ รายงานจะแสดงรายการ “บทบาทของผู้ดูแลระบบ” เพื่อระบุว่ามีการใช้การกำหนดบทบาทของผู้ดูแลระบบตามปกติ ขอบเขตของแต่ละหน่วยการบริหารจะแสดงรายการด้วย “ไดเรกทอรี” ซึ่งหมายความว่าไม่จำกัด และ “จำกัด” หมายความว่าเฉพาะผู้ที่ได้รับมอบหมายบทบาทเฉพาะสำหรับหน่วยผู้ดูแลระบบเท่านั้นที่สามารถจัดการสมาชิกได้
ไม่มีความมหัศจรรย์ในสคริปต์ และ PowerShell ค่อนข้างตรงไปตรงมา ส่วนที่ยากที่สุดในการเขียนสคริปต์เช่นนี้คือการค้นหา SDK cmdlet ที่ถูกต้องเพื่อใช้และทำความเข้าใจผลลัพธ์ที่ส่งคืนโดย cmdlet คุณสามารถดาวน์โหลดสคริปต์ฉบับเต็มได้จาก GitHub ยินดีรับข้อเสนอแนะทั้งหมด และคุณสามารถเสนอการเปลี่ยนแปลงสคริปต์ผ่าน GitHub
การค้นหาบัญชีที่ครอบคลุมโดยหน่วยงานบริหารที่ถูกจำกัด
สุดท้ายนี้ หมายเหตุเกี่ยวกับวิธีค้นหาชุดบัญชีผู้ใช้ที่ครอบคลุมโดยหน่วยการดูแลระบบที่ถูกจำกัด เมื่อบัญชีผู้ใช้อยู่ภายในขอบเขตของหน่วยการดูแลระบบที่ถูกจำกัด Entra ID จะตั้งค่าคุณสมบัติ IsManagementRestricted เป็น True การค้นหาชุดบัญชีจึงเป็นเรื่องของการตรวจสอบทรัพย์สินนี้ ขออภัย ขณะนี้ระบบไม่รองรับการกรองฝั่งเซิร์ฟเวอร์ ดังนั้นจึงต้องเรียกใช้คำสั่งเช่นนี้:
Get-MgBetaUser -Filter "usertype eq 'Member'" -All | where-Object {$_.IsManagementRestricted -eq $True}การรายงาน DIY
ฉันไม่เคยเข้าใจเลยว่าทำไม Microsoft ให้ความสำคัญกับการรายงานแง่มุมต่างๆ ของ Microsoft 365/Entra ID เพียงเล็กน้อย รายงานที่ช่วยให้ Microsoft ขายใบอนุญาตเพิ่มเติม (เช่น รายงานการใช้งาน) มีอยู่ในศูนย์การจัดการ Microsoft 365 และพอร์ทัลอื่นๆ แต่ไม่มาก ในทางกลับกัน คุณจะได้รับโอกาสในการเขียนรายงานของคุณเอง ข้อเสียคืองานที่จำเป็น แม้ว่าจะใช้เวลาสองสามชั่วโมงในบ่ายวันเสาร์ที่เปียกชื้นก็ตาม
