Я работаю над подключением к 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, или это возможно сначала?
Чтобы добавить разрешения 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}: $_"
}
}
}
Ответ:
Чтобы подтвердить это, я проверил то же самое на портале, где разрешения успешно добавлены к субъекту-службе, как показано ниже: