Вы также можете использовать API поставщика учетных данных Jenkins для достижения этой цели.
Использование API поставщика учетных данных вместо шага сценария дает несколько преимуществ:
- Учетные данные в вашем скрипте конвейера Jenkins («что») отделены от логики, которая их ищет («как»), что делает ваши скрипты более чистыми и переносимыми.
- Вы можете загрузить несколько поставщиков учетных данных, если вам нужно прочитать учетные данные из нескольких мест.
- Поставщики учетных данных эффективно кэшируют секретные метаданные, гарантируя, что секретные значения остаются вне памяти до момента, когда они понадобятся.
- Jenkins автоматически маскирует значения учетных данных, которые печатаются в журнале сборки, поэтому случайная утечка значений сложнее.
- Пользовательский интерфейс учетных данных Jenkins и пользовательский интерфейс конструктора вакансий показывают, какие учетные данные доступны, что упрощает создание сценариев заданий.
Это правда, что есть некоторая сложность предварительной настройки поставщика учетных данных по сравнению с шагом сценария. Однако, если вы используете учетные данные более чем в 1 или 2 сценариях, или любые из ваших учетных данных будут иметь нетривиальные последствия, если они будут неправильно управляться или просочиться (например, ключи загрузки Artifactory), я определенно думаю, что стоит взять эту стоимость сейчас взамен для более простого управления учетными данными и последующего обслуживания.
Дополнительную информацию см. В документации Jenkins.
Пример
Если вы хотите использовать API поставщика учетных данных с секретами, которые вы сохранили в диспетчере секретов, вы должны использовать плагин AWS Secrets Manager Credentials Provider. (Отказ от ответственности: я поддерживаю этот плагин.)
Сначала мы устанавливаем плагин AWS Secrets Manager Credentials Provider на Jenkins и предоставляем Jenkins IAM доступ к Secrets Manager.
Затем мы загружаем имя пользователя Jenkins с паролем «artifactory» в диспетчер секретов, которое содержит имя пользователя «joe» (неконфиденциальная информация) и пароль «supersecret» (конфиденциальная информация).
aws secretsmanager create-secret \
--name 'artifactory' \
--secret-string 'supersecret' \
--description 'Acme Corp Artifactory user' \
--tags 'Key=jenkins:credentials:username,Value=joe' 'Key=jenkins:credentials:type,Value=usernamePassword'
Затем мы привязываем «искусственные» учетные данные к нашему файлу Jenkins.
pipeline {
agent any
environment {
ARTIFACTORY = credentials('artifactory')
}
stages {
stage('Foo') {
steps {
// Three environment variables are now available to use however you want:
//
// ARTIFACTORY=joe:supersecret
// ARTIFACTORY_USR=joe
// ARTIFACTORY_PSW=supersecret
sh './deploy'
}
}
}
}
person
chriskilding
schedule
09.10.2020