Justin의 개발 로그
article thumbnail

내부회계감사에서 Jenkins의 비밀번호 관리 방식이 미흡하다는 지적사항을 대응하기 위한 방안입니다.

 

Jenkins의 기본 인증 방식인 Jenkins' own user database는 

비밀번호 복잡성 등에 대한 정책을 전혀 설정할 수 없어 

'12345'와 같은 단순한 비밀번호도 설정이 가능합니다.

 

이를 보완하기 위해서는 

LDAP, Unix user/group database 등 추가 옵션이 제공되는데,

LDAP은 추가 시스템 구성 및 연동이 필요해서 

 

비교적 간단한 Unix user/group database 옵션을 사용해 보고자 합니다.

Configure Global Security > Unix user/group database

제 경우 이미 관련된 설정을 마쳤기 때문에 Success가 나오는데, 

Test를 하지 않고, 함부로 Unix user/group database 설정을 하면 로그인을 못하는 낭패를 볼 수 있습니다.

 

[사전 준비 사항]

1. Jenkins 실행 계정의 root 그룹 추가

2. Jenkins 로그인을 위한 사용자 계정 생성 및 비밀번호 설정

3. 설정이 완료되면 Test -> Success가 되면 Unix(Linux) 계정을 Jenkins 로그인 계정으로 사용가능하게 됨

 

일단, 테스트에 사용된 Jenkins는 AWS EC2 Instance에 설치가 되어 있으며...

관리의 편의상 jenkins 프로세스의 실행을 jenkins 계정이 아닌 ec2-user 계정으로 바꿔둔 상태 입니다.

 

Jenkins의 service 계정 바꾸는 방법은 이전 글 링크를 참고하세요.

justinadpark.tistory.com/49

계정을 바꾸는 것은 옵션이며 본 Unix(Linux) 인증으로 바꾸는 것과는 무관합니다.

 

Jenkins service account user 변경

To change the service, open the /etc/sysconfig/jenkins (in Debian [Ubuntu] this file is created in /etc/default) and change the JENKINS_USER to the user you want. In this example, it's talendu..

justinadpark.tistory.com

[1. 먼저 Jenkins 서비스 계정에 root 권한을 부여해야 합니다.]

1-1. Jenkins가 설치된 Linux 서버에 ssh로 접속을 합니다.

 

1-2. Jenkins 서비스 계정(제 경우에는 ec2-user)에 root 그룹 권한을 부여 합니다.

>sudo gpasswd -a ec2-user root

>sudo usermod -G root ec2-user

 

>cat /etc/group

#아래와 같이 root 에 설정한 계정이 포함되어 있으면 root 그룹 권한 부여가 성공된 것입니다.

root:x:0:ec2-user,jenkins
bin:x:1:
daemon:x:2:
sys:x:3:

 

[2. root 권한이 부여되면 Jenkins에서 Test를 해 봅시다.]

만약 Success가 나오지 않고, 

/etc/shadow 권한이 필요하다는 메시지가 나오면, 

아래 명령으로 /etc/shadow에 권한을 추가 합니다.

 

>sudo chmod g+r /etc/shadow

 

Linux 서버를 재기동 해야  Jenkins 서비스 계정이 root 그룹으로 인식될 수도 있습니다.

 

[3. Success가 되었다면 사용자 계정을 추가하세요.]

>sudo useradd -m justin

>sudo passwd justin

 

#별도의 옵션없이 사용자 계정을 추가하면 새로운 계정은 users(users:x:100) 그룹에 추가되거나,
#계정명과 동일한 그룹명이 새로 생성되면서 해당 그룹이 됩니다.

#Jenkins 사용자 계정으로 이용하는데는 그룹은 별 관계가 없으나, 

#Jenkins에서 그룹별로 권한을 설정하려면 그룹을 설정해 주시는 것도 방법 입니다.

 

 

[4. 이제 Jenkins 인증을 Unix user/group database로 변경합니다.]

 

Configure Global Security > Unix user/group database

현재 로그인되어 있는 Jenkins 관리 메뉴는 닫지 마세요.

 

 

[5. Unix 인증이 잘 되는지 새 시크릿 창으로 브라우저를 띄워 테스트 합니다.]

 

기존 로그인되어 있는 Jenkins 관리 메뉴는 닫지 마세요.

혹시 Unix(Linux) 인증이 안 먹는 경우 원래 설정으로 되돌아 가려면 관리자로
로그인된 Jenkins 화면이 필요합니다.

Linux에서 생선한 계정으로 Jenkins에 로그인이 되면 성공.

 

혹시 로그인이 안되면, 
기존 로그인되어 있는 Jenkins 관리 메뉴
에서 COnfigure Global Security 를 기존에 사용하던 방식(Jenkins’ own user database)으로 원복 후에 
기존 방식으로 로그인이 잘 되는지 확인하세요.

 

profile

Justin의 개발 로그

@라이프노트

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!