Хранение учетных данных в Jenkins

Beginner

Введение

Учетные данные (credentials) в Jenkins позволяют хранить пароли, токены и ключи внутри системы, вместо того чтобы вводить секретные данные напрямую в скрипты заданий. Задания могут обращаться к учетным данным по их идентификатору (ID).

В этой лабораторной работе вы воспользуетесь панелью управления Jenkins, чтобы открыть глобальное хранилище учетных данных, создать пару «имя пользователя/пароль», убедиться, что Jenkins маскирует и шифрует секретные данные, а затем обновить эти данные, не меняя их идентификатор.

Открытие глобального хранилища учетных данных

На этом этапе вы найдете хранилище учетных данных Jenkins в панели управления. Jenkins организует учетные данные по хранилищам и доменам. Для базовых рабочих процессов наиболее распространенным местом является хранилище System и домен Global.

Откройте интерфейс рабочего стола. Firefox автоматически откроет Jenkins. Если этого не произошло, перейдите по адресу http://localhost:8080.

В панели управления Jenkins:

Нажмите Manage Jenkins на левой боковой панели, затем выберите Credentials. На странице учетных данных нажмите System, а затем Global.

Заголовок страницы должен быть Global, и на ней должно быть указано, что эти учетные данные доступны везде.

Глобальный домен учетных данных Jenkins

Выполните эту команду в терминале, чтобы зафиксировать доступность страницы глобальных учетных данных:

curl -fsS http://localhost:8080/manage/credentials/store/system/domain/_/ | grep -o 'Credentials that should be available everywhere' | tee /home/labex/project/credential-storage-page.txt

Вы должны увидеть следующий вывод:

Credentials that should be available everywhere

Добавление учетных данных с именем пользователя и паролем

На этом этапе вы создадите учетные данные с помощью формы Jenkins. Идентификатор (ID) учетных данных важен, так как задания и пайплайны будут ссылаться на него в дальнейшем.

На странице глобальных учетных данных (Global) нажмите Add Credentials.

Заполните форму следующими значениями:

  • Kind: Username with password
  • Scope: Global
  • Username: guided-user
  • Password: guided-password-v1
  • ID: guided-creds
  • Description: Guided lab credential for Jenkins storage

Нажмите Create.

После того как Jenkins вернется на страницу глобального домена, вы увидите учетные данные с именем guided-creds. Jenkins отображает имя пользователя, но маскирует пароль.

Учетные данные в глобальном домене Jenkins

Проверка того, как Jenkins хранит секретные данные

На этом этапе вы проверите, что именно Jenkins записал на диск. Обычно это не требуется в повседневной работе с Jenkins, но это поможет вам понять, почему учетные данные безопаснее, чем пароли в открытом виде внутри скриптов.

В терминале выведите только соответствующие строки из файла credentials.xml Jenkins:

docker exec jenkins sh -lc "grep -n -E '<id>guided-creds</id>|<username>guided-user</username>|<password>' /var/jenkins_home/credentials.xml" | tee /home/labex/project/credential-file-lines.txt

Вывод должен содержать идентификатор учетных данных и имя пользователя. Строка с паролем должна содержать зашифрованный секрет Jenkins в фигурных скобках, а не открытый текст guided-password-v1.

Пример вывода:

...<id>guided-creds</id>
...<username>guided-user</username>
...<password>{...}</password>

Вернитесь на страницу глобального домена Jenkins в Firefox. В строке учетных данных пароль также должен отображаться как замаскированный текст, а не как реальный пароль.

Обновление учетных данных без изменения их идентификатора

На этом этапе вы обновите описание учетных данных через панель управления Jenkins, сохранив при этом тот же идентификатор. Это демонстрирует ключевой принцип: задания должны ссылаться на стабильный ID, такой как guided-creds, в то время как администраторы могут изменять метаданные учетных данных по мере необходимости.

На странице глобальных учетных данных (Global):

Нажмите на учетные данные guided-creds, затем выберите Update credential. Оставьте Username, Password и ID без изменений. Измените Description на Updated guided lab credential, затем нажмите Save.

После сохранения вернитесь на страницу домена Global. Тот же идентификатор учетных данных должен остаться видимым, но описание теперь должно быть Updated guided lab credential.

Обновленные учетные данные в глобальном домене Jenkins

Выполните эту команду, чтобы подтвердить, что у Jenkins по-прежнему тот же ID и обновленное описание:

docker exec jenkins sh -lc "grep -n -E '<id>guided-creds</id>|<description>Updated guided lab credential</description>|<password>' /var/jenkins_home/credentials.xml" | tee /home/labex/project/updated-credential-lines.txt

Пароль должен оставаться зашифрованным, а открытый текст guided-password-v1 не должен появляться.

Резюме

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