Get-AzADServicePrincipal ApplicationId становится пустым в powershell-pipe, но работает в оболочке - PullRequest
1 голос
/ 07 марта 2020
Write-Host "Adding permissions to key vault"
$objectId=(Get-AzDataFactoryV2 -ResourceGroupName $rgName -Name $adfName).Identity.PrincipalId
$appId = (Get-AzADServicePrincipal -ObjectId $objectId).ApplicationId
Write-Host "~### error empty appId =" $appId
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $appId -PermissionsToSecrets Get

Этот скрипт был выполнен из конвейера, и $ appId пустует. Но он работает на облачной оболочке.

1 Ответ

1 голос
/ 09 марта 2020

Полагаю, вы не предоставили разрешение для субъекта-службы вашего соединения службы Resource Manager в конвейере devops.

Я могу воспроизвести вашу проблему с субъектом-службой, у которого нет разрешения на получение участников-служб, нет сообщения об ошибке, но также не выводится, если вы выполните команду локально, перехватите запрос, вы обнаружите ошибку 403.

enter image description here

Но он работает в облачной оболочке.

В облачной оболочке он использует учетные данные учетной записи пользователя, которую вы вошли в облачную оболочку. Если это работает, это просто означает, что ваша учетная запись пользователя имеет разрешение на получение участника службы.

Чтобы устранить эту проблему, перейдите к Azure Active Directory на портале -> App registrations -> All applications -> найти приложение, соответствующее сервису подключения, его имя должно быть вроде organizationname-projectname-513f22f1-befd-xxxxxxcfe90f1. Затем щелкните его -> добавьте разрешение, как на снимках экрана ( Примечание : вашей учетной записи пользователя нужна роль администратора, чтобы нажать кнопку Grant admin consent, например, Global admin).

enter image description here

enter image description here

После предоставления разрешения, подождите некоторое время, участник службы соединения службы сможет получить субъект службы, скрипт должен нормально работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...