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

วิธีส่งออกบทบาท AzureAD PIM ทั้งหมดด้วย Microsoft Graph PowerShell


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

ในบทช่วยสอนนี้ ฉันจะแสดงให้คุณเห็นถึงวิธีการใช้ Microsoft Graph PowerShell โดยทางโปรแกรมเพื่อส่งออกรายงานของการกำหนด PIM ทั้งหมด ฉันจะแสดงวิธีส่งออกรายงานที่คล้ายกันจากพอร์ทัลด้วย

ข้อกำหนดเบื้องต้น

หากต้องการส่งออกบทบาท PIM ในบทช่วยสอนนี้ คุณต้องแน่ใจว่าคุณได้ติดตั้งโมดูล Microsoft Graph แล้ว ดูบทช่วยสอนของฉันที่นี่: วิธีการติดตั้งโมดูล Microsoft Graph PowerShell ซึ่งมีรายละเอียดวิธีการติดตั้งและอัปเกรดโมดูล Microsoft Graph PowerShell

นอกจากนี้ ในการให้ความยินยอมแก่ Microsoft Graph ใน Azure AD คุณจะต้องเข้าสู่ระบบแบบโต้ตอบในสคริปต์ในฐานะบัญชีผู้ดูแลระบบส่วนกลาง อย่างไรก็ตาม เซสชันจะใช้งานได้เฉพาะกับสิทธิ์ที่กำหนดไว้ในขอบเขตของสคริปต์นี้ (RoleManagement อ่าน .Directory และ Directory.Read.All)

วิธีส่งออกบทบาท PIM ทั้งหมดโดยใช้พอร์ทัล Azure AD

หากคุณชอบความเรียบง่ายของการใช้ Web GUI เพื่อทำงานนี้ให้เสร็จสิ้น คุณสามารถใช้พอร์ทัล Identity Goveranance ใน Microsoft Entra เพื่อส่งออกรายงานเดียวกันได้ ทำตามขั้นตอนด้านล่างเพื่อส่งออกบทบาท PIM ผ่านพอร์ทัล Microsoft Entra:

1. เข้าสู่ระบบ Microsoft Entra ที่นี่: https://entra.microsoft.com/ ด้วยบัญชีที่ได้รับมอบหมายบทบาท Security Reader

2. จากเมนู ให้เลือก การกำกับดูแลข้อมูลประจำตัว > การจัดการข้อมูลประจำตัวที่มีสิทธิพิเศษ

3. ใต้หัวข้อ จัดการ ให้เลือก การมอบหมาย

4. เลือก ส่งออก เมื่อตัวเลือกปรากฏขึ้น เลือก ดาวน์โหลด

5. รายงานของคุณจะมีลักษณะดังนี้:

วิธีส่งออกบทบาท PIM ทั้งหมดโดยใช้ Microsoft Graph PowerShell

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

Connect-MgGraph -Scopes RoleManagement.Read.Directory,Directory.Read.All

Select-MgProfile -Name beta

$EligiblePIMRoles = Get-MgRoleManagementDirectoryRoleEligibilitySchedule -All -ExpandProperty *
$AssignedPIMRoles = Get-MgRoleManagementDirectoryRoleAssignmentSchedule -All -ExpandProperty *

$PIMRoles = $EligiblePIMRoles + $AssignedPIMRoles

$Report = [System.Collections.Generic.List[Object]]::new()

foreach ($a in $PIMRoles) {
    $regex = "^([^.]+)\.([^.]+)\.(.+)$"
    $a.Principal.AdditionalProperties.'@odata.type' -match $regex | out-null

    $obj = [pscustomobject][ordered]@{
        Assigned                 = $a.Principal.AdditionalProperties.displayName
        "Assigned Type"          = $matches[3]
        "Assigned Role"          = $a.RoleDefinition.DisplayName
        "Assigned Role Scope"    = $a.directoryScopeId
        "Assignment Type"        = (&{if ($a.AssignmentType -eq "Assigned") {"Active"} else {"Eligible"}})
        "Is Built In"            = $a.roleDefinition.isBuiltIn
        "Created Date"           = $a.CreatedDateTime
        "Expiration type"        = $a.ScheduleInfo.Expiration.type
        "Expiration Date"        = switch ($a.ScheduleInfo.Expiration.EndDateTime) {
            {$a.ScheduleInfo.Expiration.EndDateTime -match '20'} {$a.ScheduleInfo.Expiration.EndDateTime}
            {$a.ScheduleInfo.Expiration.EndDateTime -notmatch '20'} {"N/A"}
        }
    }
    $report.Add($obj)
}

$Report | Export-CSV -path C:\temp\AllPIMRolesExport.csv

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