LDAP (Light Weight Directory Access Protocol)
LDAP은 TCP/IP 위에서 디렉토리 서비스를 조회 및 수정하는 응용 프로토콜로 네트워크 상에 있는 파일
또는 장치(서버, 프린터 등)들의 위치(주소)를 쉽고 빠르게 접근 할 수 있도록 도와 줍니다.
LDAP을 쉽게 이해하기 위해서 우리 주변의 LDAP의 형태를 띄고 있는 예를 하나 들어볼탠데요. 바로 전화번호부 입니다.
전화번호부를 열어 살펴보면 LDAP의 기본 구조와 같은 것을 보실수 있어요.
전화번호부에는 가,나,다 순으로 Index가 구성되어 있고, 각 이름마다 전화번호 그리고 주소까지 적혀 있어 LDAP의 Offline 예로 많이 들고 있습니다.
1. Directory
LDAP에 대해서 자세히 들어가기 앞서 Directory (Directory Access Protocol)에 대해 짚고 넘어가겠습니다.
사전적 의미로 디렉토리란 “체계적이고 조직적인 계획 (Systematic Scheme)을 통해 정보(자원)을
질서정연하게 담은 정보 저장소(Information Storage Location)로서 특정화된 데이터베이스이며,
쓰기 작업 보다는 읽기 작업이 빈번한 적합한 서비스” 라고 정의되어 있는데요, Directory는 정의된 바와 같이
쓰기 작업보단 읽기 작업에 특화가 되어있고, 큰 용량의 데이터 보다는 많은 양의 데이터를 사용할 때 적합 합니다.
-등장배경-
Directory는 메인 프레임의 패쇄형 시스템 환경에서는 상대방 시스템 자원을 사용 할 수 없었지만 개방형 시스템 환경에서는
자원 공유라는 큰 패러다임 아래 많은 사용자 와 다양한 서비스들에 대한 정보를 저장하고 검색할 수 있는 기능을 제공 할
필요성에 의해 등장하게 되었습니다.
1988년, ITU(International Telecommunication Union)에서 X.500 이라는 디렉토리 서비스 표준을 제정 하였고,
이 X.500 디렉토리 서비스는 ISO(International Standards Organization)에서 재정한 컴퓨터 네트워크 모델인
OSI (Open System Interconnection) 7 Layer의 응용계층(Application layer)에 속하는 프로토콜로서 정보통신 서비스에 필요한
정보를 데이터베이스화하여 효율적으로 관리하고 사용자가 편리하게 접근할 수 있는 기능을 제공하는 서비스입니다.
즉, 인터넷 사용자들에게 다른 사용자나 서비스에 관련된 정보들을 검색할 수 있는 수단을 제공하는 것 입니다.
X.500 디렉토리 서비스에서 사용되는 용어를 살펴보게 되면 디렉토리란, 실 세계의 객체 정보들을 상호 교환할 수 있는 개방형 시스템들의
집합체라 할 수 있습니다.
객체정보는 DIB(Directory Information Base)에 데이터베이스화 되어 저장이 되며, 디렉토리 서비스 사용자는 사람뿐만 아니라
응용 프로그램 및 프로세스들을 지칭합니다.
-디렉토리 구성-
다음으로 Directory 구성을 함께 살펴 보실탠데요. 사용자나 각종 응용 프로그램들은 DUA(Directory User Agent)를 통하여
DSA(Directory Service Agent)에서 제공하는 서비스들을 제공 받게 됩니다.
위 그림을 보시면 디렉토리 구름안에 있는 각 DSA들을 보시면 각각의 DSA들은 상호간 정보를 공유하고 요청된 서비스를 대신 처리할 수도 있도록
분산 디렉토리 서비스 구조로 구성되어 있는것을 확인 하실수 있습니다.
다음 표는 여태까지 발표된 디렉토리에 관련된 표준입니다. 한번씩 확인해 보시면 도움이 많이 되실것 입니다. 🙂
ITU-T | ISO/IEC | 표준 이름 |
X.500 | ISO/IEC 9594-1 | Overview of concepts, models and services |
X.501 | ISO/IEC 9594-2 | Models |
X.509 | ISO/IEC 9594-8 | Authentication framework |
X.511 | ISO/IEC 9594-3 | Abstract service definition |
X.518 | ISO/IEC 9594-4 | Procedures for distributed operation |
X.519 | ISO/IEC 9594-5 | Protocol specifications |
X.520 | ISO/IEC 9594-6 | Selected attribute types |
X.521 | ISO/IEC 9594-7 | Selected object classes |
X.525 | ISO/IEC 9594-9 | Replication |
X.530 | ISO/IEC 9594-10 | Use of Systems Management for Administration of the Directory |
2. LDAP(Lightweight Directory Access Protocol).
다시 LDAP으로 넘어와서 자세히 살펴보겠습니다.
-등장배경-
X.500의 DAP가 너무 방대한데다,복잡하고 구현하기 어렵다는 점 때문에 그 당시의 일반 PC에서는 사용하기 힘들어 해결책으로
1992년 LDAP이 개발되게 되었습니다 .
LDAP은 DAP의 기능을 거의 모두 다 지원을 했고 (DAP를 먼저 설명드린 이유) 복잡했던 부분이나 잘 쓰이지 않았던 부분은 단순화 하거나
없애버렸으며, 대부분의 데이터 형식에 있어서 단순한 문자열을 사용함으로써 구현을 단순화하고 퍼포먼스를 늘릴수가 있었습니다.
이렇게 LDAP은 처음에 X.500 디렉토리 서비스의 프론트엔드로 사용되었고, 1993년 IETF RFC 1487를 통해 LDAP v1 을 발표, 1995년 IETF
RFC 1777을 통해 LDAP v2 발표, 1997년 IETF RFC 2251을 통해 LDAP v3 발표가 되어 현재까지 아주 잘 사용하고있습니다.
LDAP의 동작 과정을 보면 다음과 같습니다.
① LDAP Application 이 LDAP API에 요청을 보냅니다.
② LDAP API는 Application에서 받은 요청을 LDAP 서버로 BER 인코딩 후 전송합니다.
③ LDAP 서버는 전송받은 데이터를 디코딩하여 요청을 확인 후 필요한 정보를 Backend에서 검색/추가/삭제를 실시합니다.
④ 요청한 작업이 완료되면 요청완료 정보(Result set)을 다시 BER 인코딩 후 전송하게됩니다.
⑤ LDAP API는 전송받은 정보(Result set)을 디코딩하여 LDAP Application에서 확인할 수있도록 출력해 줍니다.
매우 간단하게 LDAP이 어떻게 동작하는지 알아보았는데요. LDAP이 동작하기위해서 어떠한 표준을 따르는지
아래의 RFC를 확인해 보면 정확하게 알수있습니다.
RFC | 표준 이름 |
RFC 1487 | X.500 Lightweight Directory Access Protocol (v.1) |
RFC 1777 | Lightweight Directory Access Protocol (v.2) |
RFC 2251 | Lightweight Directory Access Protocol (v.3) |
RFC 4511 | Lightweight Directory Access Protocol (LDAP): The Protocol |
더 많은 LDAP 관련 RFC는 IETF or RFC-editor 에서 확인하실수 있습니다.
-DAP 와 LDAP 의 차이-
LDAP 프로토콜은 X.500 DAP를 거치지 않고 X.500 모델들을 지원하는 디렉토리 액세스를 제공하기위해 DAP를 경량화 시킨
디렉토리 액세스 프로토콜로 서 OSI 프로토콜 스택이 아닌 TCP/IP 위에서 운용이 되고있습니다 .
하지만, 엔트리에 대해 X.500과 같은 디렉토리 모델을 채택하고 DN을 사용하는것 역시 X.500의 표준을 채택합니다.
다만 X.500의 구조화된 Data encoding 방법을 사용하지 않고, 디렉토리 엔트리를 표현하기 위한 문자열 기반의
접근방법을 사용하며 기능적인 특징은 아래와 같습니다 .
◎ Referral 기능 지원 , ISO 10646 character set 사용으로 UTF-8 지원
◎500 스키마 이외에 인터넷 특성에 맞는 속성 추가 정의, 서브스키마 등의 스키마 확장 기능
◎SSL 보안 채널을 이용한 보안 기능, 안정적으로 LDAP에 새로운 기능 추가를 위한 프레임워크 확장
◎검색 결과에 대한 정렬 및 캐싱 기능
◎클라이언트와 서버 간의 작업에 대한 Dynamic Refresh
-LDAP 과 RDBMS 의 차이-
다음으로는 RDMBS와 비교를 해볼탠데요. 우리가 LDAP보다 더 흔하게 사용하고있는 mysql ,oracle등의 RDBMS와 비교해보았습니다.
간단하게 아래의 표를 보시면 직관적으로 파악하실수 있을거에요.
항목 | LDAP Directory | RDBMS |
구조 | 계층적, 속성값 기반의 계층적 모델 | 복잡한 관계형 모델 |
Performance Tuning | 간단하다. | 복잡하여 전문가가 필요하다. |
보안 | SSL 3.0 향상된 보안 제공, 접근통제가 객체형식을 상속가능. | 그룹별로 필드 단위까지 접근 통제 가능 |
확장성 | 계층적 구조로 별도의 개발없이 확장이 가능하다. | 하나의 시스템에서만 관리 |
유지보수 및 구성 관리 | 네트워크 요구 사항에 맞게 디렉토리 규모를 조정가능하며, 디렉토리의 분할 또는 수많은 리소스와 개체를 포함하도록 디렉토리 확장 가능 | 구축 후 규모에 따라 조정이 어렵고 기존의 Schema 조정을 하기 위해서는 신규 설계 구축해야함 |
정보복제 | 디렉토리 정보 생성 /수정이 발생하면 Mastrer 및 Relplica로 변경 부분 전송 | 별도의 개발이 요구됨 |
상호 운용성 | 표준 디렉토리 액세스 프로토콜 기반 동일 프로토콜 타 디렉토리 서비스와 상호 운용 |
타 회사 제품간의 정보 교환이 어려움. |
쿼리 융통성 | 네트워크 상의 개체 신속 검색, 단순 쿼리 강함. | 어플리케이션에서 개발이 필요하며, 복잡 쿼리 강함(SQL),OLDAP 사용 가능. |
용도 | LDAP Client에게 최적화 | SQL Client에게 최적화 |
저장정보 | Tree구조로 저장, 쓰기보다 읽기 최적화 | 관계형 구조로 저장 |
정보 참조 | 타 정보 참조로 전환기능(Reffaral, Chainning) | 기능제공 안함. |
여기까지 DAP와 LDAP에 대해서 간단하게 알아보았습니다. 🙂 이 글에서는 LDAP 의 개념을 간단하게 적어보았는데요 ~
앞으로 계속 이어서 LDAP이 어떤 녀석인지 포스팅을 할탠데요, 다음 포스팅은 LDAP 모델링에 대해서 이야기해보겠습니다.