Хранение AWS ключей в Jenkins через CloudBees AWS Credentials
Краткое описание
Вы можете хранить AWS ключи безопасно в Jenkins через ресурс Credentials. Вместо того, чтобы прописывать ключи прямо в Jenkins Pipeline, используйте плагин CloudBees AWS Credentials для сохранения AWS IAM user credentials в Jenkins Credentials API. Для внедрения этих учётных данных в Pipeline применяется шаг withAWS из плагина Pipeline: AWS Steps. В этой инструкции мы установим оба плагина, добавим AWS Access и Secret keys в Jenkins, а затем проверим их работоспособность через операции s3Upload и s3Download.
Предпосылки
- AWS IAM user с Access Key ID и Secret Access Key и правами чтения/записи для S3. (Создание IAM пользователя нужно выполнить заранее.)
- S3 bucket. Замените примеры названий на свои реальные значения.
- Рабочий Jenkins-сервер (например, установленный на EC2/Ubuntu или контейнере).
Что сделаем
- Установим CloudBees AWS Credentials.
- Сохраним AWS Access Key и Secret Key в Jenkins Credentials.
- Установим Pipeline: AWS Steps.
- Создадим Pipeline и протестируем креденшелы загрузкой и скачиванием файла из S3.
Установка CloudBees AWS Credentials
- Зайдите в Jenkins по адресу http://
:8080/jenkins

- На дашборде нажмите “Manage Jenkins” в левой панели.

- В разделе System Configuration откройте “Manage Plugins”.

- Перейдите на вкладку Available и найдите плагин, введя в поиск «cloudbees secret manager».

- Отметьте “CloudBees AWS Credentials” и нажмите “Install without restart”.

- Дождитесь сообщения об успешной установке.

Сохранение AWS Access и Secret keys в Jenkins Credentials
- Вернитесь к дашборду Jenkins и откройте “Manage Jenkins”.

- Нажмите “Manage Credentials” в разделе Security.

- Выберите домен global под Stores scoped to Jenkins и нажмите “Add credentials”.

- В поле Kind выберите AWS. Укажите идентификатор (ID) для удобства, описание, Access Key ID и Secret Access Key. Нажмите OK.

- Проверьте, что учётная запись появилась в списке.

Важно: давайте имя учётной записи так, чтобы его было легко ссылаться в Pipeline. Не храните в Jenkins ключи с правами шире, чем необходимо.
Установка Pipeline: AWS Steps
- Снова откройте “Manage Plugins” и на вкладке Available найдите “AWS Steps” или “Pipeline: AWS Steps”.

- Установите плагин без перезагрузки и дождитесь сообщения об успешной установке.

Создание Pipeline и тест кредитов
- На дашборде нажмите “New Item”.

- Дайте имя, выберите тип Pipeline и нажмите OK.
- В конфигурации найдите раздел Pipeline и вставьте следующий скрипт в поле Pipeline script. Вставьте своё имя credentials и имя бакета.
pipeline {
agent any
stages {
stage('test AWS credentials') {
steps {
withAWS(credentials: 'jenkins-test-user', region: 'us-east-1') {
sh 'echo "hello Jenkins">hello.txt'
s3Upload acl: 'Private', bucket: 'devopslee', file: 'hello.txt'
s3Download bucket: 'devopslee', file: 'downloadedHello.txt', path: 'hello.txt'
sh 'cat downloadedHello.txt'
}
}
}
}
}Пояснения: credentials — это ID записи в Jenkins Credentials (указанное вами имя). region — регион S3. bucket — имя вашего S3 бакета.
- Сохраните конфигурацию и нажмите “Build Now” для запуска.

- Откройте Build history -> Console output и убедитесь, что файл создался, загрузился в S3, скачался и был выведен в консоль.

Если все шаги выполнены — значит Jenkins успешно использует сохранённые AWS ключи для доступа к S3.

Частые проблемы и способы их устранения
- Неверные ключи или истёкший Secret. Проверьте, что Access Key/Secret действительны и не отозваны.
- Неправильная зона (region). Убедитесь, что параметр region совпадает с регионом вашего S3 бакета.
- Ограничения IAM policy. Проверьте политику IAM пользователя: нужны права s3:PutObject, s3:GetObject и s3:ListBucket по нужному бакету.
- Проблемы сети или прокси. Jenkins-агент должен иметь доступ к S3 (HTTPS, 443).
- Невалидный ID credentials. В конфигурации Pipeline используйте именно тот ID, который указан в Jenkins Credentials.
Важно: просматривайте логи Jenkins и логи AWS CloudTrail при необходимости для диагностики отказов доступа.
Когда такой подход не подходит
- Если Jenkins запущен на EC2 в той же AWS-учётке, лучше назначить IAM роль на EC2 instance profile и дать Jenkins доступ через неё. Это устраняет необходимость управления ключами.
- В организациях с централизованным секретным хранилищем (HashiCorp Vault, AWS Secrets Manager) рекомендуется хранить секреты в этих сервисах и интегрировать Jenkins с ними.
- Для временных или автоматических миграций стоит использовать STS temporary credentials, а не долгоживущие ключи.
Альтернативные подходы и их плюсы/минусы
IAM роль для EC2 (Instance Profile)
- Плюсы: нет статических ключей, автоматическое обновление прав.
- Минусы: применимо только для агента на EC2.
AWS Secrets Manager или Parameter Store + плагин
- Плюсы: централизованное управление секретами, ротация.
- Минусы: требует дополнительной конфигурации и прав доступа.
HashiCorp Vault с Jenkins
- Плюсы: высокие возможности аудита и ротации.
- Минусы: сложнее внедрять и поддерживать.
Рекомендации по безопасности и hardening
- Дайте IAM пользователю минимально необходимые права (принцип least privilege).
- Ограничьте срок жизни и периодически вращайте ключи.
- Логируйте доступы через CloudTrail и настраивайте оповещения о подозрительных действиях.
- Ограничьте доступ к Jenkins Credentials: только доверенным администраторам.
- Используйте роли (EC2 instance profile) вместо статических ключей, когда это возможно.
- Если используются секреты в Jenkins, включите шифрование данных на диске и настройки резервного копирования с защитой.
Роль‑ориентированные чеклисты
Администратор Jenkins
- Установить и обновить плагины.
- Настроить доступы и политики для Credentials.
- Проверить консольные логи после первой сборки.
DevOps инженер
- Создать IAM пользователя с ограниченной политикой для S3.
- Добавить Credentials в Jenkins с понятным ID.
- Настроить и протестировать Pipeline.
Оператор облака
- Проверить политику IAM и CloudTrail при проблемах доступа.
- Контролировать безопасную ротацию ключей.
Мини‑SOP: как добавить AWS ключи в Jenkins (шаги)
- Откройте Jenkins -> Manage Jenkins -> Manage Credentials -> Global -> Add credentials.
- Выберите Kind: AWS.
- Заполните Access Key ID и Secret Access Key, укажите ID (например, jenkins-test-user) и описание.
- Нажмите OK и сохраните.
- В Pipeline используйте withAWS(credentials: ‘ваш-id’, region: ‘регион’).
- Запустите сборку и проверьте Console Output.
Критерии приёмки
- Pipeline успешно выполняет s3Upload и s3Download.
- В логах отсутствуют ошибки авторизации.
- Доступ предоставлен только на требуемый бакет и операции.
Краткий глоссарий
- IAM user — пользователь в AWS с уникальными ключами и политиками доступа.
- Credentials — хранилище секретов в Jenkins.
- withAWS — шаг Pipeline из плагина Pipeline: AWS Steps для временной установки AWS-креденшелов в окружение.
- s3Upload/s3Download — шаги плагина для загрузки/скачивания файлов в S3.
Совместимость и рекомендации по миграции
- Если вы переносите Jenkins с одного хоста на другой, экспортируйте Credentials через безопасный процесс и импортируйте в новую инстанцию. Никогда не храните открытые ключи в репозиториях.
- При миграции в AWS лучше использовать IAM роли вместо статических ключей для EC2.
Социальный тизер
Используйте CloudBees AWS Credentials и Pipeline: AWS Steps, чтобы безопасно управлять AWS ключами в Jenkins и тестировать доступ к S3 прямо из Pipeline. Минимум настроек, максимум безопасности.
Заключение
Мы установили CloudBees AWS Credentials и Pipeline: AWS Steps, добавили AWS Access/Secret Keys в Jenkins Credentials и проверили работу через Pipeline — загрузку и скачивание файла в S3. Кроме пошаговой инструкции, вы получили рекомендации по безопасности, альтернативные варианты и чеклисты по ролям.
Краткое резюме
- Никогда не храните ключи прямо в коде Pipeline.
- Используйте Jenkins Credentials и withAWS для безопасного внедрения секретов.
- Предпочитайте роли и централизованные хранилища секретов при возможности.
Объявление: эта инструкция пригодна для быстрых проверок и тестирования. Для продакшн‑окружения рекомендуем дополнительно внедрить ротацию ключей и аудит доступа.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента