Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Секретные переменные — это зашифрованные переменные, которые можно использовать в конвейерах без предоставления их значения. Используйте секретные переменные для конфиденциальных данных, таких как пароли, идентификаторы и другие идентифицирующие данные, которые вы не хотите раскрывать в конвейере. Секретные переменные шифруются в состоянии покоя с помощью 2048-разрядного ключа RSA и доступны агенту для выполнения задач и сценариев.
Почему секретные переменные имеют значение: Защита конфиденциальных учетных данных в конвейерах CI/CD имеет решающее значение. Безопасное хранение секретов позволяет предотвратить несанкционированный доступ к конфиденциальным ресурсам, снизить риск раскрытия учетных данных в журналах сборки и обеспечить соответствие рекомендациям по безопасности. Секретные переменные гарантируют, что только авторизованные конвейеры и задачи могут получать доступ к конфиденциальным данным, защищая безопасность вашей организации.
Рекомендуемые способы задания секретных переменных находятся в пользовательском интерфейсе, в группе переменных и в группе переменных из Azure Key Vault. Вы также можете задать секретные переменные в скрипте с помощью команды ведения журнала, но этот метод не рекомендуется, так как любой пользователь, который может получить доступ к конвейеру, также может видеть секрет.
Секретные переменные, заданные в пользовательском интерфейсе параметров конвейера, относятся к конвейеру, в котором они заданы. Используйте группы переменных для совместного использования секретных переменных в конвейерах.
Секретная переменная в пользовательском интерфейсе
Задайте секретные переменные в редакторе конвейера при редактировании отдельного конвейера. Зашифруйте и создайте секрет переменной конвейера, выбрав значок блокировки.
Задайте секретные переменные для YAML и Classic одинаковым образом.
Чтобы задать секреты в веб-интерфейсе, выполните следующие действия.
- Перейдите на страницу Pipelines (Конвейеры), выберите соответствующий конвейер и нажмите кнопку Edit (Изменить).
- Найдите Переменные для этого конвейера.
- Добавьте или обновите переменную.
- Выберите параметр сохранить это значение в секрете, чтобы переменная хранилась в зашифрованном виде.
- Сохраните конвейер.
Секретные переменные шифруются неактивных с помощью 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 Key Vault в качестве переменных. Дополнительные сведения см. в разделе "Использование секретов Azure Key Vault".
Введите имя и значение для каждой переменной , включаемой в группу, выбрав +Добавить для каждой из них.
Чтобы обеспечить безопасность переменной, выберите значок блокировки в конце строки.
После завершения добавления переменных нажмите кнопку "Сохранить".
Группы переменных соответствуют модели безопасности библиотеки.
Связывание секретов из Azure Key Vault
Вы можете создать группы переменных и связать их с существующим Key Vault, чтобы сопоставить секреты, хранящиеся в хранилище ключей. Только имена секретов сопоставляются с группой переменных, а не значениями секретов. Конвейер запускается и ссылается на группу переменных, извлекая последние секретные значения из хранилища. Дополнительные сведения см. в статье "Связывание группы переменных с секретами в Azure Key Vault".
Использование задачи Azure Key Vault
Используйте задачу Azure Key Vault для включения секретов в конвейер. С помощью этой задачи ваш конвейер может подключиться к ключевому хранилищу и получить секреты для использования в качестве переменных конвейера.
В редакторе конвейера выберите "Показать помощника ", чтобы развернуть панель помощника.
vaultНайдите и выберите задачу Key Vault.
Дополнительные сведения о задаче Key Vault см. в статье "Использование секретов Azure Key Vault в Azure Pipelines".
Настройка секретной переменной в скрипте с помощью команд ведения журнала
task.setvariable Используйте команду ведения журнала для задания переменных в сценариях PowerShell и Bash. Этот метод является наименее безопасным способом работы с секретными переменными, но может быть полезным для отладки. Рекомендуемые способы задания секретных переменных находятся в пользовательском интерфейсе, в группе переменных и в группе переменных из Key Vault.
Предупреждение
Риск безопасности. Настройка секретных переменных в скриптах с помощью команд ведения журнала по сути менее безопасна. Любой пользователь с доступом к определению конвейера, журналам сборки или исходному коду может увидеть команды записи журнала и потенциально разгласить секрет. Используйте этот метод только для отладки в безопасных доверенных средах. Всегда предпочитайте конфигурацию на основе пользовательского интерфейса, группы переменных или интеграцию 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.
Дополнительные сведения см. в разделе "Настройка" и использование переменных в скриптах.