当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何使用 Microsoft Graph PowerShell 导出所有 AzureAD PIM 角色

作者:精品下载站 日期:2024-12-14 06:49:35 浏览:16 分类:玩电脑

如何使用 Microsoft Graph PowerShell 导出所有 AzureAD PIM 角色


Azure AD 特权身份管理 (PIM) 是一个出色的工具,用于管理和监视对 Azure AD 中资源的访问。但是,随着时间的推移,自然会建立活跃且合格的 PIM 分配,您可能需要以编程方式导出所有分配的顶级视图,以验证它们是否仍然必要或至少报告其情况。

在本教程中,我将向您展示如何以编程方式使用 Microsoft Graph PowerShell 导出所有 PIM 分配的报告,我还将向您展示如何从门户导出类似的报告。

先决条件

要导出本教程中的 PIM 角色,您必须确保已安装 Microsoft Graph 模块。请在此处查看我的教程:如何安装 Microsoft Graph PowerShell 模块,其中详细介绍了如何安装和升级 Microsoft Graph PowerShell 模块。

除此之外,要在 Azure AD 中授予对 Microsoft Graph 的同意,您需要以全局管理员帐户的身份在脚本中以交互方式登录,但是该会话仅在此脚本的此范围内定义的权限有效 (RoleManagement.Read .目录和目录.读取.全部)。

如何使用 Azure AD 门户导出所有 PIM 角色

如果您喜欢使用 Web GUI 来完成此任务的简单性,则可以使用 Microsoft Entra 中的身份管理门户导出相同的报告。请按照以下步骤通过 Microsoft Entra 门户导出 PIM 角色:

1. 使用分配有安全读者角色的帐户登录 Microsoft Entra:https://entra.microsoft.com/。

2. 从菜单中选择身份治理 > 特权身份管理

[玩转系统] 如何使用 Microsoft Graph PowerShell 导出所有 AzureAD PIM 角色

3. 在管理标题下,选择作业

[玩转系统] 如何使用 Microsoft Graph PowerShell 导出所有 AzureAD PIM 角色

4. 选择导出,当选项出现时,选择下载

[玩转系统] 如何使用 Microsoft Graph PowerShell 导出所有 AzureAD PIM 角色

5. 您的报告将如下所示:

[玩转系统] 如何使用 Microsoft Graph PowerShell 导出所有 AzureAD PIM 角色

如何使用 Microsoft Graph PowerShell 导出所有 PIM 角色

在本教程中,我编写了以下脚本,该脚本将收集所有符合条件且有效的 PIM 角色分配,并将相关信息放入类似的报告中。首先打开记事本或 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

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯