LDAP(Lightweight Directory Access Protocol)은 네트워크 상에서 조직이나, 조직 내 파일/개인정보/디바이스정보 등을 찾아볼 수 있도록 하는 프로토콜이다.
네트워크 상의 디렉토리 서비스 표준인 X.500
의 DAP(Directory Access Protocol)을 기반으로 한 경랑화(Lightweight)된 DAP 버전이다.
디렉터리 서비스 (Directory Service)
Lightweight (경량화)
검색에 특화
Binary Protocol (바이너리 프로토콜)
Asynchronous Protocol (비동기 프로토콜)
LDAP의 구성요소는 4가지 모델로 나눌 수 있다.
- Information 모델
- Naming 모델
- Functional 모델
- Security 모델
Entry Name | Full Name | Discription |
---|---|---|
DC | Domain Component | 도메인 구성요소 |
DN | Distinguished Name | 모인 Entry를 바탕으로 사용자를 구분할 수 있는 고유의 트리 이름 |
CN | Common Name | 일반 이름 |
SN | Sir Name | (이름의) 성 |
C | Country Name | 국가명 |
ST | State Province Name | 주(도) 명 |
L | Locality Name | 도시, 특정 지역 단위명 |
O | Organization | 조직(회사) 명 |
OU | Organization Unit Name | 조직 부서명 |
UID | User ID | 유저 아이디 |
각 사용자나 개체는 고유한 DN(Distinguish Name)
을 갖는데, 이는 끝 노드부터 역순으로 올라간다.
LDAP 서버에는 여러 Entry가 계층적트리(Hierarchical Tree)구조로 들어있으며, 각각의 Entry는 다수의 Attribute(이름 등)을 갖습니다.
각 Entry는 DN(Distinguished Name)이라는 고유값으로 정의됩니다.
트리 형태의 구조를 DIT(Directory Information Tree)
라고 합니다.
Entry
: Directory에서 정보를 표현하는 기본 단위. Entry는 다수의 Attribute로 구성된다.Attribute
: Entry의 각 타입을 저장하는 공간으로 1개의 Attribute에 하나, 또는 다수의 값을 담을 수 있다.
ObjectClass
- Entry에서 꼭 필요하거나 가질 수 있는 Attribute 타입을 정의한다.
- 데이터에 필수적으로 들어가야하는 정보를 담을 수 있게 정의할 수 있다.
- 또 다른 ObjectClass를 상속하여 구현하며 개념을 확장할 수 있다.
Schema
- ObjectClass와 Attribute에 대해 정의하는 규칙으로 보면 된다.
ObjectClass에 어떤 Attribute가 들어갈지, Attribute의 값에 대한 제약 및 조건 등 관련된 규칙들을 정의할 수 있다.- 스키마 정의를 통해 여러 응용 프로그램에서 Directory Service를 읽고 사용할 때 상호운용성을 보호해주는 역할을 한다.
Alice는 ldapsoftware.com(dc)라는 도메인의 employee(ou)에 속한 사용자이다.
- LDAP 디렉토리 구조에서 각 Entry를 어떻게 식별하고 구성하는지에 대해 설명한다.
- Entry는 여러 자식 Entry를 가지는 형태의 트리 구조로 나타나게 되는데, 각각의 Entry 계층에서는 해당 계층을 나타내는 고유한 주소 Attribute를 지니는데 이를 RDN(Relative Distinfuished Name)이라고 한다.
LDAP 디렉토리에서 작업하는 명령을 다룬다.
작업 명령의 기능에 따라 3가지로 구분하며, 총 8가지의 작업 명령을 나눈다.
질문 작업
갱신 작업
인증 및 제어 작업
Binary암호화
: 소스코드를 알아보기 힘들게 난독화하는것이 아니라, Decompile이 불가능하도록 Binary 자체를 암호화하는 것을 말합니다. (위변조 방지 라고도 함)
LDAP을 이용한 Directory Server도 데이터를 저장하는 DB 유형 중 하나이다.
우리가 흔히 사용하는 Oracle DB, MySQL같은 관계형(RDB)와 비교했을 때 데이터 구조와 용도에서 많은 차이가 있다.
RDB(Relational Database)는 행과 열의 형태로 구성된 테이블에 데이터를 저장하고, 서로 다른 테이블들과의 관계를 통해 결과를 도출한다.
반면, LDAP의 경우 데이터가 트리 구조로 이루어진 Hierarchical DB이다.
각 Entry는 Attribute로 이루어진 데이터들과 함께 하위에 여러 자식 Entry를 가지는 그룹 형태를 반복하여 트리와 같은 계층 형태의 데이터로 표현할 수 있다.
LDAP이 가진 계층 구조는 검색과 읽기 작업에 큰 강점을 보여준다.
RDB(Relational Database) | LDAP(Lightweight Directory Access Protocol) | |
---|---|---|
구조 | 관계형 테이블 구조 | 계층형 트리 구조 |
특징 | 여러 데이터, 테이블들의 관계를 통해 필요한 데이터를 종합적으로 가져오는 복합적 쿼리를 처리 | 저장된 데이터를 신속하게 조회하기 위해 단순 쿼리 위주로 작업을 처리 |
장점 | 추가, 삭제와 같은 쓰기작업에서 안정성 ↑ | 검색 및 읽기 작업에서 속도와 성능면에서 RDB보다 유리 |
단점 | 스키마를 수정하기 어려우며, 시스템이 커지면 JOIN문이 많은 복잡한 쿼리가 만들어 질 수 있다. | 트랜잭션 특성이나 실시간성이 떨어져 사용자 추가나 패스워드 변경이 바로 반영되지 않을 수 있다. |