Динамически получить секрет KeyVault в скрипте Azure DevOps Powershell - PullRequest
0 голосов
/ 29 октября 2019

В нашем конвейере выпуска есть задача Azure Key Vault, которая загружает некоторые секреты для использования на этапе.

В скрипте Inline Azure PowerShell вы можете просто использовать следующее для получения секретного значения:

$secretValue = $(nameOfTheSecretInKeyVault)

Это прекрасно работает.

Однако мы хотим перейти к использованию сценариев в репо, т. Е. Привязать задачу DevOps к пути к файлу, т.е. /somePath/myScript.ps1

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

Я пытался:

$compositeName = "${someParameter}-Application"
$secretValue1 = $($compositeName)
$secretValue2 = $("${compositeName}")
$secretValue3 = env:$compositeName
$secretValue4 = $(${compositeName})

Верхняя строка просто строит название секрета, который нужно искать. К сожалению, ничего из этого не работает. Попытки № 1, № 2 и № 4 возвращаются только с именем строки, фактически не получив секретного значения, и ошибки № 3, говорящие о том, что его не существует.

Есть ли способ достичь этого,или мне просто нужно параметризовать секрет и передать его в сценарий из задачи ADO?

Ответы [ 3 ]

1 голос
/ 29 октября 2019

Либо сначала запустите задачи KeyVault, перед сценарием PowerShell, либо сделайте все это в PowerShell.

Вам потребуется создать служебное подключение к подписке Azure из DevOps Azure. Разрешить служебному подключению доступ к KeyVault. Доступ к KeyVault из PowerShell или Azure CLI.

Например, для PowerShell:

(Get-AzKeyVaultSecret -vaultName "Contosokeyvault" -name "ExamplePassword").SecretValueText

Здесь - подробное описание.

0 голосов
/ 01 ноября 2019

Одним из способов решения этой проблемы является добавление параметра для вашего сценария для передачи переменной release при вызове, что-то вроде -secretValue $(nameOfTheSecretInKeyVault)

Вы можете использовать $env:nameOfTheSecretInKeyVault, нопомните . становитесь _

РЕДАКТИРОВАТЬ: Если вы использовали env:$nameOfTheSecretInKeyVault еще раз, посмотрите на ваш вопрос еще раз, у вас возникла бы проблема. Это $env:<variable_name>

0 голосов
/ 29 октября 2019

Теперь также имеется встроенная интеграция с хранилищем ключей, так что вы можете просто прозрачно считывать ключи в виде группы переменных, не требуя специфичного для Keyvault кода PowerShell.

https://docs.microsoft.com/en-us/azure/devops/pipelines/library/variable-groups?view=azure-devops&tabs=yaml#link-secrets-from-an-azure-key-vault

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