내부회계감사에서 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 계정 바꾸는 방법은 이전 글 링크를 참고하세요.
계정을 바꾸는 것은 옵션이며 본 Unix(Linux) 인증으로 바꾸는 것과는 무관합니다.
[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)으로 원복 후에
기존 방식으로 로그인이 잘 되는지 확인하세요.
'프로그래밍 > Jenkins' 카테고리의 다른 글
로그 보관(삭제 주기) 스크립트 (0) | 2020.03.30 |
---|---|
Jenkins 로그 삭제 (0) | 2019.11.04 |
Accessing OS environment variables in Jenkins (0) | 2019.08.30 |
Jenkins service account user 변경 (0) | 2019.08.30 |
[Jenkins] shell 명령어 실행을 위한 관리자 권한 부여 (0) | 2019.08.20 |