Как добавить разрешения Microsoft Graph к субъекту-службе управляемой идентификации с помощью Az PowerShell?

Я работаю над подключением к Microsoft Graph с использованием удостоверения, управляемого пользователем (UMI). Я уже создал управляемое удостоверение на портале Azure, но теперь мне нужно назначить этому удостоверению такие разрешения, как User.Read.All и Group.Read.All, с помощью PowerShell для получения информации о пользователе и группе.

Ранее я задавал аналогичный вопрос и получил решение с помощью модуля Microsoft Graph PowerShell здесь Предоставить доступ к субъекту службы управляемой идентификации — Microsoft Graph PowerShell. Однако теперь мне нужно добиться того же результата с помощью модуля Az PowerShell.

Вот старый скрипт, использующий модуль AzureAD:


Connect-AzureAD



$TenantID = "TenantID"

$GraphAppId = "00000003-0000-0000-c000-000000000000"

$NameOfMSI = "my-managed-identity"

$Permissions = @("Group.Read.All", "User.Read.All")



$MSI = Get-AzureADServicePrincipal -Filter "displayName eq '$NameOfMSI'"

Start-Sleep -Seconds 10

$GraphServicePrincipal = Get-AzureADServicePrincipal -Filter "appId eq

'$GraphAppId'"



foreach ($PermissionName in $Permissions) {

    $AppRole = $GraphServicePrincipal.AppRoles | Where-Object {

        $_.Value -eq $PermissionName -and $_.AllowedMemberTypes

-contains "Application"

    }

    New-AzureAdServiceAppRoleAssignment -ObjectId $MSI.ObjectId

-PrincipalId $MSI.ObjectId -ResourceId $GraphServicePrincipal.ObjectId

-Id $AppRole.Id

}

Может ли кто-нибудь подсказать мне, как это сделать с помощью модуля Az PowerShell, или это возможно сначала?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы добавить разрешения Microsoft Graph к субъекту-службе управляемой идентификации с помощью Az PowerShell, используйте приведенный ниже пример сценария:

Connect-AzAccount
$GraphAppId = "00000003-0000-0000-c000-000000000000"
$NameOfMSI = "testusermsi"
$Permissions = @("Group.Read.All", "User.Read.All")

$GraphServicePrincipal = Get-AzADServicePrincipal -AppId $GraphAppId

foreach ($name in $Permissions) {
    $AppRole = $GraphServicePrincipal.AppRole | Where-Object {
        $_.Value -eq $name -and $_.Origin -contains "Application"
    }

    if ($AppRole) {
        try {
            New-AzADServicePrincipalAppRoleAssignment `
                -ServicePrincipalDisplayName $NameOfMSI `
                -ResourceDisplayName $GraphServicePrincipal.DisplayName `
                -AppRoleId $AppRole.Id
        } catch {
            Write-Error "Failed to assign ${name}: $_"
        }
    }
}

Ответ:

Чтобы подтвердить это, я проверил то же самое на портале, где разрешения успешно добавлены к субъекту-службе, как показано ниже:

Другие вопросы по теме

Предоставление доступа субъекту службы управляемой идентификации — Microsoft Graph PowerShell
Аутентификация ManagedIdentityCredential недоступна. Запрошенный идентификатор не был назначен этому ресурсу
Использование bash и управляемых удостоверений для клонирования репозитория git в той же организации
Как решить проблему «ManagedIdentityCredential.GetToken не удалось получить токен доступа». при использовании Azure ServiceBusTrigger и управляемого удостоверения?
Функция Azure завершается сбоем из-за ошибки: неправильное имя пользователя или пароль: C:\host\LogFiles\Application\Function\Host
Невозможно связать базу данных SQL Azure с фабрикой данных с помощью управляемого удостоверения
Журналы запросов из Application Insights в Python — InsufficientAccessError
Вызов хранимой процедуры из EF Core 8 с управляемыми удостоверениями
Как создать клиент Kusto с помощью управляемой идентификации Synapse
Могу ли я иметь секреты, срок действия которых не истекает в системе единого входа Microsoft через Azure Microsoft Entra ID?