Я пытаюсь установить секреты внутри своего Azure Keyvault с помощью задачи Azure Powershell в DevOps Azure. Я использую следующий код:
Set-AzureKeyVaultSecret -VaultName $KeyvaultName -Name $SecretName -SecretValue $secretvalue
С именами и значением все настройки внутри переменных и пытался использовать это без переменных. Это значение сохраняется в виде безопасной строки со следующим кодом. ConvertTo-SecureString
Но когда я запускаю этот код powershell в своем конвейере выпуска DevOps Azure, я получаю следующее сообщение об ошибке:
Cannot retrieve access token for resource 'AzureKeyVaultServiceEndpointResourceId'. Please ensure that you have provided the appropriate access tokens when using access token login.
Итак, я убедился, что у участника службы и сервера сборки есть правильный доступ к keyvault, добавив их в политики доступа с разрешением get, list, set secrets.
У меня естьтакже добавлены следующие строки кода, чтобы убедиться, что профиль загружен правильно
########################################################################################
$azureRmProfile = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile
$profileClient = New-Object -TypeName Microsoft.Azure.Commands.ResourceManager.Common.RMProfileClient -ArgumentList ($azureRmProfile)
$context = Get-AzureRmContext
$AzureToken = $profileClient.AcquireAccessToken($context.Tenant.Id)
Add-AzureRmAccount -AccessToken $AzureToken.AccessToken -AccountId $AzureToken.UserId
########################################################################################
Добавив этот код в начало встроенного скрипта и используя профиль с commando в качестве переменной для -DefaultProfile.
Я также включил опцию включения скрипта для доступа к токену Oauth.
Кто-то также пытался установить секрет из задачи powershell в DevOps Azure. Или знаете, почему скрипт powershell не может получить доступ к keyvault. Командная команда azurermContext предоставила мне правильный вывод, даже попробовала команду Get-AzureRmKeyvault, чтобы выяснить, правильно ли уже настроено подключение к среде. И это тоже не доставило проблем.