Jenkins: Маскировка Паролей — MaskPasswordsBuildWrapper

По некоторым причинам вы возможно не захотите хранить учетные данные в Jenkins с помощью Credentials Plugin.

Тем не менее, вам все равно может понадобиться прятать конфиденциальные данные, такие как пароли или секретные ключи, из вывода консоли в Jenkins.

Одно из возможных решений — обернуть части кода, которые вы хотите скрыть, с помощью set +x (перестать показывать вывод) и set -x (возобновить показ вывода).

Однако более элегантным и эффективным решением является использование Mask Passwords Plugin, который позволяет маскировать пароли, которые могут появляться в консоли.

В этой заметке я покажу пример того, как можно прятать пароли в Jenkins-консоли, используя MaskPasswordsBuildWrapper из декларативного Jenkins-пайплайна.

Дельный Совет: Расшифровка секретов, замаскированных с помощью плагина Jenkins Credentials! Читать Далее →

Маскировка Паролей в Jenkins

В первую очередь необходимо установить Mask Passwords Plugin.

Без установки этого плагина вы можете получить следующую ошибку:

java.lang.UnsupportedOperationException: no known implementation of class jenkins.tasks.SimpleBuildWrapper is named MaskPasswordsBuildWrapper

Пример Jenkinsfile с секретными данными, которые необходимо спрятать:

// Define secret variables
def MY_PASSWORD = "YWVyY3dxZWY"
def MY_SECRET = "ZGZoeWt5OGt"

// Mask secret variables and try to print
pipeline {
  agent any
  stages {
    stage ("Print variable") {
      steps {
        wrap([$class: "MaskPasswordsBuildWrapper",
              varPasswordPairs: [[password: MY_PASSWORD],
                                 [password: MY_SECRET]]]) {
          echo "Password: ${MY_PASSWORD}"
          echo "Secret: ${MY_SECRET}"
        }
      }
    }
  }
}

Если вы попытаетесь вывести переменные, замаскированные с помощью MaskPasswordsBuildWrapper, то увидите, что их значения спрятаны за звездочками:

[Pipeline] echo
Password: ********
[Pipeline] echo
Secret: ********

Дельный Совет: Интерактивный запрос пользователя на ввод его учетных данных во время выполнения Jenkins-пайплайна! Читать далее →