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

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

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

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

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

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

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

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

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

  1. Перейдите на страницу Pipelines (Конвейеры), выберите соответствующий конвейер и нажмите кнопку Edit (Изменить).
  2. Найдите Variables (Переменные) для этого конвейера.
  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. Выберите группу "Библиотека> конвейеров>+ переменная".

    Screenshot of Add variable group button highlighted with red box.

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

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

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

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

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

    Screenshot of saving a variable group.

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

Связывание существующего хранилища ключей Azure с группой переменных и сопоставлением секретов выборочного хранилища с группой переменных.

  1. На странице групп переменных включите секреты link из хранилища ключей Azure в качестве переменных. Вам потребуется существующее хранилище ключей, содержащее секреты. Создайте хранилище ключей с помощью портал Azure.

    Screenshot of variable group with Azure key vault integration.

  2. Укажите конечную точку подписки Azure и имя хранилища, содержащего секреты.

    Убедитесь, что подключение службы Azure имеет по крайней мере разрешения на получение и вывод списка в хранилище для секретов. Включите Azure Pipelines, чтобы задать эти разрешения, выбрав "Авторизовать " рядом с именем хранилища. Или задайте разрешения вручную в портал Azure:

    1. Откройте Параметры для хранилища и выберите политики>доступа.
    2. Выберите субъект и выберите субъект-службу для учетной записи клиента.
    3. Выберите разрешения секрета и убедитесь, что у get и list есть проверка метки.
    4. Нажмите ОК, чтобы сохранить изменения.
  3. На странице групп переменных нажмите кнопку +Добавить, чтобы выбрать определенные секреты из хранилища для сопоставления с этой группой переменных.

Управление секретами хранилища ключей

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

  • Только имена секретов сопоставляются с группой переменных, а не значения секретов. Последнее значение секрета, полученное из хранилища, используется в выполнении конвейера, связанном с группой переменных.

  • Все изменения, внесенные в существующие секреты в хранилище ключей, автоматически доступны для всех конвейеров, используемых группой переменных.

  • При добавлении или удалении новых секретов из хранилища связанные группы переменных не обновляются автоматически. Секреты, включенные в группу переменных, должны быть явно обновлены, чтобы конвейеры, использующие группу переменных, выполнялись правильно.

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

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

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

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

  2. vault Найдите и выберите задачу Azure Key Vault.

    Add the Azure Key Vault task.

Параметр "Сделать секреты доступными для всего задания " в настоящее время не поддерживается в 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.

Screenshot of bash variable output.

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