Notice
Recent Posts
Recent Comments
Link
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

seoyyyy-dev

젠킨스 CI/CD - 자격 증명 관리 본문

개발 독서 스터디/젠킨스로 배우는 CIㆍCD 파이프라인 구축

젠킨스 CI/CD - 자격 증명 관리

seoyyyy 2025. 5. 25. 21:31

젠킨스에서는 다양한 종류의 외부 도구(git, 넥서스 등)에 접속하기 위한 인증에 필요한 정보를 자격 증명(credential)이라고 하며 젠킨스는 자격 증명 항목을 생성하고 인스턴스 내에 이 정보를 저장할 수 있다.

 

넥서스나 깃 등의 외부 도구에서 사용자를 인증하는 데 주로 사용하는 기법은 아래와 같다. 

 

✔️ 기본 인증

✔️ SSH 인증

✔️ API 토큰

✔️ 인증서(certificate)

 

젠킨스의 Credentials 플러그인을 사용하면 다양한 유형의 자격 증명을 생성하고 필요한 인증 정보를 저장할 수 있다.

자격 증명 항목이 생성되면 젠킨스 작업/파이프라인 작업을 할 때 자격 증명 ID를 통해 이를 참조할 수 있다. 이 때는 Credentials Binding 플러그인의 도움이 필요하다.

 

젠킨스에서 자격 증명 관리에 중요한 역할을 하는 다음 두 가지 중요한 개념을 알아보자

 

💡 범위 (scope)

   : 자격 증명 항목을 생성할 때 범위를 지정해야 하는데 범위는 특정한 자격 증명 항목을 사용할 수 있는 위치를 정의한다.

   : 범위에는 전역(global)과 시스템(system)의 두종류의 유형이 있다.

       - 전역(global) : 전역 범위로 지정된 자격 증명은 모든 젠킨스 작업과 젠킨스 서버 시스템에서 사용할 수 있다. 

       - 시스템(system): 시스템 범위로 지정된 자격 증명은 젠킨스 인스턴스에서 이메일 인증이나 에이전트 연결 등과 같은 시스템 기능을 수행하는 데만 사용할 수 있으며 젠킨스 작업에서는 사용할 수 없다.

 💡도메인(domain)

   : 유사한 시스템에서 사용하는 자격 증명을 그룹화하는 방법이다.

   : 자격 증명 항목에 별도의 설정이 없었다면 기본 도메인에 생성된다.


🩰 전역 범위와 전역 도메인(기본값)에서 자격 증명 항목 생성

 

Dashboard > Jenkins 관리 > Credentials 메뉴를 클릭해보자

 

그러면 다음과 같이 Credentials(자격 증명) 페이지가 나타난다.

 

화면에서 stores scoped to Jenkins 섹션의 Domains 열에 (global) 링크를 클릭하면 Global credentials(unrestricted) 페이지가 나타난다. 

 

우측의 +Add Credentials 버튼을 클릭하면 New credentials 페이지가 나타나고 새로운 자격 증명을 생성할 수 있다.

 

자격증명 생성 입력 항목을 차례대로 살펴보자

 

✔️ Kind(유형)

- 드롭다운 메뉴에서 생성하려는 자격 증명 항목 유형을 선택한다.

- Username with password, SSH Username with private key 등의 항목이 있다.

 

Username with password 로 항목 선택 시 아래와 같이 하위 입력 항목이 나타난다. 

 

✔️ Scope

   - Global과 System중 하나를 선택할 수 있으며 기본값은 Global이다.

✔️  Username

   - 젠킨스에서 접속하려는 도구/플랫폼에서 요구하는 사용자 이름을 입력한다. 예를 들어 젠킨스에서 gitlab.com에 접속한다면 깃랩 사용자 이름(계정)을 입력한다.

✔️Password

   - 젠킨스에서 접속하려는 도구/플랫폼에서 요구하는 비밀번호를 입력한다. 예를 들어 젠킨스에서 gitlab.com에 접속한다면 깃랩의 비밀번호를 입력한다.

✔️ ID

   - 젠킨스 작업에서 자격 증명을 참조할 때 여기서 지정한 ID를 참조한다. 임의의 문자열을 입력해도 되고, 이 필드를 공백으로 두면 젠킨스에서 임의의 ID를 할당한다.

✔️ Description

   - 간단한 설명을 입력한다. 공백으로 두어도 괜찮다.

 

 

 

위의 항목들을 모두 입력했으면 Create 버튼을 클릭해 자격 증명 항목을 저장한다.

 

Global credentials을 확인해보니 방금 생성한 자격 증명 항목이 표시된다.

 

만일 생성한 자격증명 항목의 Scope를 Global에서 System으로 변경하고 싶다면 해당 ID를 눌러준 후 좌측의 Update 메뉴를 클릭한 후 Scope항목을 변경하여 Save 한다.

 

자격증명을 System으로 변경해주게 되면 젠킨스 작업 설정 시 자격증명 항목에서 더이상 나타나지 않게된다. 자격 증명 범위가 시스템으로 축소되어 이제 젠킨스 시스템과 해당 노드에서만 사용할 수 있게 되었기 때문이다.

 


🩰 특정 도메인에서 자격 증명 항목 생성

이젠 다른 도메인에서 자격 증명 항목을 생성하는 방법을 알아보자

 

메뉴 화면의 경로는 좀 전의 전역 범위/전역 도메인 자격 증명 항목 생성한 곳과 동일한 Dashboard > Jenkins 관리 > Credentials 로 동일하다.

 

여기서 Stores scoped to Jenkins 섹션에서 System 쪽에 마우스를 가져다 대고 나타나는 아래 화살표(v) 를 클릭하면 Add domain 을 선택한다. 

 

그러면 New domain (도메인 생성) 페이지가 나타난다. 

 

도메인 생성에 필요한 입력 항목들을 살펴보자

 

✔️ Domain Name 

   - 생성 중인 자격 증명의 도메인을 식별할 수 있는 짧은 이름을 입력한다.

   - 예를들어 GitlabCredentialsDomain 처럼 입력하는 것이 좋다.

✔️ Description

    - 이 도메인에 포함될 내용에 대한 간단한 설명을 입력한다. 필수 입력사항은 아니다.

✔️ Specification 

    - 자격 증명 항목을 표시할 때 필터링하는 기준을 매개 변수로 입력할 수 있다. 

   - 예를들어 gitlab.com에 연결하는 젠킨스 작업에만 사용하는 자격 증명 항목을 보관하는 도메인을 생성하려면 Specification에서 Hostname옵션을 선택하고 Include 필드에 gitlab.com을 입력한다.

 

모든 항목의 입력이 끝나면 Create 버튼을 클릭하여 도메인을 새로 추가한다. 

그럼 다음과 같이 새로 추가한 도메인 페이지가 나타난다.

 

 해당 화면에서 상단의 + Add Credentials 버튼을 클릭하고 이번엔 SSH credentials 항목을 생성해보자.

Kind 에서 SSH Username with private key 옵션을 선택해주면 된다. 

- Scope는 Global 옵션으로 두고, ID는 임의의 문자열을 입력한다. Description은 선택 입력사항이다. 

- Username 필드엔 접속하려는 시스템이 요구하는 인증 정보를 입력하는데 예를 들어 GitLab의 사용자 이름을 입력한다. 

- Enter Directly 라디오에 버튼을 선택하고 SSH 개인 키를 붙여 넣는다. 

- PassPhrase 필드에는 암호문을 입력한다. 

- Create 버튼을 클릭하여 자격 증명을 생성한다.

더보기

젠킨스 SSH 인증 자격 증명을 생성하기 위해서는 ssh key gen 명령을 사용해 공개 키와 개인 키를 생성해야 한다.

 

# ssh-keygen 명령어를 실행하여 ssh key 생성

 

 

ssh key는 민감한 정보이므로 첫줄을 제외하고 모자이크 처리하였다.

 

 

자격증명 생성 성공 시 다음과 같이 도메인에 자격 증명 항목을 확인할 수 있다. 

 

이제 젠킨스 작업에서 gitlab.com이라는 인터넷 주소를 입력하면 Credentials 드롭다운 메뉴에서 GitlabCredentialsDomain에서 생성한 자격 증명 항목이 나타나게 된다.

 

 

위 그림과 같이 URL에 gitlab.com이 포함되어 있다면 항목에 좀전에 생성한 자격증명 항목이 나타나며 github.com으로 url을 변경하면 해당 항목이 사라지는 것을 확인할 수 있다. 


자격 증명 공급자 구성

 

이번엔 여러 유형의 자격 증명 구성을 알아보기 위해 Dashboard > Jenkins 관리 > Credential Providers 메뉴화면으로 들어가보자

 

그럼 다음과 같이 Credential Providers(자격 증명 공급자 구성) 페이지가 나타난다.

 

페이지는 Providers(공급자) Types(유형) 이라는 2개의 드롭다운 메뉴가 표시되고 두가지 모두 All available(모두 가능)이 기본값으로 설정되어 있다. 

 ✔️Providers

  : 드롭다운 메뉴에서 Only selected 옵션을 선택하면 아래와 같은 옵션들이 나타난다. 

- Jenkins Credentials Provider: 젠킨스 자격증명 공급자

  : 젠킨스 루트 사용자의 자격 증명을 제공하고 젠킨스(기본 도메인)와 특정 도메인에서 전역 및 시스템 유형의 자격 증명을 생성할 수 있도록 한다. 전역 유형의 자격 증명은 모든 사용자의 모든 작업에서 사용할 수 있다.

- User Credentials Provider: 사용자 자격 증명 공급자

  : 해당 사용자가 생성한 작업과 해당 사용자가 실행한 작업에서만 사용할 수 있다. 

 

User Credentials Provider 에서 자격증명을 생성하는 방법을 알아보기 위해 화면 우측 상단의 사용자 이름 > Credentials 메뉴를 클릭한다.

 

Stores scoped to [사용자 이름] 으로 표시된 표에서 Store 열에 표시된 사용자 이름을 클릭한다.

 

그러면 User 페이지가 나타나고 Global credentials(unrestricted) 링크를 클릭한다.

Global credentials(unrestricted) 화면이 나타나면 + Add domain 링크를 클릭한다.

이후 나머지 단계는 이전 섹션과 동일하게 진행하면서 새로운 자격 증명 항목을 생성할 수 있다.

 

 

만일 로그아웃하고 다른 사용자 이름으로 로그인을 하면 방금 생성한 자격증명은 표시되지 않지만 이전 섹션(젠킨스 자격 증명 공급자)에서 생성한 자격 증명은 볼 수 있다.

 

 ✔️Types

  : 드롭다운 메뉴에서 Only Selected 옵션을 선택하면 화면은 다음과 같다.

여기서 표시되는 항목들 중에서 원하는 자격 증명 항목의 유형을 구성할 수 있다.

만일 Username with password 체크박스를 해제하고 Save 시 이 옵션은 Kind 드롭다운 메뉴에 나타나지 않고 해당 옵션도 사용할 수 없게 된다.