S/W 개발 기반 시스템 구성 – 1. 인증 시스템
이 글은 S/W 개발에 가장 기본이 되는 이슈 추적(Issue Tracker), 버전 관리(Version Control), 빌드(Build), 지속적인 통합(CI) 시스템을 구성하는 방법에 대한 일련의 글 중 첫 번째이다. 누구나 자유롭게 쓸 수 있도록 할 생각이 아니라면 시스템을 구성할 때 가장 먼저 생각해야 할 부분은 인증일 것이다. 인증 방법은 여러가지를 사용할 수 있겠으나 여기서는 가능하면 여러 시스템에서 공통으로 쓸 수 있도록 OpenLDAP을 사용해 구성하는 방법을 설명한다. 참고로 앞으로 모든 시스템을 운영할 운영체제는 Windows Server 2008 R2 영문판(64bit)이므로 운영체제에 따라 설정 등에 차이가 있을 수 있다.
1. OpenLDAP 설치
참고: 윈도용 바이너리 패키지는 이 곳에서 받을 수 있다.
설치 과정은 특별한 것이 없이 과정을 따라 가면 된다. 선택 설정에서 서버를 지정하고, 포트는 굳이 바꿀 필요가 없겠다.
DB 백엔드는 BDB로 선택한다.
암호는 설치를 마친 후 다시 바꿀 것이므로 기본값을 그대로 사용하고 DB 모니터링 기능도 선택한다(뭐가 좋은지는 모르겠다).
마지막으로 Install 버튼을 눌러 설치한다. 설치를 마치면 Kerberos에 대한 경로를 환경 정보에 설정하는데 사용하지 않는다면 굳이 재부팅할 이유는 없겠다.
2. OpenLDAP 설정
먼저 관리자 암호를 설정한다. OpenLDAP 설치 디렉터리에 있는 slappasswd.exe
를 명령행에서 실행한 후 사용할 암호를 입력하면 그 내용을 암호화해 출력한다. 이 내용은 아래 slapd.conf
파일에서 rootpw에 사용한다.
slapd.conf
파일은 다음 내용처럼 설정한다. suffix, rootdn, rootpw, index 내용과 접근 권한에 주의한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# BDB Backend configuration file # See slapd.conf(5) for details on configuration options. # This file should NOT be world readable. ucdata-path ./ucdata include ./schema/core.schema include ./schema/cosine.schema include ./schema/nis.schema include ./schema/inetorgperson.schema include ./schema/openldap.schema include ./schema/dyngroup.schema pidfile ./run/slapd.pid argsfile ./run/slapd.args # Enable TLS if port is defined for ldaps TLSVerifyClient never TLSCipherSuite HIGH:MEDIUM:-SSLv2 TLSCertificateFile ./secure/certs/server.pem TLSCertificateKeyFile ./secure/certs/server.pem TLSCACertificateFile ./secure/certs/server.pem ####################################################################### # bdb database definitions ####################################################################### database monitor database bdb suffix "dc=plab,dc=net" rootdn "cn=Manager,dc=plab,dc=net" # Cleartext passwords, especially for the rootdn, should # be avoid. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. rootpw {SSHA}iiKbwrlrUoOkzk6Zvqm20k4qvmkREExP # The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd and slap tools. # Mode 700 recommended. directory ./data dirtyread searchstack 20 # Indices to maintain index objectClass eq,pres index ou,cn,mail,surname,givenname eq,pres,sub index uidNumber,gidNumber,loginShell eq,pres index uid,memberUid eq,pres,sub index nisMapName,nisMapEntry eq,pres,sub # Users can authenticate and change their password access to attrs=userPassword by dn="cn=Manager,dc=plab,dc=net" write by self write by anonymous auth by * none # All other attributes are readable to everybody access to * by dn="cn=Manager,dc=plab,dc=net" write by self write by * read |
기본 구조를 만들기 위해 OpenLDAP 설치 디렉터리에 base.ldif
파일(이름은 상관 없다)을 만들고 내용은 다음처럼 한다. 기본 구조를 만들지 않으면 정보를 추가할 수 없다. 계정과 그룹만 관리할 것이므로 ou=People, ou=Groups
두 가지로 구성했다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
dn: dc=plab,dc=net dc: plab objectClass: top objectClass: domain dn:ou=People,dc=plab,dc=net objectClass: top objectClass: organizationalUnit ou: People dn:ou=Groups,dc=plab,dc=net objectClass: top objectClass: organizationalUnit ou: Groups |
실제 정보를 추가하기 전에 OpenLDAP 서비스를 중지하고 명령행에서 다음을 실행한다.
1 |
slapadd -f slapd.conf -l base.ldif |
OpenLDAP\data
디렉터리에 DB가 만들어 진 것을 확인한 후 서비스를 다시 실행한다.
3. 계정 추가
참고: 윈도 클라이언트로 LDAP Admin을 사용한다.
툴바 아이콘에서 Connect 또는 메뉴에서 Start > Connect를 선택한다.
Connections 창이 뜨면 New Connection을 선택한다.
Connection name에는 설정을 저장할 이름, Host에는 OpenLDAP을 설치한 서버 이름을 지정한 후 Fetch DNs 버튼을 누르면 Base DN을 보여준다. Base에 해당 내용을 선택하고 Username과 Password를 입력한 후 Test connection으로 연결을확인할 수 있다. 만약 연결되지 않으면 방화벽 설정(Inbound 규칙)에 OpenLDAP 서비스인 slapd.exe를 추가해 포트를 열어준다.
Username에 root 계정을 사용할 때는 slapd.conf
에 있는 rootdn을 그대로 지정하면 되지만 일반 계정이라면 다음처럼 한다. 예를 들어 sandbox 계정이 ou=People
에 속할 때 Username에는 uid=sandbox,ou=People,dc=plab,dc=net
처럼 Base DN을 사용해 지정한다.
LDAP 서버에 접속 후 계정을 만든다. Home Directory는 특별히 사용하지 않으므로 적절히 지정하면 되겠다. 실제 계정을 만드는 것이 아니므로 Shadow Account를 선택하는 것에 주의한다. 암호는 해당 계정을 선택한 후 마우스 오른쪽 버튼을 누를 때 나오는 팝업 메뉴에서 Set Password…를 선택해 지정하면 되며 SHA를 기본으로 사용하면 된다.