วิธีส่งออกบทบาท 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



