GitHub

Network

LDAP?

현진용 2026. 1. 19. 20:36

Lightweight Directory Access Protocol


네트워크상에서 조직, 개인, 파일, 장치 등의 정보를 중앙 집중적으로 저장하고 검색하며 관리하기 위한 디렉터리 서비스 프로토콜

 

AI 검색에서는 위와 같이 정의하였다. 물론 한 번에 이해하기 어렵다. 그래서 한 문장으로 정리하면 다음과 같다.

 

LDAP은 정보를 주고받기 위한 '규칙(프로토콜)'

 

흔히 'LDAP 서버'라고 부를 때는 이 규칙을 사용해 정보를 저장하고 검색할 수 있는 '디렉터리 서비스(저장소)' 전체를 의미하기도 한다.

 

Directory Access?


그래서 어떤 디렉토리에 액세스한다는 건가?

한 마디로 정의하면, 특수한 저장소(Directory)에 접속하여 정보를 꺼내오거나 수정하는 행위(Access)이다.

일반적인 DB는 수시로 변하는 데이터값을 저장하지만 여기서 말하는 디렉터리(저장소)는 이름, 부서, 이메일처럼 한 번 정해지면 잘 안 변하고, 검색이 자주 일어나는 계층적 정보를 저장하는 특수한 데이터베이스를 의미한다. 다시 말해, 일반적인 파일 시스템(혹은 일반적인 DB)는 서류 가방 안의 서류를 찾는 것이고, LDAP의 Directory Access는 전 세계 인명사전에서 사람을 찾는 것이다.

 

왜 경량(Lightweight)인가?


기존 X.500이라는 프로토콜이 1988년에 만들어졌다. 그러나 이는 OSI 7계층 전체 스택을 지원해야 했기에 시스템 자원을 많이 소모하는 매우 무거운 프로토콜이었다. 그래서 다음과 같은 X.500의 핵심 기능을 유지하면서, 인터넷 표준인 TCP/IP 환경에서 가볍게(Lightweight) 돌아가도록 다듬은 것이 바로 LDAP이다.

X.500에서 LDAP으로 넘어가면서도 남아있는 X.500의 특징은 다음과 같다.

 

1. 정보 모델 (Information Model)

X.500의 가장 큰 특징인 객체 지향적 데이터 관점을 그대로 이어받았다.

  • 엔트리(Entry)와 속성(Attribute): 모든 데이터는 '엔트리'라는 단위로 존재하며, 각 엔트리는 이름, 이메일, 전화번호와 같은 고유한 '속성'들을 가진다.
  • 오브젝트 클래스(Object Class): 해당 엔트리가 사람(person)인지, 장치(device)인지, 혹은 조직(organization)인지를 규정하는 설계도 역할을 한다. 이 표준화된 스키마(Schema) 구조 덕분에 전 세계 어디서나 높은 호환성을 유지한다.

2. 명명 모델 (Naming Model: DN)

디렉터리 내에서 특정 데이터를 유일하게 식별하기 위한 DN(Distinguished Name) 체계를 핵심으로 한다.

  • 계층 구조: 뿌리(Root)로부터 시작하여 잎(Leaf) 노드에 이르기까지 내려가는 계층적 주소 방식을 사용한다.
  • 상대 고유 이름(RDN): 특정 폴더 내에서의 고유 명칭(예: cn=Jin)과 전체 경로인 DN을 구분하는 논리적인 명명 규칙을 적용한다.

3. 기능 모델 (Functional Model)

데이터를 어떻게 조작하고 관리할지에 대한 동작 정의 역시 X.500의 설계를 기반으로 한다.

  • 검색(Search): 단순히 데이터를 읽는 수준을 넘어, 복잡한 필터(Filter) 조건을 통해 트리 구조 전체를 탐색하는 강력한 기능을 제공한다.
  • 인증(Bind): 클라이언트가 누구인지 확인하고 적절한 접근 권한을 부여하는 인증 절차를 수행한다.
  • 수정 및 삭제(Modify/Delete): 계층 구조 내에서 데이터의 무결성을 유지하며 안전하게 정보를 변경하거나 제거하는 로직을 따른다.

4. 분산 모델 (Distribution Model)

전 세계의 디렉터리를 하나의 논리적 서비스로 연결하려는 확장성을 이어받다.

  • 참조(Referral): 클라이언트가 요청한 데이터가 현재 서버에 없을 경우, 해당 데이터를 보유한 다른 서버의 위치 정보를 제공한다.
  • 데이터 분산: 이 모델 덕분에 물리적으로 여러 대의 서버에 데이터를 나누어 저장하더라도, 사용자는 마치 하나의 거대한 저장소에 접근하는 것처럼 편리하게 이용할 수 있다.

 

결국 LDAP은 X.500의 "데이터를 계층적으로 관리하고, 고유한 주소(DN)로 찾으며, 스키마로 정의한다"는 철학은 그대로 유지하되, 통신 방식만 현대 인터넷에 맞게 만든 결과물이라고 볼 수 있다. 읽기 요청에 특화되어 아주 빠르게 응답하도록 설계되었다.

 

 

용도


무엇인지, 어떤 목적을 위해 있는 것인지 알겠다. 그래서 대체 어디에 쓰이느냐?

가장 대표적인 예로 로그인 통합이 있다. 많은 기업에서 LDAP을 사용하는 가장 큰 이유가 이것이다.

사내에 사사로운 사내 메신저, 그룹웨어, 클라우드 서버(AWS 등)가 흩어져 있다고 가정하자. 각 서비스마다 계정을 따로 만들면 관리가 불가능해진다. 정확히 말하자면 극도로 비효율적이다. 그런데 모든 서비스가 로그인 요청을 하나의 서버에서 처리한다면 어떨까?

 

A : "이 사용자 비밀번호가 LDAP에 등록된 거랑 맞아?"

B : "맞아, 이 사람은 개발팀(OU=Dev) 소속이라 서버 접속 권한도 있어."
cn=Jin, ou=Dev, dc=company, dc=com

 

위처럼 권한 확인을 효과적으로 할 수 있다.

또 하나의 예를 들어보자. 리눅스 서버 수백 대가 있을 때, 신입 사원이 들어올 때마다 서버마다 계정을 만드는 건 불가능한다. 모든 서버가 LDAP을 바라보게 설정하면, LDAP 서버에 사용자 한 명만 추가해도 수백 대의 서버에 즉시 로그인이 가능해진다.

 

출처 : Okta

 

 

반응형

'Network' 카테고리의 다른 글

HyperText Transfer Protocol  (1) 2025.10.24
DHCP  (0) 2025.09.30
네트워크 - 소켓, 리눅스 네트워크 관리  (0) 2025.03.13
네트워크  (1) 2025.03.11
네트워크 프로그래밍  (1) 2023.08.31