::: IT인터넷 :::

Jenkins 권한 관리와 설정 방법

곰탱이푸우 2022. 2. 10. 08:20
Jenkins의 권한 관리와 설정 방법에 대해 정리한다.
 
Jenkins 설정에 관한 방법은 아래 포스팅 들을 참고한다.

Jenkins 권한 관리 소개

Jenkins의 권한 관리 방법은 Jenkins 관리 - Configure Global Security 메뉴의 Authorization 항목에서 선택 가능하다.
 
기본적으로 총 5가지의 방법을 제공한다.
 
각 방법별 특징과 단점은 다음과 같다.
구분
내용
단점
Anyone can do anything
제한 없음
(누구나 모든 작업 가능)
권한 제한 없음
Legacy mode
Jenkins 1.164 이전 버전에서 제공하던 모드
(관리자 or 익명사용자)
권한 관리 안됨
Logged-in users
can do anything
로그인 계정은 제한 없음 
(로그인한 계정만 모든 작업 가능)
로그인만 되어 있으면 권한 제한 없음
Matrix-based security
개별 계정에 대해 기능별 권한 부여 가능 
계정마다 설정 필요 (번거로움)
Project-based Matrix
Authorization Strategy
개별 Project (빌드 Item)에 대해
기능별 권한 부여 가능 
프로젝트마다 설정 필요 (번거로움)
 
가장 좋은 방법은 역할 기반의 권한 관리를 사용하는 것이다.
관리자, 프로젝트 리더, 개발자로 구분하여 권한을 설정하고, 생성되는 계정에 대해 역할을 부여하여 기능을 제한하는 방법이다.
물론 이 방법도 각 프로젝트 별로 권한을 구분하는 것이 쉽지 않은 부분이 있다.
그러나 Jenkins가 제공하는 5가지 방법 보다 훨씬 편리하면서도 원하는 권한 관리의 상당 부분을 제공하므로 이 방법을 사용한다.
 
 

역할 기반 권한 관리 

Jenkins에서 기본적으로  제공하는 기능이 아니기 때문에 추가 플러그인을 설치해야 한다.
 

플러그인 설치

Jenkins 관리 - Plugin Manager로 이동한다.
 
설치 가능 항목에서 Role-based Authorization Strategy 플러그인을 검색한다. Role- 까지만 입력하면 검색 된다.
 
Install without restart 버튼을 눌러 설치를 진행한다.
 

Jenkins의 권한 관리 모드 변경

플러그인 설치가 완료되면 Jenkins 관리 - Configure Global Security 메뉴의 Authorization 항목에 Role-Based Strategy가 생성된 것을 확인할 수 있다.
해당 항목을 체크하고 Save를 눌러 저장한다.

 

Jeknins 관리 메뉴를 다시 클릭하면 Security 항목에 Manage and Assign Roles 항목이 생성 된 것을 확인할 수 있다.
 
해당 메뉴를 클릭한다.

 

 

역할 생성

먼저 권한을 구분할 역할을 생성해야 한다.
역할은 관리자, 프로젝트 리더, 개발자로 구분할 것이다.
 
기본적으로 아래와 같은 원칙으로 권한 설정을 진행한다.
구분
내용
권한
관리자
Jenkins 시스템 관리자 역할을 수행한다.
빌드 에이전트 설정도 가능하다.
모든 권한
개발자
빌드 플랜 생성, 빌드 진행만 가능하다.
빌드 플랜 생성, 수정, 빌드 실행만 가능,
빌드 플랜 삭제, 빌드 에이전트 추가/설정 불가
프로젝트 리더
개발자와 동일하다.
추가로 생성한 빌드 플랜 삭제도 가능하다.
빌드 플랜 생성, 수정, 삭제, 빌드 실행만 가능
빌드 에이전트 추가/설정 불가
 
Manage and Assign Roles에서 Manage Roles를 클릭한다.
 
Role to add 항목에 역할을 추가한다. developer와 leader를 추가한다.
 
추가한 역할에 권한을 부여한다.
 
체크할 항목은 다음과 같다. 아래에 언급되지 않은 항목은 체크하지 않는다.
Role
Overall
Job
SCM
Read
Build
Cancel
Configure
Create
Delete
Read
Workspace
developer
O
O
O
O
O
X
O
O
O
leader
O
O
O
O
O
O
O
O
O
 
참고로 Overall의 Read 항목에 체크되어 있지 않으면 Jenkins에 로그인해도 화면 열람이 되지 않는다.
설정을 완료하면 Save 버튼을 클릭한다.
 
 

계정별 권한 설정

역할 생성이 완료되었으면 생성 된 계정에 대해 권한을 부여한다.
 
Manage and Assign Roles에서 Assign Roles를 클릭한다.

 

User/group to add에 기존 계정을 하나씩 입력한다. 
Global Roles 아래의 표에 계정이 추가되면, 계정별로 원하는 역할에 체크하고 저장 버튼을 클릭한다.
No type prefix: 메시지

Assign Roles에 다시 들어가보면 각 계정 앞에 No type prefix:라고 표시된다.
사람 모양의 아이콘이 표시되어야 하는데 찾지 못해 발생하는 것이다.

이 이슈는 Jenkins의 버전이 올라가면서 기존 플러그인 버전과 호환성 이슈로 인한 버그로 확인되며, 
그대로 사용해도 무방하다.
https://issues.jenkins.io/browse/JENKINS-67393https://issues.jenkins.io/browse/JENKINS-67393

향후 해당 부분이 조치 된 신규 버전이 나오면 플러그인을 업데이트하면 될 것으로 보인다.
 
 

권한 적용 결과 확인

권한 적용이 완료되면 실제 권한이 적용되었는지 확인한다.
Developer 권한을 적용한 jenkinsbuild 계정으로 테스트한다.
 
관리자 권한이 아니기 때문에 로그인하면 좌측에 Jenkins 관리 항목이 보이지 않는다. 
추가적으로 Lockable Resource, New View 메뉴도 권한이 없어 표시되지 않는다.
 
빌드 프로젝트에 접근하면 좌측에 Project 삭제와 Move 버튼이 보이지 않는다.
삭제 권한과 Move 권한이 없기 때문이다.

 

빌드 실행하면 정상적으로 빌드가 진행된다.
 
Jenkins에서 역할 기반의 권한 관리가 정상적으로 적용 된 것을 확인되었다.
 
향후 운영하면서 권한이 필요한 부분은 추가 정리한다.