Определение переменных секрета
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Секретные переменные — это зашифрованные переменные, которые можно использовать в конвейерах без предоставления их значения. Секретные переменные можно использовать для частных данных, таких как пароли, идентификаторы и другие идентифицировать данные, которые не нужны в конвейере. Секретные переменные шифруются неактивных с помощью 2048-разрядного ключа RSA и доступны агенту для задач и сценариев для использования.
Рекомендуемые способы задания секретных переменных находятся в пользовательском интерфейсе, в группе переменных и в группе переменных из Azure Key Vault. Вы также можете задать секретные переменные в скрипте с помощью команды ведения журнала, но этот метод не рекомендуется, так как любой пользователь, который может получить доступ к конвейеру, также может видеть секрет.
Секретные переменные, заданные в пользовательском интерфейсе параметров конвейера для конвейера, относятся к конвейеру, в котором они задаются. Группы переменных можно использовать для совместного использования секретных переменных в конвейерах.
Секретная переменная в пользовательском интерфейсе
При редактировании отдельного конвейера можно задать секретные переменные в редакторе конвейера. Вы шифруете и делаете секрет переменной конвейера, выбрав значок блокировки.
Вы задаете секретные переменные таким же образом для YAML и classic.
Чтобы задать секреты в веб-интерфейсе, выполните следующие действия.
- Перейдите на страницу Pipelines (Конвейеры), выберите соответствующий конвейер и нажмите кнопку Edit (Изменить).
- Найдите Variables (Переменные) для этого конвейера.
- Добавьте или обновите переменную.
- Выберите параметр сохранить этот секрет значения, чтобы сохранить переменную зашифрованным образом.
- Сохраните конвейер.
Секретные переменные шифруются неактивных с помощью 2048-разрядного ключа RSA. Секреты доступны агенту для задач и сценариев, которые будут использоваться. Будьте осторожны с тем, кто имеет доступ к изменению конвейера.
Внимание
Мы делаем попытку маскировать секреты от отображения в выходных данных Azure Pipelines, но вам по-прежнему необходимо принять меры предосторожности. Никогда не повторять секреты в качестве выходных данных. Некоторые аргументы командной строки журнала операционных систем. Никогда не передавать секреты в командной строке. Вместо этого мы рекомендуем сопоставить секреты с переменными среды.
Мы никогда не маскируем подстроки секретов. Если, например, "abc123" задается как секрет, "abc" не маскируется из журналов. Это позволяет избежать маскирования секретов на слишком детальном уровне, что делает журналы нечитаемыми. По этой причине секреты не должны содержать структурированные данные. Если, например, "{ "foo": "bar" }" имеет значение секрета, "панель" не маскируется из журналов.
В отличие от обычной переменной, они не расшифровываются автоматически в переменные среды для скриптов. Необходимо явно сопоставить секретные переменные.
Использование секретной переменной в пользовательском интерфейсе
Необходимо сопоставить секретную переменную как переменные среды, чтобы ссылаться на них в конвейерах YAML. В этом примере в пользовательском интерфейсе определены две секретные переменные. SecretOne
SecretTwo
Значение SecretOne
равно foo
и значение SecretTwo
.bar
steps:
- powershell: |
Write-Host "My first secret variable is $env:FOO_ONE"
$env:FOO_ONE -eq "foo"
env:
FOO_ONE: $(SecretOne)
- bash: |
echo "My second secret variable: $FOO_TWO"
if [ "$FOO_TWO" = "bar" ]; then
echo "Strings are equal."
else
echo "Strings are not equal."
fi
env:
FOO_TWO: $(SecretTwo)
Выходные данные конвейера:
My first secret variable is ***
True
My second secret variable: ***
Strings are equal.
Примечание.
Azure Pipelines делает попытку маскировать секреты при создании данных в журналы конвейера, поэтому вы можете увидеть дополнительные переменные и данные, маскированные в выходных данных и журналах, которые не заданы как секреты.
Более подробный пример см. в разделе "Определение переменных".
Установка секретной переменной в группе переменных
Вы можете добавить секреты в группу переменных или связать секреты из существующего Azure Key Vault.
Создание новых групп переменных
Выберите группу "Библиотека> конвейеров>+ переменная".
Введите имя и описание группы.
Необязательно. Переместите переключатель, чтобы связать секреты из хранилища ключей Azure в качестве переменных. Дополнительные сведения см. в разделе "Использование секретов Azure Key Vault".
Введите имя и значение для каждой переменной , включаемой в группу, выбрав +Добавить для каждой из них.
Чтобы обеспечить безопасность переменной, щелкните значок блокировки в конце строки.
После завершения добавления переменных нажмите кнопку "Сохранить".
Группы переменных соответствуют модели безопасности библиотеки.
Связывание секретов из Azure Key Vault
Вы можете создать группы переменных и связать их с существующим хранилищем ключей Azure, что позволяет сопоставить секреты, хранящиеся в хранилище ключей. Только имена секретов сопоставляются с группой переменных, а не значениями секретов. Конвейер запускает, который связывается с группой переменных, извлекает последние значения секретов из хранилища. Дополнительные сведения см. в статье "Связывание группы переменных с секретами в Azure Key Vault".
Использование задачи Azure Key Vault
Задачу Azure Key Vault можно использовать для включения секретов в конвейер. Эта задача позволяет конвейеру подключаться к Azure Key Vault и извлекать секреты для использования в качестве переменных конвейера.
В редакторе конвейера выберите "Показать помощника ", чтобы развернуть панель помощника.
vault
Найдите и выберите задачу Azure Key Vault.
Параметр "Сделать секреты доступными для всего задания " в настоящее время не поддерживается в Azure DevOps Server 2019 и 2020.
Дополнительные сведения о задаче Azure Key Vault см. в статье "Использование секретов Azure Key Vault в Azure Pipelines".
Настройка секретной переменной в сценарии с помощью команд ведения журнала
Для задания переменных в сценариях PowerShell и Bash можно использовать task.setvariable
команду ведения журнала. Этот метод является наименее безопасным способом работы с секретными переменными, но может быть полезным для отладки. Рекомендуемые способы задания секретных переменных находятся в пользовательском интерфейсе, в группе переменных и в группе переменных из Azure Key Vault.
Чтобы задать переменную в качестве скрипта с помощью команды ведения журнала, необходимо передать issecret
флаг.
Если issecret
задано значение true, значение переменной будет сохранено как секрет и замаскировано из журналов.
Примечание.
Azure Pipelines делает попытку маскировать секреты при создании данных в журналы конвейера, поэтому вы можете увидеть дополнительные переменные и данные, маскированные в выходных данных и журналах, которые не заданы как секреты.
Задайте переменную mySecretVal
секрета.
- bash: |
echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"
Получите переменную mySecretVal
секрета.
- bash: |
echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"
- bash: |
echo $(mySecretVal)
Выходные данные секретной переменной в bash.
Дополнительные сведения о настройке и использовании переменных в скриптах.