У меня есть секрет в хранилище ключей Azure, в котором обычно хранится одна команда az login --service-principal -u ...
Я пытаюсь вызвать этот секрет в простой задаче Powershell, но когда я запускаю конвейер каждый раз, он отображается как замаскированный выводом ***. Его не нужно показывать, он просто должен делать то, для чего предназначен.
Конвейер Azure DevOps является классическим (на данный момент не может быть YAML).
Задача Powershell — это первый путь к файлу (не может быть встроенным, поскольку скрипт передает 20 000 символов).
ну, команда az login --spn... поэтому ей нужно войти в систему, затем она показывает кучу подписок, к которым у него есть доступ, и это означает, что это работает, но сейчас этого не происходит, я просто получаю "***"
Можете ли вы поделиться соответствующими частями сценария и определением задачи? Например. любое место, где вы ссылаетесь на секрет
Я тестировал небольшой пример сценария, состоящего всего из 2 строк $(azCreds) az account show. Если это встроено, это работает!! но поскольку мне нужно использовать путь к файлу, его нет. Я пытался передать секрет в качестве аргумента, переменной среды, но все равно "***"


У меня есть секрет в хранилище ключей Azure, в котором обычно хранится одна команда
az login --service-principal -u ...
Azure Key Vault следует использовать для хранения конфиденциальной информации, а не какой-либо логики. Рассмотрите возможность создания секретов для имени пользователя, пароля и идентификатора клиента вместо хранения всей команды az login....
Другой альтернативой может быть использование подключения к службе Azure для субъекта-службы.
Я пытаюсь вызвать этот секрет в простой задаче Powershell, но когда я запускаю конвейер каждый раз, он отображается как замаскированный выводом
***
Секретные переменные — это зашифрованные переменные, которые можно использовать в конвейерах, не раскрывая их значения, т. е. Azure Pipelines пытается замаскировать секреты при отправке данных в журналы конвейера.
Обратите внимание, что рекомендуемые способы установки секретных переменных — в пользовательском интерфейсе, в группе переменных и в группе переменных из Azure Key Vault. Вы также можете установить секретные переменные в скрипте с помощью команды регистрации, но это не рекомендуется, поскольку любой, кто имеет доступ к вашему конвейеру, также может увидеть секрет.
Дополнительную информацию см. в разделе Установка секретных переменных.
Итак, если я сохраню имя пользователя, pswd и т. д. в хранилище ключей и вызову их в сценарии, это будет работать? Почему то, что я делаю, не работает? Если я вызываю переменную во встроенном скрипте, она работает! Но не тогда, когда я передаю его как аргумент или переменную среды в случае пути к файлу.
Привет @MuditBalooja, спасибо за обновление. Могу я узнать, что вы имели в виду под If I call the variable in inline script, it works? Вы связали секреты в своем хранилище ключей с библиотекой конвейеров и вызвали секретную переменную во встроенном скрипте, например Write-Host $(someKVSecret)?
Можете ли вы поделиться своим сценарием PowerShell в исходном сообщении и сообщить нам, как вы получили секретное значение Key Vault для запуска az login? Использовалась ли библиотека конвейеров, связанная с вашим Key Vault? Кстати, ваш конвейер работал на агенте, размещенном в Microsoft, или на локальном агенте?
So if I store username, pswd, etc. In key vault and call them in script it'll work? - как ты извлекаешь секреты? Если вы используете задачу AzureKeyVault, или группа переменных, связанная с секретами KeyVault, будет доступна в конвейере. Более подробную информацию смотрите в последней ссылке в моем ответе.
Привет, Руи, ты был прав: вместо того, чтобы сохранять всю команду, я просто сохранил имя пользователя, pswd, арендатора, и это сработало! Но у меня все еще остается вопрос о том, почему существует отдельное поведение встроенного пути и пути к файлу. Я использую задачу AzureKey Vault, чтобы загрузить все секреты из хранилища ключей и передать их в качестве аргумента для использования сценария ps.
@MuditBalooja, пожалуйста, отредактируйте свой вопрос и включите соответствующий код, то есть задачи AzureKeyVault и Powershell.
«ему просто нужно делать то, для чего он предназначен» — ну, для чего он предназначен и что он делает в настоящее время?