-
X.500과 LDAP 정리개발자 라이프 2020. 2. 16. 17:50반응형
들어가며
이번 글은 X.500과 LDAP이 무엇인지 알아봅니다.
디렉터리 액세스 프로토콜(Directory Access Protocol; DAP)
X.500과 LDAP은 디렉터리에 저장된 데이터에 접근하기 위한 프로토콜입니다. 즉, 디렉터리 형태로 데이터가 저장된 서버와 그 것에 접근하는 클라이언트 간의 통신 규약입니다. 클라이언트는 각각의 프로토콜을 이용하여 서버에 저장된 데이터를 조회, 수정, 삭제와 같은 작업을 할 수 있습니다.
계층적인 형태인 디렉토리 구조는 간단하고 확장이 용이하며, 조직적인 관리가 가능하므로 인증과 같은 다양한 곳에서 사용됩니다.
X.500 이란?
X.500은 OSI 레이어를 기반으로 구성된 프로토콜입니다. 이 프로토콜의 클라이언트는 DUA(Directory User Agent), 서버는 DSA(Directory System Agent)로 정의됩니다. X.500은 DUA-DSA 사이의 Directory Access Protocol(DAP)와 DSA 사이의 Directory System Protocol(DSP)로 구성됩니다. 이렇게 구성된 이유는 X.500 프로토콜이 분산 환경을 고려했기 때문입니다. 즉, 데이터를 저장하고 있는 DSA가 여러 개로 구성되고, DSA 간 상호 통신을 통해 데이터에 대한 작업을 처리합니다.
X.500의 데이터는 트리 구조로 저장됩니다. 그리고 각 데이터는 데이터베이스의 레코드-필드 개념과 유사한 Object와 Attribute로 구성되며, Object는 숫자로 구성된 고유한 Object Id(OID)로 식별됩니다.
X.500을 기반으로한 클라이언트와 서버 간 통신은 과정은 다음과 같습니다.
- 클라이언트가 서버로 네트워크 연결과 서버에 대한 접근 요청을 합니다. (Binding)
- 서버는 클라이언트에 대한 인증을 처리하고 Binding 작업을 종료합니다.
- 클라이언트는 서버에 데이터 조회와 같은 서비스를 요청합니다.
- 서버는 요청된 서비스를 처리하고 응답합니다. 이 과정 중 요청된 서버에 데이터가 없다면 DSP를 통해 다른 서버와 통신하고, 요청된 서비스를 응답합니다.
- 클라이언트는 서버의 응답을 수신하고 연결을 종료합니다. (Unbinding)
LDAP 이란?
LDAP은 Lightweight Directory Access Protocol로, 기존 X.500 프로토콜의 클라이언트 부분을 개선하기 위해 고안되었습니다. 즉, LDAP와 X.500은 개념적으로 유사한 구조를 가집니다. 다만, 몇가지 차이점은 다음과 같습니다.
- LDAP은 OSI 네트워크를 기반한 X.500과 달리 TCP/IP 네트워크를 기반으로 구성되었습니다. 따라서, 더욱 경량화된 구성이 가능합니다.
- LDAP 서버에 저장되는 데이터 구조는 X.500과 마찬가지로 트리 형태, Object와 Attribute로 구성됩니다. 다만, Object 식별자가 숫자 타입이 아닌 문자열 타입입니다. 이 식별자는 DN(Distringuish Name)이라고 정의됩니다.
- LDAP의 서버는 독립적이고 오직 클라이언트와 통신합니다. 즉, X.500의 DSP가 없고, 클라이언트가 요청하는 정보가 서버에 존재하지 않으면 해당 정보가 저장된 다른 서버에 대한 URL로 응답합니다. 이로 인해, LDAP은 요청에 대한 범위가 한정됩니다.
- X.509 프로토콜로 보안 구성을 하는 X.500과 달리 SASL(Simple Authentication and Security Layer)로 보안 구성이 가능합니다. 따라서, 더욱 유연한 보안 구성이 가능합니다.
LDAP은 LDAP Data Interchange Format(LDIF) 구조로 디렉토리 콘텐츠(데이터)를 표현합니다. 즉, LDIF는 데이터 액세스에 대한 작업이 요청될 때, 해당 데이터를 나타내는 문자열의 구조입니다. LDIF는 다음의 필드들로 구성됩니다.
- dc (Domain Component) : 도메인을 나타내기 위한 속성입니다. 도메인 `www.mydomain.com`은 `DC=www,DC=mydomain,DC=com`으로 표현할 수 있습니다.
- ou (Organization Unit) : 그룹, 조직을 나타내기 위한 속성입니다. 예를 들어, 사람이 하나 이상의 그룹에 포함되어 있다면 `OU=Programmer,OU=Manager`와 같이 표현할 수 있습니다.
- cn (Common Name) : 오브젝트를 나타내는 이름 속성입니다. 만약 사람에 관한 오브젝트라면 사람의 이름이 CN으로 표현될 수 있습니다.
마무리
이번 글을 통해서 디렉토리 형태로 데이터를 저장하고, 액세스 하기 위해 범용적으로 사용되는 프로토콜, X.500과 LDAP에 대해 살펴봤습니다.
참고
반응형