Предоставление доступа субъекту службы управляемой идентификации — Microsoft Graph PowerShell

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

Я нашел сценарий, использующий модуль AzureAD, но, поскольку он скоро устареет, я хочу перейти на модуль Microsoft Graph PowerShell, где мне понадобится помощь с эквивалентными командами.

Вот старый скрипт, который я нашел:


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

}

Может ли кто-нибудь предоставить руководство или сценарий для достижения этой цели с помощью модуля Microsoft Graph PowerShell?

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
0
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Назначение ролей вашему Управляемому удостоверению с помощью Graph API будет выглядеть следующим образом. Вызовы в этом примере следующие:

Если вы хотите использовать командлеты из модуля Microsoft.Graph.Applications вместо прямых вызовов API с помощью Invoke-MgGraphRequest , вам нужно использовать командлеты Get-MgServicePrincipal и New-MgServicePrincipalAppRoleAssignment.

Connect-MgGraph ....

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

$NameOfMSI = 'my-managed-identity'
$msi = Invoke-MgGraphRequest GET "v1.0/servicePrincipals?`$filter=displayName eq '$NameOfMSI'"
$msiId = $msi.value[0]['id']

$GraphAppId = '00000003-0000-0000-c000-000000000000'
$GraphServicePrincipal = Invoke-MgGraphRequest GET "v1.0/servicePrincipals(appId='$GraphAppId')"

foreach ($role in $GraphServicePrincipal['appRoles']) {
    if ($role['value'] -in $Permissions -and 'Application' -in $role['allowedMemberTypes']) {
        Invoke-MgGraphRequest POST "v1.0/servicePrincipals/$msiId/appRoleAssignments" -Body @{
            principalId = $msiId
            resourceId  = $GraphAppId
            appRoleId   = $role['id']
        }
    }
}

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