티스토리 뷰
프로젝트를 관리하다보면 여러개의 솔루션을 각각 계정관리를 해야 하는데 KeyCloak을 사용하면 어느정도 통합해서 관리를 할 수 있다. Jenkins도 KeyCloak을 통해서 통합로그인을 할 수 있다.
기본적으로 Jenkins와 KeyCloak이 설치 되어있다고 가정하고 진행을 하도록 하겠다. KeyCloak이 설치되지 않았다면 여기를 참고해서 구성하도록 하자.
KeyCloak 설정
가장 먼저 해야 할 일은 KeyCloak에서 Jenkins Client를 추가하는것이다. KeyCloak에서 Client를 추가하는 기본적인 방법은 여기를 참고하도록 하자. 아래 내용을 바로 봐도 무방하다.
Clients를 누르면 KeyCloak 자체적으로 생성된, 그리고 내가 생성한 Client 목록이 보인다. 우측 상단의 Create를 눌러서 Jenkins용 Client를 추가해주자.
Client ID는 jenkins로 해보자. 마음에 들지 않는다면 다른걸로 해도 관계 없다. 나머지 설정은 그대로 유지한채 Save!
Save를 누르면 위와 같은 화면이 보일것이다. 여기에서 변경을 해야 하는 부분은 Access Type, Valid Redirect URIs, Web Origins이다. Access Type은 confidential 로 설정하고 Valid Redirect URIs, Web Origins에는 Jenkins의 URL을 넣어주도록 하자. 주의할점은 URL 뒤에 /* 를 붙여줘야한다.
Client 맨 오른쪽 tab에 Installation이 있다. 여기서 Format Option을 KeyCloak OIDC JSON으로 선택을 한다. 그러면 이 KeyCloak과 연동하기 위한 Json String이 나온다. 이 정보는 나중에 Jenkins에서 이를 통해서 연결을 해야 하기 때문에 꼭 필요하다. 잘 보관을 해놓도록 하자.
Role도 하나 추가해준다. 기존의 Role을 사용해도 관계없지만 기왕이면 새로 하나 만들어 준다. 좌측의 Roles를 눌러서 진입한 후 우측 상단의 Add Role을 눌러준다.
jenkins_admin 이라는 Role을 만들었다.
Role을 만들었으면 사용할 사람과 매핑을 시켜줘야한다. User는 기존에 있던 User를 사용해도 되고 새로운 User를 만들어서 매핑해도 된다. 필자는 기존에 있던 testuser라는 User에 Role을 매핑시킬 계획이다.
Role Mappings 탭으로 가보면 Available Roles에 내가 추가한 jenkins_admin이라는 Role이 추가가 되어있다. 이것을 누르고 아래의 Add selected를 눌러서 Assigned Roles에 추가를 해준다.
이로써 KeyCloak 측에서 Config는 모두 끝이 났다. 위에서 언급했듯이 Jenkins와의 연동을 위해 필요한 Json String을 활용할 때가 되었다.
Jenkins 설정
Jenkins에서 가장 먼저 해야할일은 KeyCloak Authentication Plugin 설치를 하는 것이다. 설치 가능 탭에서 검색하고 재시작 없이 설치하기로 설치를 진행한다.
플러그인을 설치했으면 Jenkins 관리 > Configure Global Security 로 들어간다.
진입을 하면 맨 위에 Authentication 메뉴가 있을것이고 Keycloak Authentication Plugin 이라는 라디오버튼이 보일것이다. 이것을 선택하고 저장을 눌러서 빠져나온다.
그 다음에는 Jenkins 관리 > 시스템 설정 으로 진입을 한다.
시스템 설정 안으로 들어오면 Global Keycloak Settings 을 찾을 수 있다. 이곳에 KeyCloak과 연결을 하기 위한 Keycloak JSON 을 작성을 해야 한다. 아니 위에서 보관한 Json String을 붙여 넣으면 된다. 포맷은 다음과 같다.
{
"realm": "oingdaddy",
"auth-server-url": "http://localhost:8180/auth/",
"ssl-required": "none",
"resource": "jenkins",
"credentials": {
"secret": "9e1fb7f8-3766-4f82-a1d4-8de5fd3f14bb"
},
"confidential-port": 0
}
realm : KeyCloak에서 연결할 realm
auth-server-url : KeyCloak URL
ssl-required : SSL 적용여부
resource : Jenkins 연결을 위해 생성한 Client
credentials : resource와 연결을 위한 secret key
저장을 하고 빠져나온다.
마지막으로 할일은 Jenkins 로그아웃을 하는것이다. 우측 상단의 로그아웃 버튼을 눌러서 로그아웃을 한다.
로그아웃을 하면 바로 KeyCloak 로그인창이 뜰것이다. 이렇게 되면 설정이 성공적으로 끝난것이다. 아까 KeyCloak에서 jenkins에 접근할 수 있도록 권한을 준 계정을 넣고 로그인을 한다. 위에서 필자는 testuser라는 계정에 권한을 줬었고 이 계정으로 로그인을 하면된다.
다음 포스팅은 KeyCloak에서의 Role에 따라 Jenkins의 권한을 통제하는 방법에 대해 알아보도록 하겠다.
끝!
'CI,CD > Jenkins' 카테고리의 다른 글
Jenkins Window 10에 설치하기 (0) | 2021.01.08 |
---|---|
Jenkins 권한관리 KeyCloak 연동해서 하기 (1) (0) | 2021.01.08 |
Jenkins REST API 호출로 Job 생성/실행/결과조회 하기 (0) | 2020.12.31 |
Jenkins와 Slack 연동하기 - 빌드결과 알림받는 방법 (0) | 2020.12.22 |
Jenkins에서 jacoco.exec 파일 수집하기 (with sshpass) (0) | 2020.11.23 |