티스토리 뷰
지난 포스팅에서는 Jenkins를 KeyCloak을 이용해서 로그인하는 방법에 대해서 알아보았다. 단순 로그인만 통합로그인으로 하는것에서 그치지 않고 이번에는 KeyCloak의 권한(ROLE)에 따라 Jenkins의 사용권한을 통제하는 방법에 대해서 알아보겠다. 전과 마찬가지로 Jenkins와 KeyCloak은 설치가 되어있어야 하며 둘간의 기본적인 연동방법은 위의 링크를 클릭해서 보도록 하자.
KeyCloak 설정
- Role 설정
지난시간에 KeyCloak에서 Role을 설정할때 위와 같이 jenkins_admin를 했었다. 권한관리를 하기 위해 Add Role을 눌러서 새로운 권한을 추가시켜준다.
jenkins_user 라는 Role을 추가하였다.
- User 설정
기존의 User를 이용해도 되지만 이해가 쉽도록 새롭게 Add user를 클릭해서 User를 생성해본다.
admin 권한을 가질 jadmin과 user 권한을 가질 juser를 각각 추가하였다.
User를 추가하고 Save를 누르면 상세 설정을 할 수 있다. 이중 Credentials tab에 들어가서 '임시' 패스워드를 설정해준다. 나중에 로그인할때 어차피 다시 설정을 해야한다. 이렇게 하기 싫다면 Temporary를 풀고 설정한다.
- User & Role Mapping
Role과 User를 각각 추가했으면 이를 연결해주는 작업이 필요하다. User 생성 후 바로 Role Mappings 탭에서 이를 해줄 수 있다. jadmin에는 jenkins_admin Role을 juser에는 jenkins_user Role을 각각 부여해준다.
KeyCloak에서의 설정은 모두 끝이 났다.
그리고 이제 Jenkins로 들어가본다. 그리고 일단 jadmin 계정으로 로그인을 한다. 임시 비밀번호 입력한걸로 입력을 하면 새로운 비밀번호를 입력할것이고 그 과정이 끝나면 Jenkins로 진입을 할 수 있다.
로그인 후 상단에 jadmin으로 로그인이 잘 된것을 확인할 수 있다.
Jenkins 설정
기존 Jenkins가 권한관리가 사용되고 있었고 admin이 설정을 할 수 있다면 admin 계정으로 작업을 진행해야 하며 그렇지 않은 경우는 새로 만든 jadmin 계정으로 진행을 해도 무방하다.
- 플러그인 설치
Role-based 권한관리를 하려면 가장 먼저 해야 할 일은 플러그인 설치이다. 기존에 Role-based Authorization Stategy 플러그인이 설치되어 있으면 이 단계는 건너뛴다.
시스템 설정 > 플러그인 관리
설치 가능 tab에서 role로 검색해보면 Role-based Authorization Stategy 플러그인을 찾을 수 있다. 체크를 하고 재시작 없이 설치하기를 누른다. 그리고 설치가 되기를 기다린다.
- Role-Based 권한설정
Role-based Authorization Stategy 플러그인 설치가 완료 되었으면 시스템 설정 > Configure Global Security 로 들어간다.
Configure Global Security로 들어가면 Authorization 이 있고 Role-Based Strategy 가 생긴것을 확인할 수 있다.
(Role-based Authorization Stategy 플러그인 설치전에는 없다.) 선택하고 저장!
Role-Based Strategy 선택을 마치고 시스템 설정 화면으로 나와보면 Manage and Assign Roles이 생긴것을 확인할 수 있다. 클릭!
Manage and Assign Roles 에서 Manage Roles 를 클릭!
Manage Roles의 맨 위에 Global roles를 설정하는 부분이 있다. 기본적으로 admin 권한이 있다. (절대 이 admin 권한 옆에 있는 x를 눌러서 지우지 말자..) 아래를 보면 Role to add 라고 되어 있는데 이곳에 user 라는 Role을 입력하고 add 한다. 그리고 user 권한이 할 수 있는 일을 적절하게 매핑시켜주자. 필자는 job을 읽을수 있는 권한과 실행 권한만 주었다. 저장!
이번엔 Assign Roles에서 설정을 진행한다. 위에서 설정한 Manage Roles의 Jenkins의 Role을 사용자/그룹과 매핑을 시켜주는 부분이다.
맨 위의 Global roles에서 KeyCloak에서 Role로 추가를 했던 jenkins_admin과 jenkins_user Role을 Jenkins의 admin과 user에 각각 매핑을 시켜준다. 그리고 저장!
jadmin (or admin) 계정을 로그아웃하고 juser로 로그인을 진행해본다.
user 권한만을 가진 juser 계정으로 Jenkins에 들어와보면 아까 설정한대로 job을 볼수 있고 실행시킬수만 있다. 그 외의 행동은 다 막힌 상태이다. 권한 설정이 잘 되었다.
이보다 더 상세하게 그룹과 OpenID Connect 방식의 권한관리를 하고 싶다면 다음 글을 보도록 하자.
끝!
'CI,CD > Jenkins' 카테고리의 다른 글
Jenkins 문제 생겼을때 설정파일 직접 수정하기 (설치파일 경로 포함) (0) | 2021.01.08 |
---|---|
Jenkins Window 10에 설치하기 (0) | 2021.01.08 |
Jenkins 로그인 KeyCloak으로 하기 (2) | 2021.01.07 |
Jenkins REST API 호출로 Job 생성/실행/결과조회 하기 (0) | 2020.12.31 |
Jenkins와 Slack 연동하기 - 빌드결과 알림받는 방법 (0) | 2020.12.22 |