Поделиться через


Определение переменных секрета

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Секретные переменные — это зашифрованные переменные, которые можно использовать в конвейерах без предоставления их значения. Секретные переменные можно использовать для конфиденциальной информации, такой как пароли, идентификаторы и другие идентифицирующие данные, которые не должны быть раскрыты в конвейере. Секретные переменные шифруются в состоянии покоя с помощью 2048-разрядного ключа RSA и доступны агенту для выполнения задач и сценариев.

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

Секретные переменные, заданные в интерфейсе настроек конвейера, относятся к тому конвейеру, где они установлены. Группы переменных можно использовать для совместного использования секретных переменных в конвейерах.

Секретная переменная в пользовательском интерфейсе

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

Вы задаете секретные переменные таким же образом для YAML и classic.

Чтобы задать секреты в веб-интерфейсе, выполните следующие действия.

  1. Перейдите на страницу Pipelines (Конвейеры), выберите соответствующий конвейер и нажмите кнопку Edit (Изменить).
  2. Найдите Переменные для этого конвейера.
  3. Добавьте или обновите переменную.
  4. Выберите параметр сохранить это значение в секрете, чтобы переменная хранилась в зашифрованном виде.
  5. Сохраните конвейер.

Секретные переменные шифруются неактивных с помощью 2048-разрядного ключа RSA. Секреты доступны агенту для использования в задачах и сценариях. Будьте осторожны с тем, кто имеет доступ к изменению конвейера.

Внимание

Мы стараемся маскировать секреты в выводе Azure Pipelines, но вам всё же необходимо принять меры предосторожности. Никогда не повторять секреты в качестве выходных данных. Некоторые аргументы командной строки журнала операционных систем. Никогда не передавать секреты в командной строке. Вместо этого мы рекомендуем перенести ваши секреты в переменные среды.

Мы никогда не скрываем части секретной информации. Если, например, "abc123" задается как секрет, "abc" не маскируется в журналах. Это позволяет избежать маскирования секретов на слишком детальном уровне, что делает журналы нечитаемыми. По этой причине секреты не должны содержать структурированные данные. Если, например, "{ "foo": "bar" }" имеет значение секрета, "панель" не маскируется из журналов.

В отличие от обычной переменной, они не расшифровываются автоматически в переменные среды для скриптов. Необходимо явно сопоставить секретные переменные.

Использование секретной переменной в пользовательском интерфейсе

Необходимо сопоставить секретную переменную с переменными среды, чтобы ссылаться на них в пайплайнах YAML. В этом примере в пользовательском интерфейсе определены две секретные переменные. SecretOneSecretTwo Значение 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.

Создание новых групп переменных

  1. Выберите группу "Библиотека> конвейеров>+ переменная".

    Снимок экрана: кнопка

  2. Введите имя и описание группы.

  3. Необязательно. Переместите переключатель, чтобы связать секреты из хранилища ключей Azure в качестве переменных. Дополнительные сведения см. в разделе "Использование секретов Azure Key Vault".

  4. Введите имя и значение для каждой переменной , включаемой в группу, выбрав +Добавить для каждой из них.

  5. Чтобы обеспечить безопасность переменной, щелкните значок блокировки в конце строки.

  6. После завершения добавления переменных нажмите кнопку "Сохранить".

    Снимок экрана: сохранение группы переменных.

Группы переменных соответствуют модели безопасности библиотеки.

Вы можете создать группы переменных и связать их с существующим хранилищем ключей Azure, что позволяет сопоставить секреты, хранящиеся в хранилище ключей. Только имена секретов сопоставляются с группой переменных, а не значениями секретов. Запуски конвейера, которые связаны с группой переменных, извлекают последние секретные значения из хранилища. Дополнительные сведения см. в статье "Связывание группы переменных с секретами в Azure Key Vault".

Использование задачи Azure Key Vault

Задачу Azure Key Vault можно использовать для добавления секретов в конвейер. Эта задача позволяет конвейеру подключаться к Azure Key Vault и извлекать секреты для использования в качестве переменных конвейера.

  1. В редакторе конвейера выберите "Показать помощника ", чтобы развернуть панель помощника.

  2. Найдите vault и выберите задачу Azure Key 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.

Снимок экрана: выходные данные переменной Bash.

Дополнительные сведения о настройке и использовании переменных в скриптах.