Гид по технологиям

Хранение AWS ключей в Jenkins через CloudBees AWS Credentials

• 6 min read • DevOps • Обновлено 22 Nov 2025
Хранение AWS ключей в Jenkins через CloudBees
Хранение AWS ключей в Jenkins через CloudBees

Краткое описание

Вы можете хранить 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.

Предпосылки

  1. AWS IAM user с Access Key ID и Secret Access Key и правами чтения/записи для S3. (Создание IAM пользователя нужно выполнить заранее.)
  2. S3 bucket. Замените примеры названий на свои реальные значения.
  3. Рабочий Jenkins-сервер (например, установленный на EC2/Ubuntu или контейнере).

Что сделаем

  1. Установим CloudBees AWS Credentials.
  2. Сохраним AWS Access Key и Secret Key в Jenkins Credentials.
  3. Установим Pipeline: AWS Steps.
  4. Создадим Pipeline и протестируем креденшелы загрузкой и скачиванием файла из S3.

Установка CloudBees AWS Credentials

  1. Зайдите в Jenkins по адресу http://:8080/jenkins

Скриншот панели Jenkins

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

Панель Jenkins с пунктом Manage Jenkins

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

Экран управления плагинами

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

Поиск доступных плагинов в Jenkins

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

Плагин CloudBees AWS Credentials в списке

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

Успешная установка плагина

Сохранение AWS Access и Secret keys в Jenkins Credentials

  1. Вернитесь к дашборду Jenkins и откройте “Manage Jenkins”.

Возврат к дашборду Jenkins

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

Экран Manage Credentials в Jenkins

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

Добавление новых учётных данных в Jenkins

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

Форма для хранения AWS ключей в Jenkins

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

Сохранённые AWS credentials в Jenkins

Важно: давайте имя учётной записи так, чтобы его было легко ссылаться в Pipeline. Не храните в Jenkins ключи с правами шире, чем необходимо.

Установка Pipeline: AWS Steps

  1. Снова откройте “Manage Plugins” и на вкладке Available найдите “AWS Steps” или “Pipeline: AWS Steps”.

Плагин Pipeline AWS Steps в списке

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

Успешная установка Pipeline AWS Steps

Создание Pipeline и тест кредитов

  1. На дашборде нажмите “New Item”.

Создание нового задания типа Pipeline

  1. Дайте имя, выберите тип Pipeline и нажмите OK.
  2. В конфигурации найдите раздел 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 бакета.

  1. Сохраните конфигурацию и нажмите “Build Now” для запуска.

Запуск сборки Pipeline

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

Вывод консоли сборки Pipeline

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

Успешное выполнение Pipeline

Частые проблемы и способы их устранения

  • Неверные ключи или истёкший 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 (шаги)

  1. Откройте Jenkins -> Manage Jenkins -> Manage Credentials -> Global -> Add credentials.
  2. Выберите Kind: AWS.
  3. Заполните Access Key ID и Secret Access Key, укажите ID (например, jenkins-test-user) и описание.
  4. Нажмите OK и сохраните.
  5. В Pipeline используйте withAWS(credentials: ‘ваш-id’, region: ‘регион’).
  6. Запустите сборку и проверьте 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 для безопасного внедрения секретов.
  • Предпочитайте роли и централизованные хранилища секретов при возможности.

Объявление: эта инструкция пригодна для быстрых проверок и тестирования. Для продакшн‑окружения рекомендуем дополнительно внедрить ротацию ключей и аудит доступа.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро