Почему я получаю сообщение об ошибке «Предоставленная информация не соответствует идентификатору объекта AD». при выполнении New-AzRoleAssignment с использованием субъекта-службы?

Используя Powershell в конвейере Azure DevOps, я пытаюсь назначить принципалу хранилища ключей роль Storage Account Key Operator Service Role учетной записи хранения.

Командная строка

Командная строка запускается после того, как я подключил Azure к субъекту службы:

$credentials = New-Object -TypeName System.Management.Automation.PSCredential($servicePrincipalApplicationId, $clientSecret)

Connect-AzAccount -ServicePrincipal -Credential $credentials -Tenant $tenantId

Вот командная строка, которую я выполняю:

New-AzRoleAssignment -ApplicationId $keyVaultServicePrincipalId -ResourceGroupName $resourceGroupName -ResourceName $storageAccountName -ResourceType "Microsoft.Storage/storageAccounts" -RoleDefinitionName "Storage Account Key Operator Service Role"

Где:

Руководитель службы

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

Разрешения участника-службы

Команда запускается от имени субъекта-службы, который имеет роль владельца в подписке:

Владелец в подписке

Группа ресурсов, созданная в этой подписке, также принадлежит этому субъекту службы:

Владелец в группе ресурсов

Вопрос

Когда я запускаю команду, я получаю следующую ошибку:

New-AzRoleAssignment: The provided information does not map to an AD object id.

Почему я получаю ошибку The provided information does not map to an AD object id. при выполнении команды New-AzRoleAssignment?


person Kzrystof    schedule 02.11.2020    source источник


Ответы (1)


Я тоже могу воспроизвести это со своей стороны, есть две проблемы.

введите описание изображения здесь

1. В вашей команде ResourceType должно быть Microsoft.Storage/storageAccounts, а не Microsoft.Storage/storageAccount.

2. В разрешении API вашего приложения AD, связанном с субъектом службы, используемым в соединении DevOps servcie, вам необходимо добавить разрешение приложения Directory.Read.All в Azure Active Directory Graph, а не Microsoft Graph.

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

Через некоторое время, чтобы эффект вступил в силу, он будет работать нормально.

введите описание изображения здесь

person Joy Wang    schedule 03.11.2020
comment
Я избегал разрешений Legacy, но это работает. Отличный ответ :) - person Kzrystof; 03.11.2020