Как получить значение роли приложения с учетом идентификатора роли приложения в Entra ID с помощью Microsoft Graph Powershell?

После получения назначений ролей приложения субъекту-службе:

Get-MgServicePrincipalAppRoleAssignment -ServicePrincipalId ServicePrincipalId

Я хочу получить значение для каждой роли приложения. Ответ включает идентификатор роли приложения и идентификатор ресурса для каждой назначенной роли приложения.

Я могу получить роли приложения для приложения следующим образом, но тогда мне сначала нужно будет сопоставить идентификатор объекта субъекта-службы (идентификатор ресурса) с идентификатором объекта связанного приложения:

(Get-MgApplication -ApplicationId ApplicationId).AppRoles

Есть ли более простой способ?

🤔 А знаете ли вы, что...
С PowerShell можно автоматизировать задачи резервного копирования и восстановления данных.


51
1

Ответ:

Решено

Чтобы получить значение роли приложения с учетом идентификатора роли приложения в Entra ID с помощью Microsoft Graph PowerShell, используйте приведенный ниже скрипт:

Я предоставил приложению Microsoft Entra ID несколько разрешений API приложения:

$ServicePrincipalId = "ServicePrincipalObjectID"

$AppRoleAssignments = Get-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $ServicePrincipalId

$AssignedRoles = @()
foreach ($Assignment in $AppRoleAssignments) {
    $ResourceId = $Assignment.ResourceId
    $AppRoleId = $Assignment.AppRoleId

    $ServicePrincipal = Get-MgServicePrincipal -ServicePrincipalId $ResourceId

    $AppRole = $ServicePrincipal.AppRoles | Where-Object { $_.Id -eq $AppRoleId }

    if ($AppRole) {
        $AssignedRoles += [PSCustomObject]@{
            'App Role ID'                    = $AppRole.Id
            'App Role Display Name'          = $AppRole.DisplayName
            'App Role Value'                 = $AppRole.Value
        }
    }
}

$AssignedRoles | Format-Table -AutoSize