Jenkins 자격 증명 저장

Beginner

소개

Jenkins 자격 증명을 사용하면 비밀번호, 토큰 및 키를 작업 스크립트에 직접 입력하는 대신 Jenkins 내부에 안전하게 저장할 수 있습니다. 작업 (Job) 은 ID 를 통해 해당 자격 증명을 참조할 수 있습니다.

이번 실습에서는 Jenkins 대시보드를 사용하여 전역 자격 증명 저장소를 열고, 사용자 이름/비밀번호 자격 증명을 생성하며, Jenkins 가 비밀 정보를 마스킹하고 암호화하는지 확인합니다. 또한, ID 를 변경하지 않고 자격 증명을 업데이트하는 방법도 실습합니다.

전역 자격 증명 저장소 열기

이 단계에서는 대시보드에서 Jenkins 자격 증명 저장소를 찾습니다. Jenkins 는 저장소와 도메인별로 자격 증명을 구성합니다. 초보자 워크플로우에서 가장 일반적으로 사용되는 곳은 System 저장소와 Global 도메인입니다.

데스크톱 인터페이스를 엽니다. Firefox 가 자동으로 Jenkins 를 엽니다. 만약 열리지 않는다면 http://localhost:8080으로 접속하세요.

Jenkins 대시보드에서 다음을 수행합니다:

왼쪽 사이드바에서 Manage Jenkins를 클릭한 다음 Credentials를 클릭합니다. 자격 증명 페이지에서 System을 클릭한 후 Global을 클릭합니다.

페이지 제목이 Global이어야 하며, 해당 자격 증명이 모든 곳에서 사용 가능하다는 설명이 표시되어야 합니다.

Jenkins global credential domain

터미널에서 다음 명령어를 실행하여 전역 자격 증명 페이지에 접근 가능한지 확인합니다:

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 를 참조하므로 자격 증명 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 가 Global 도메인 페이지로 돌아오면 guided-creds라는 이름의 자격 증명이 생성된 것을 볼 수 있습니다. Jenkins 는 사용자 이름은 표시하지만 비밀번호는 마스킹 처리합니다.

Jenkins guided credential in global domain

Jenkins 의 비밀 정보 저장 방식 확인

이 단계에서는 Jenkins 가 디스크에 기록한 내용을 검사합니다. 이는 일상적인 Jenkins 작업에서 자주 수행하는 작업은 아니지만, 왜 자격 증명이 작업 스크립트의 일반 텍스트 비밀번호보다 안전한지 이해하는 데 도움이 됩니다.

터미널에서 Jenkins 의 credentials.xml 파일 중 관련 행만 출력합니다:

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

출력 결과에는 자격 증명 ID 와 사용자 이름이 포함되어야 합니다. 비밀번호 행에는 원본 텍스트인 guided-password-v1 대신 중괄호로 감싸진 암호화된 Jenkins 비밀 정보가 포함되어 있어야 합니다.

출력 예시:

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

Firefox 에서 Jenkins Global 도메인 페이지로 돌아갑니다. 자격 증명 행에서도 비밀번호가 실제 값이 아닌 마스킹된 텍스트로 표시되는 것을 확인할 수 있습니다.

ID 변경 없이 자격 증명 업데이트

이 단계에서는 동일한 자격 증명 ID 를 유지하면서 Jenkins 대시보드를 통해 자격 증명 설명을 업데이트합니다. 이는 초보자가 가장 먼저 알아야 할 핵심 개념을 보여줍니다. 즉, 작업은 guided-creds와 같은 안정적인 ID 를 참조해야 하며, 관리자는 나중에 자격 증명 메타데이터를 조정할 수 있다는 점입니다.

Global 자격 증명 페이지에서:

guided-creds 자격 증명을 클릭한 다음 Update credential을 클릭합니다. Username, Password, ID는 그대로 둡니다. DescriptionUpdated guided lab credential로 변경한 후 Save를 클릭합니다.

저장 후 Global 도메인 페이지로 돌아갑니다. 동일한 자격 증명 ID 가 유지되지만 설명이 Updated guided lab credential로 변경된 것을 확인할 수 있습니다.

Jenkins updated credential in global domain

다음 명령어를 실행하여 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 가 비밀 정보를 마스킹하고 암호화하는 것을 확인했습니다. 또한, 안정적인 ID 를 유지하면서 자격 증명 메타데이터를 업데이트하는 방법도 실습했습니다.