Как использовать секреты в задаче сценария Azure DevOps Powershell

У меня есть секрет в хранилище ключей Azure, в котором обычно хранится одна команда az login --service-principal -u ...

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

Конвейер Azure DevOps является классическим (на данный момент не может быть YAML).

Задача Powershell — это первый путь к файлу (не может быть встроенным, поскольку скрипт передает 20 000 символов).

«ему просто нужно делать то, для чего он предназначен» — ну, для чего он предназначен и что он делает в настоящее время?

Mathias R. Jessen 17.07.2024 19:49

ну, команда az login --spn... поэтому ей нужно войти в систему, затем она показывает кучу подписок, к которым у него есть доступ, и это означает, что это работает, но сейчас этого не происходит, я просто получаю "***"

Mudit Balooja 17.07.2024 19:57

Можете ли вы поделиться соответствующими частями сценария и определением задачи? Например. любое место, где вы ссылаетесь на секрет

Mathias R. Jessen 17.07.2024 20:11

Я тестировал небольшой пример сценария, состоящего всего из 2 строк $(azCreds) az account show. Если это встроено, это работает!! но поскольку мне нужно использовать путь к файлу, его нет. Я пытался передать секрет в качестве аргумента, переменной среды, но все равно "***"

Mudit Balooja 17.07.2024 20:18
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
4
82
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У меня есть секрет в хранилище ключей Azure, в котором обычно хранится одна команда az login --service-principal -u ...

Azure Key Vault следует использовать для хранения конфиденциальной информации, а не какой-либо логики. Рассмотрите возможность создания секретов для имени пользователя, пароля и идентификатора клиента вместо хранения всей команды az login....

Другой альтернативой может быть использование подключения к службе Azure для субъекта-службы.

Я пытаюсь вызвать этот секрет в простой задаче Powershell, но когда я запускаю конвейер каждый раз, он отображается как замаскированный выводом ***

Секретные переменные — это зашифрованные переменные, которые можно использовать в конвейерах, не раскрывая их значения, т. е. Azure Pipelines пытается замаскировать секреты при отправке данных в журналы конвейера.

Обратите внимание, что рекомендуемые способы установки секретных переменных — в пользовательском интерфейсе, в группе переменных и в группе переменных из Azure Key Vault. Вы также можете установить секретные переменные в скрипте с помощью команды регистрации, но это не рекомендуется, поскольку любой, кто имеет доступ к вашему конвейеру, также может увидеть секрет.

Дополнительную информацию см. в разделе Установка секретных переменных.

Итак, если я сохраню имя пользователя, pswd и т. д. в хранилище ключей и вызову их в сценарии, это будет работать? Почему то, что я делаю, не работает? Если я вызываю переменную во встроенном скрипте, она работает! Но не тогда, когда я передаю его как аргумент или переменную среды в случае пути к файлу.

Mudit Balooja 18.07.2024 01:20

Привет @MuditBalooja, спасибо за обновление. Могу я узнать, что вы имели в виду под If I call the variable in inline script, it works? Вы связали секреты в своем хранилище ключей с библиотекой конвейеров и вызвали секретную переменную во встроенном скрипте, например Write-Host $(someKVSecret)?

Alvin Zhao - MSFT 18.07.2024 05:03

Можете ли вы поделиться своим сценарием PowerShell в исходном сообщении и сообщить нам, как вы получили секретное значение Key Vault для запуска az login? Использовалась ли библиотека конвейеров, связанная с вашим Key Vault? Кстати, ваш конвейер работал на агенте, размещенном в Microsoft, или на локальном агенте?

Alvin Zhao - MSFT 18.07.2024 05:08
So if I store username, pswd, etc. In key vault and call them in script it'll work? - как ты извлекаешь секреты? Если вы используете задачу AzureKeyVault, или группа переменных, связанная с секретами KeyVault, будет доступна в конвейере. Более подробную информацию смотрите в последней ссылке в моем ответе.
Rui Jarimba 18.07.2024 08:06

Привет, Руи, ты был прав: вместо того, чтобы сохранять всю команду, я просто сохранил имя пользователя, pswd, арендатора, и это сработало! Но у меня все еще остается вопрос о том, почему существует отдельное поведение встроенного пути и пути к файлу. Я использую задачу AzureKey Vault, чтобы загрузить все секреты из хранилища ключей и передать их в качестве аргумента для использования сценария ps.

Mudit Balooja 18.07.2024 19:23

@MuditBalooja, пожалуйста, отредактируйте свой вопрос и включите соответствующий код, то есть задачи AzureKeyVault и Powershell.

Rui Jarimba 18.07.2024 23:47

Другие вопросы по теме

Похожие вопросы