LDAP 서버 구성하기
LDAP 인증이란?
LDAP(Lightweight Directory Access Protocol)은 사용자가 조직, 구성원 등에 대한 데이터를 찾는데 도움이 되는 프로토콜이다.
LDAP은 클라이언트-서버 모델을 기반으로 한다. LDAP는 디렉토리를 제공하고 클라이언트는 디렉토리 서비스를 사용하여 항목에 액세스한다.
LDAP 서버가 디렉토리를 구성하는 방법
각 항목은 객체라고도 불리며 객체는 고유한 ‘DN(Distinguish Name)’을 갖는다. dn은 항목을 고유하게 식별하는 이름과 항목을 트리의 루트까지 추적하는 경로로 구성된다. 예를 들어 tomas의 dn은 다음과 같다.
dn: cn=tomas,ou=group-a,dc=junkmm,dc=io
LDAP은 사용자, 그룹, 장치, 응용 프로그램 등과 같은 객체를 저장하며 또한 LDAP 디렉터리 서비스는 보안, 인증 및 권한 부여와 같은 인프라 서비스를 제공하는 데 사용된다.
이번 포스트에서는 LDAP 서버를 구성하고 Gitlab과 연동하여 LDAP의 사용자를 통해 Gitlab에 로그인하는 기능을 구현하고자 한다.
OpenLDAP과 Gitlab 연동하기
LDAP을 구성하여 계정을 생성하고 Gitlab과 연동하여 LDAP계정을 통해 Gitlab 로그인 하는 설정을 진행해보자.
OpenLDAP 설정하기
STEP 1. OpeneLDAP 설치
아래 명령어를 통해 OpenLDAP을 설치한다.
apt-get update
apt-get install slapd ldap-utils
패키지 설치 중 아래와 같이 LDAP 관리자 계정(admin)의 비밀번호 설정 화면에서 비밀번호를 입력하고 OK 버튼을 클릭한다.
STEP 2. OpenLDAP 환경 설정하기
아래 명령어를 입력하여 LDAP의 환경 설정을 진행한다.
dpkg-reconfigure slapd
no 선택
사용할 DNS Domain을 입력한다. 그림과 같이 junkmm.io를 입력하게 되면 ‘dc=junkmm,dc=io’라는 LDAP 디렉토리의 base DN을 생성하게 된다.
조직 이름을 입력한다.
관리자 이름을 입력한다.
no 선택
slapd가 제거됐을 때 DB 정보를 지우지 않도록 설정
yes 선택
기존의 LDAP 서버의 데이터베이스 파일이 남아있을 경우 새로운 데이터베이스 생성 시 기존 파일을 옮기는 설정
STEP 3. 작동 확인하기
아래 명령을 통해 LDAP의 기본 정보를 확인해보자.
slapcat
콘솔 출력 결과
LDAP Account Manager 설치하기
LDAP Account Manager는 웹(php) 기반의 LDAP 관리 툴이다. 편의상 LAM이라고 부르는 것 같다. LAM을 사용하면 LDAP 디렉토리 내 객체를 관리하는데 있어 편리성을 제공한다. 이 LAM을 통해서 LDAP내 계정을 생성해보도록 하자.
STEP 1. LAM 설치하기
아래 명령어를 통해 LAM을 설치한다.
apt-get install ldap-account-manager
STEP 2. LAM 프로필 설정하기
웹 브라우저로 http://(server-ip)/lam/ 웹페이지에 접속한다.
LAM Configuration 클릭
Edit server progiles 클릭
Password에 lam 입력
Server settings의 Tree suffix에 dc=junkmm,dc=io 입력
Security settings의 List of valid users에 cn=admin,dc=my-junkmm,dc=io 입력
Profile password에 LAM 서버 프로필 기본 비밀번호 변경 lam -> 변경 비밀번호
상단 탭에서 Account types 클릭
Active account types에서 사진과 같이 구성, User, Group 객체 정의
모든 설정을 완료했으면 하단 save 버튼을 클릭한다.
STEP 3. Group 생성하기
LDAP 구성 시 설정했던 admin의 비밀번호 입력 후 Login
Groups 탭의 New group버튼 클릭
Group name을 입력하고 Save 클릭
그룹 List에 group-1이 생성된 것을 확인할 수 있다.
STEP 4. User 생성하기
Users 탭의 New user 클릭
Personal 탭의 Last name 필드에 ID 입력
Unix 탭의 Set password 클릭
생성한 계정의 비밀번호 설정
Save 클릭하여 tomas계정 생성
GitLab 설치하기
GitLab Application은 LDAP과 별도의 서버에 구축한다.
STEP 1. GitLab에 필요한 패키지 설치하기
sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates tzdata perl
STEP 2. GitLab 설치하기
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt-get install gitlab-ce
STEP 3. GitLab 서버 재시작
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
STEP 4. 설치 확인
웹 브라우저로 http://(server-ip)에 접속하여 GitLab 정상 작동 확인
STEP 5. LDAP 연결을 위한 필수 패키지 설치
sudo apt-get update
sudo apt-get install -y libnss-ldapd libpam-ldap
STEP 6. GitLab 설정 파일 변경
GitLab 설정 파일인 /etc/gitlab/gitlab.rb 파일 수정
gitlab_rails['ldap_enabled'] = true
gitlab_rails['prevent_ldap_sign_in'] = false
###! **remember to close this block with 'EOS' below**
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
main: # 'main' is the GitLab 'provider ID' of this LDAP server
label: 'welcome to junkmm.io'
host: '192.168.10.100'
port: 389
uid: 'uid'
bind_dn: 'dc=junkmm,dc=io'
password: 'password'
encryption: 'plain' # "start_tls" or "simple_tls" or "plain"
base: 'dc=junkmm,dc=io'
EOS
STEP 7. GitLab 서버 재시작
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
GitLab 구성 파일을 편집 및 서버 재시작을 완료하면 사진과 같이 로그인 화면이 변경된 것을 확인할 수 있다.
마지막, GitLab에서 LDAP 계정으로 로그인 해보기
LDAP Account Manager로 생성한 tomas계정으로 로그인 해보자.
로그인 성공!
'운영체제' 카테고리의 다른 글
[devocen 오픈랩] kubernetes 스터디 1주 - 컨테이너 실습 (0) | 2024.05.13 |
---|---|
[Nginx] 사설 인증서로 Proxy 구성하기 (0) | 2024.04.17 |
[RHEL 8] Apache + JBoss 조합으로 WAS 구성하기 -2 (0) | 2023.07.12 |
[RHEL 8] Apache + JBoss 조합으로 WAS 구성하기 -1 (0) | 2023.07.12 |
[RHEL 8]LVM 설정 (0) | 2023.07.12 |