database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
ㆍLDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
LDAP Q&A 1853 게시물 읽기
No. 1853
LDAP 퍼온글
작성자
송상준(sjsong)
작성일
2003-07-18 13:21
조회수
6,309

시스템 관리용 오픈 소스 패키지 톱 5: 제2편 LDAP

등록일: 2003년 07월 02일

 

 

--------------------------------------------------------------------------------

 

 

 

저자: 『시스템 관리의 핵심, 개정3판』의 저자 아일린 프리시/『시스템 관리의 핵심, 개정3판』의 역자 홍상욱 역

 

본 기사는 유용한 오픈 소스로 공개되어 있는 관리용 툴 5가지를 소개하는 시리즈 기사에서 두 번째 기사에 해당한다. 이 다섯가지 오픈 소스 툴을 사용하게 되면 어떠한 유닉스 운영 체제를 사용하고 있더라도 작업이 한결 수월해 질 것이다.

 

4위: LDAP

 

지난 수년간 시스템 관리직에서 LDAP는 핫이슈로 거론되어 왔다. LDAP는 단체나 조직의 개개인에 대한 정보를 저장하고 질의할 수 있는 성명록 서비스를 제공한다. 성명록에 들어갈 수 있는 정보의 범위는 상당히 광범위한 편이다. 예를 들어 전화 번호, 사무실 위치, 유닉스 사용자 계정 데이터, 개인적인 데이터(집 전화 번호, 사진), 회사 특정 데이터 등등을 저장할 수 있다. 여기서는 LDAP에서 지원하는 기능을 살펴보도록 하겠다.

 

LDAP는 Lightweight Directory Access Protocol의 약자로서 성명록 서비스를 제공하는 프로토콜이다. 성명록 서비스는 데이터베이스와 비슷하다고도 볼 수 있는데 다음과 같은 점에서 차이를 보인다.

읽는 속도를 최적화 했다. 즉, 엔트리를 추가하고 갱신하는데 시간이 오래 걸릴 수도 있다.

고급 검색 기능을 지원한다.

기본적인 데이터 구조인 스키마는 필요에 따라서 확장할 수 있다.

RFC 문서를 통해서 공개되어 있는 표준을 따르기 때문에 서로 다른 업체에서 구현한 제품을 사용하더라도 전혀 문제되지 않는다.

분산 저장 매체와 데이터 복사 기법을 활용하므로 확장성이 뛰어나다.

이와 같은 장점으로 인해 기존에는 NIS로 처리되었던 엔터프라이즈급 사용자 계정 및 인증 방식이 첨차 LDAP로 대치되고 있다.

 

데이터베이스와의 차이점을 강조하기 위해 성명록 서비스에서 데이터 구조체는 이름을 달리한다. 레코드는 엔트리(entries), 레코드에서 각각의 필드는 속성(attribute)이라고 불린다.

 

노트: LDAP라는 용어는 특별한 구분 없이 사용되는 것이 보통이지만 실제로는 성명록에 있는 데이터를 엑세스하는데 사용되는 프로토콜만을 의미한다(프로토콘은 데몬에 구현되어 있음). 실제 데이터베이스 기능은 별도의 백엔드 프로그램 또는 패키지로 구현되어 있다.

 

LDAP는 1990년대 초반, 미시건 주립대학교에서 처음으로 구현되었다. 현재는 다양한 LDAP 서버가 상용화 되어 있으며, 오픈 소스 프로젝트 기반의 OpenLDAP는 미시건대학교에서 계속하여 작업을 이어온 프로젝트이다. 리눅스 및 BSD 운영 체제에서는 디폴트로 OpenLDAP를 사용하고 있고 대부분의 다른 유닉스 시스템에서도 사용할 수 있다. 본 기사에서 소개되고 있는 예제는 OpenLDAP를 기준으로 하고 있다.

 

 

--------------------------------------------------------------------------------

 

참고 도서

 

시스템 관리의 핵심, 개정 3판

에일린 프리시, 홍상욱 역

 

상세설명보기

목차보기

샘플챕터보기

관련기사: 1편 아만다(Amanda)

 

 

--------------------------------------------------------------------------------

 

 

스키마에 대해서

 

LDAP 객체는 성명록 서비스 서버간의 호환을 유지하기 위해 표준화 되어있다. LDAP 스키마에는 사용 가능한 엔트리 유형 목록 (객체 클래스) 및 그에 해당하는 속성 등이 정의되어 있다. 스키마 정의는 파일에 저장된다. OpenLDAP에서는 스키마 파일이 /etc/openldap/schema 하위 디렉토리에 온다.

 

속성은 데이터 유형, 형식, 비교 방식 등으로 정의된다. 객체 클래스에서 속성은 필수일 수도 있고 아닐 수도 있다. 동일한 속성이 여러 객체 클래스에 속할 수도 있다.

 

객체 클래스는 top 객체 클래스에서 시작해서 트리 계층 구조로 정렬되어있다. 1차 객체 클래스는 top 클래스의 자식이 되고 그 이하 레벨 객체 클래스는 바로 윗단계 객체 클래스의 자식이 된다. 자식 클래스는 부모 클래스의 모든 속성을 자동으로 포함한다.

 

성명록 엔트리는 Daphne Frisch에 대한 다음 예제 레코드에서와 같이 여러 객체 클래스에 포함될 수 있다.

 

dn: cn=Daphne Frisch,ou=Pets,dc=ahania,dc=com

objectClass: top

objectClass: person

objectClass: organizationalPerson

objectClass: inetOrgPerson

이 성명록 엔트리에 해당하는 고유 이름 (키 필드) 및 객체 클래스

sn: Frisch

cn: Daphne Frisch

telephoneNumber: 555-1212

userPassword: {crypt}meeoooowww

description: Toy chaser and purrrring fuzz ball

person 객체 클래스의 속성

ou: Pets

title: HRH

street: 125 N. Main Street

postOfficeBox: 4224

st: CT

postalCode: 06512

facsimileTelephoneNumber: 888-555-1212

organizationalPerson 객체 클래스의 속성

departmentNumber: 14

employeeType: permanent

givenName: Daphne

initials: DF

jpegPhoto: daphne.jpg

audio: daphne.wav

homePhone: 555-2121

pager: Opening the toy cabinet

preferredLanguage: Fenglish

userCertificate: certs/df_cert.pem

inetOrgPerson 객체 클래스의 속성

 

 

예제 레코드에서 데이터 형식은 LDIF(LDAP Data Interchange Format)라고 불린다. LDIF는 속성, 값 쌍이 순차적으로 콜론으로 분리해서 나열된 형식이다. 예를 들어 telephoneNumber 속성은 값이 555-2121이다. 각각의 속성은 어느 객체 클래스에 속해 있는지 보여 주기 위해 색깔처리 되어있다.

 

Ldap Schema Viewer는 표준 LDAP 스키마 객체를 간편하게 볼 수 있게 해준다. LDAP에서 가장 매력적인 기능으로는 스키마 확장이 가능하다는 것이다. 사이트에서는 필요에 따라서 객체 클래스와 속성을 자유자재로 추가할 수 있다.

 

LDAP 성명록 구조

 

LDAP 성명록은 트리 구조로 되어있으며 일반적으로 사이트의 도메인 이름에 해당하는 엔트리에서 시작된다. 이 루트 엔트리는 다음과 같이 표현된다.

dc=ahania,dc=com

도메인 이름을 이루는 각 문자열은 dc(domain component)의 값이 되고 전체가 콤마로 분리된 리스트로 묶인다. 이것을 성명록의 베이스라고 하고 예제에서는 ahania.com에 해당한다.

 

이러한 속성=값 쌍 목록을 사용해서 성명록에 임의의 위치(엔트리)를 지칭할 수 있다. (여기서 콤마 간의 공백은 있어도 되고 없어도 된다.)

 

앞에서 살펴 보았던 Daphne의 성명록 엔트리의 첫번째 줄을 보다 자세히 살펴보자.

dn: cn=Daphne Frisch,ou=Pets,dc=ahania,dc=com

위 줄은 이 엔트리의 고유 이름(dn)을 정의하고 있다. 이 속성은 성명록 데이터베이스에서 이 엔트리에 대한 고유 키로 취급된다. 컴마로 분리된 속성-값 쌍으로 구성되어 있는데 여기서는 공통 이름 "Daphne Frisch", 단체 "Pets", 도메인 ahania.com 등을 지정했다.

 

dn에서 첫번째 콤포넌트는 엔트리의 상대 고유 이름 (rdn) 이라고 불린다. 위 예제에서는 cn=Daphne Frisch가 rdn이다. 이 rdn은 ou=Pets, dc=ahania, dc=com 하위트리에 위치에 대응한다. 전체 성명록에서 dn이 고유하듯이 rdn도 하위트리에서 고유해야만 한다.

 

다음은 성명록 트리를 간단히 표현한 것으로서 들여쓰기로 트리 깊이를 구분했다.

dc=ahania,dc=com

ou=Humans,dc=ahania,dc=com

cn=Jerry Carter,ou=MyList,dc=ahania,dc=com

cn=Rachel Chavez,ou=MyList,dc=ahania,dc=com

사람 ...

ou=Pets,dc=ahania,dc=com

cn=Daphne Frisch,ou=Pets,dc=ahania,dc=com

cn=Lyta Frisch,ou=Pets,dc=ahania,dc=com

cn=Susan Frisch,ou=Pets,dc=ahania,dc=com

cn=Talia Frisch,ou=Pets,dc=ahania,dc=com

위 성명록은 두 단체를 포함하고 있으며, 그 밑에는 여러 엔트리가 존재한다.

 

사용자 계정에서 LDAP 사용

 

사용자 계정 데이터 및 인증에 LDAP를 사용하고 싶다면 다음 작업을 해야 한다.

사용자 계정 및 관련 설정 정보를 성명록 서비스 스키마에 통합시킨다

표준 파일 (혹은 NIS 시설)에서 사용자 계정 데이터를 이동시킨다

PAM 사용자 인증 시설에서 LDAP 성명록을 사용하도록 설정해 준다

객체 클래스 주요 용도 OpenLDAP 스키마 파일

posixAccount 유닉스 사용자 계정 데이터 nis.schema

shadowAccount 유닉스 암호/노화 데이터 nis.schema

account 단체 및 호스트 속성 cosine.schema

person 기본 개인 데이터 core.schema

organizationalPerson 주소 전화번호 데이터 core.schema

inetOrgPerson 피고용인 관련 데이터 inetorgperson.schema

ipHost and device 호스트 기반 로그인 엑세스 제어 nis.schema

groupOfUniqueNames 호스트 기반 로그인 엑세스 제어 core.schema

 

 

오렌지 색으로 표시된 객체 클래스는 거의 모든 사이트에서 사용될 것이다. 또한, 필요에 따라서 노란색 객체 클래스도 사용자 계정 엔트리에 사용할 수 있다. 분홍색 객체 클래스는 호스트 기반 로그인 엑세스 제어를 사용하고 싶을 때 사용하면 된다. (즉, 어느 사용자가 어느 호스트에 로그인 할 수 있는지 지정하고 싶을 때다.)

 

기존 계정 데이터 이동

 

PADL software에 포함되어 있는 오픈 소스 데이터 이동 툴을 사용하면 기존 사용자 계정 데이터를 LDAP 성명록에 간단히 추가할 수 있다. 데이터 이동 툴은 다양한 펄 스크립트로 구성되어 있는데 현재 사용되고 있는 서비스로부터 필요한 데이터를 추출해서 그에 해당하는 성명록 엔트리를 작성해 준다. 또한, 스크립트가 자동으로 LDAP 성명록에 엔트리를 삽입하도록 해도되고, LDIF 형식의 텍스트 파일을 작성하도록 해서 확인해 보고 수정한 후에 삽입해도 된다.

 

사용자 인증 설정

 

성명록 엔트리를 사용자 인증 데이터로 사용하려면 PADL 소프트웨어에서 개발한 두 가지 오픈 소스 모듈(nss_ldap, pam_ldap)이 추가적으로 필요하다.

 

nss_ldap 모듈은 표준 이름 서비스 스위치 파일인 /etc/nsswitch에 대한 인터페이스를 제공한다. 즉, 이 파일의 엔트리에 LDAP를 지정할 수 있게 해준다. 예를 들어 다음 두 nsswitch 엔트리는 사용자 계정 정보를 우선 기본 파일에서 찾아보고 없을 경우 OpenLDAP 서버에서 가져오도록 설정한 것이다.

passwd: files ldap

shadow: files ldap

ldap 키워드는 OpenLDAP 서버를 의미한다. 사용자 계정 정보를 포함하고 있는 단체 단위의 고유 이름은 LDAP 서버 설정 파일에 지정되어 있다.

 

pam_ldap 모듈은 PAM 시설에서 사용자 인증 데이터 및 사용자 계정 제어 작업에 LDAP를 사용하고자 할 때 사용된다. 다음 예제에서와 같이 일반적인 방식으로 PAM 스택에 삽입해 주면된다.

auth required /lib/security/pam_securetty.so

auth required /lib/security/pam_nologin.so

auth sufficient /lib/security/pam_ldap.so

auth required /lib/security/pam_unix.so

account sufficient /lib/security/pam_ldap.so

account required /lib/security/pam_unix.so

password sufficient /lib/security/pam_ldap.so

password required /lib/security/pam_unix.so strict=false

session required /lib/security/pam_unix.so debug

일반적으로, pam_ldap 모듈은 일반 인증 모듈 (여기에서는 pam_unix) 바로 위에 삽입된다. 이 모듈은 사용자가 특정 호스트에만 접속할 수 있게 제한할 수도 있고 특정 호스트에 일부 사용자만 접속할 수 있도록 할 수도 있다.

 

기타 LDAP 기능

 

본 기사에서는 아주 기본적인 LDAP 기능만을 다뤘다. 기타 기능 중에 중요한 것으로는 다음과 같은 기능이 있다.

복잡한 질의 처리 가능, 그래픽 오픈 소스 툴 사용 가능 (예: GQ)

매우 섬세한 데이터 엑세스 제어 기능 (속성 단위로 지정 가능)

LDAP 서버에 대한 안전한 인증 기능

 

 

아일린 프리시는 VMS, 유닉스, 맥킨토시, 윈도우 시스템 등의 다양한 시스템을 20여년간 관리해 왔다. 이 기사를 재미있게 읽어보았고 무료 ESA3 전단지를 받아 보고 싶다면 http://www.aeleen.com/esa3_news.htm 에서 등록하면 된다. 또한, 최근에 출판된 System Administration Pocket Reference도 훌륭한 참고 서적이다.

[Top]
No.
제목
작성자
작성일
조회
1857넷스케이프 주소록을 사용하려면 어떻게 해야하죠? [1]
신재훈
2003-07-21
5320
1855LDAP META DIRECTORY PROVISIONING
송상준
2003-07-18
5428
1854LDAP에 관련된 BOOKMARK
송상준
2003-07-18
5233
1853LDAP 퍼온글
송상준
2003-07-18
6309
1852LDAP 시작하기 (퍼온글)
송상준
2003-07-18
6996
1851LDAP에 관해 퍼온글
송상준
2003-07-18
6033
1850무료 세미나가 있었군요....
김연수
2003-07-18
5448
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다