Бөлісу құралы:


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

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. В этом примере в пользовательском интерфейсе определены две секретные переменные. 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание.

Хранилища ключей, использующие управление доступом на основе ролей Azure (Azure RBAC), не поддерживаются.

Необходимые компоненты

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

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

  1. В проекте Azure DevOps выберите группу "Библиотека> конвейеров>+ переменная".
  2. На странице групп переменных введите имя и необязательное описание для группы переменных.
  3. Включите секреты ссылки из хранилища ключей Azure в качестве переключателя переменных.
  4. Выберите конечную точку подписки Azure и имя хранилища ключей.
  5. Включите Azure DevOps для доступа к хранилищу ключей, выбрав "Авторизовать " рядом с именем хранилища.
  6. На экране "Выбор секретов" выберите определенные секреты из хранилища для сопоставления с этой группой переменных и нажмите кнопку "ОК".
  7. Нажмите кнопку "Сохранить", чтобы сохранить группу секретных переменных.

Снимок экрана: группа переменных с интеграцией хранилища ключей Azure.

Примечание.

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

  1. Откройте параметры для хранилища ключей и выберите " Перейти к конфигурации>Access" для политик доступа.
  2. На странице политик доступа, если проект Azure Pipelines не указан в разделе "Приложения" с разрешениями "Получить" и "Список", нажмите кнопку "Создать".
  3. В разделе "Секретные разрешения" выберите "Получить" и "Список", а затем нажмите кнопку "Далее".
  4. Выберите субъект-службу и нажмите кнопку "Далее".
  5. Снова нажмите кнопку "Далее ", просмотрите параметры и нажмите кнопку "Создать".

Использование задачи 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.

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