식별 이름에서 사용자 인증까지

조직 운영에 있어 사용자 관리, 정보 저장 및 인증은 핵심적인 요소이며, 이러한 기능을 수행하는 데 자주 활용되는 기술 중 하나가 LDAP(Lightweight Directory Access Protocol)입니다.

하지만 많은 사용자가 LDAP를 Active Directory와 혼동하는 경우가 있습니다.

본 문서에서는 LDAP의 기본 개념과 목적, 작동 원리에 대해 자세히 알아보겠습니다. 또한 LDAP의 주요 특징, 디렉토리 구조, 데이터 구성 방식을 살펴보고, 디렉토리 서비스 및 사용자 인증 관리에서 LDAP가 얼마나 중요한 역할을 하는지 논의하겠습니다.

LDAP란 무엇인가?

LDAP는 Lightweight Directory Access Protocol의 약자로, 온프레미스 디렉토리 환경에서 사용자 인증을 안전하게 관리하기 위한 개방형 프로토콜입니다. 다양한 벤더에서 제공하는 솔루션과 호환되는 애플리케이션 프로토콜이기 때문에 인터넷을 통한 분산 디렉토리 정보 서비스에서 광범위하게 사용됩니다.

LDAP는 응용 프로그램이 사용자 정보를 효율적으로 조회할 수 있게 해줍니다. 이메일 서비스, 사용자 인증, 라이선스 관리, 사용자 관리 등 다양한 IT 서비스에서 유용하게 사용됩니다.

하지만 비즈니스 환경에서 IT 자산을 체계화하고 접근 및 보호하는 데 사용되는 서비스 및 데이터베이스 모음인 Active Directory 서비스와는 구별해야 합니다. 디렉토리 서비스는 조직이 정적이고 설명적이며 중요한 데이터를 저장하는 데 사용됩니다.

기술적인 관점에서 볼 때, LDAP는 디렉토리 서비스 내에서 데이터를 표현하는 전반적인 과정을 의미합니다. 사용자가 미리 정의된 방식으로 데이터에 접근할 수 있도록 지원하며, LDAP를 통해 조직은 디렉토리 서비스 내에서 데이터 항목을 생성, 관리할 수 있습니다.

Active Directory 환경에서 LDAP는 다양한 기본 요소에 따라 항목이 구성되는 방식을 규정합니다.

요약하자면, LDAP는 다음과 같습니다.

  • 통신 프로토콜
  • 벤더에 종속되지 않는 개방형 애플리케이션 프로토콜
  • 데이터를 저장하고 쉽게 검색할 수 있도록 정렬하는 소프트웨어 프로토콜
  • 온프레미스 디렉토리 환경에서 작동
  • 정적이고 설명적이며 중요한 데이터를 포함하는 Active Directory와 함께 작동
  • 2003년에 처음 발표된 오래된 기술

LDAP의 목적은 무엇인가?

LDAP의 주요 목적은 다음 세 가지로 요약할 수 있습니다.

  • LDAP/Active Directory에 데이터 저장
  • 해당 디렉토리에 대한 사용자 접근 인증
  • 애플리케이션이 디렉토리 서비스에서 데이터를 주고받는 데 적합한 통신 언어 제공

즉, LDAP는 인증 및 권한 부여를 가능하게 할 뿐만 아니라 검색이 용이한 방식으로 데이터를 체계화하는 데 필요한 통신 프로토콜입니다. 조직은 LDAP를 사용하여 사용자 자격 증명을 포함한 주요 사용자 및 IT 자산 정보를 저장하고, 관리자는 접근 규칙을 설정하여 안전한 접근을 보장할 수 있습니다.

LDAP는 어떻게 작동하는가?

LDAP의 핵심은 클라이언트-서버 아키텍처입니다.

LDAP 인증 과정은 클라이언트-서버 모델을 따릅니다. 이 과정에 관여하는 주요 요소는 다음과 같습니다.

  • DSA(디렉토리 시스템 에이전트): 특정 네트워크에서 LDAP를 실행하는 서버
  • DN(고유 이름): DIT(디렉토리 정보 트리)를 탐색하기 위한 경로 정보
  • DUA(디렉토리 사용자 에이전트): DSA에 클라이언트로서 접속하는 데 사용
  • RDN(상대 고유 이름): DN 경로의 각 구성 요소 지정
  • API(애플리케이션 프로그래밍 인터페이스): 서비스와 제품 간의 통신을 가능하게 하는 인터페이스

LDAP 인증 프로세스에서 사용자가 이메일 프로그램과 같은 LDAP 클라이언트 프로그램을 시작하면 관리자는 LDAP 클라이언트가 디렉토리 서비스와 상호 작용하는 방식을 구성할 수 있습니다. 예를 들어, 사용 가능한 두 가지 사용자 인증 방법 중 하나를 사용할 수 있습니다.

로그인 시도 시, DN 인증이 요청됩니다. 프로세스가 시작되면 LDAP는 DN을 사용하여 데이터베이스에서 일치하는 레코드를 검색하는 DSA(Directory System Agent)에 클라이언트를 할당합니다.

DN 내의 RDN(Relative Distinguished Name)은 DIT(디렉토리 정보 트리)를 통한 검색 프로세스의 모든 단계에서 사용되므로 LDAP 검색에서 중요한 역할을 합니다.

검색이 성공적으로 완료되면, 일치하는 UID와 사용자 비밀번호를 비교하여 사용자를 인증합니다. 만약 일치하지 않으면 인증에 실패합니다.

마지막으로, 클라이언트는 LDAP 서버에서 바인드를 해제합니다. 인증이 완료되면, 인증된 사용자는 API를 통해 서비스와 통신할 수 있으며, 저장된 모든 정보를 열람할 수 있습니다. 여기서의 제약은 권한 부여 규칙에 따라 결정됩니다.

LDAP 작동 방식에 대한 더 자세한 정보는 Greg Vaneder와 Mark Wahl이 2003년에 발표한 문서를 참고하십시오. 또한 LDAP 검색 작동 방식에 대한 자세한 내용은 The LDAP Search Operation 문서를 참조하십시오.

LDAP의 주요 특징

LDAP의 주요 특징은 다음과 같이 요약할 수 있습니다.

  • 사용자 세션 인증: Active Directory와 같은 데이터베이스 서비스에 대한 사용자 세션을 인증하는 데 사용 가능합니다.
  • 다양한 작업 유형: 디렉토리 서버 데이터베이스에 다음과 같은 다양한 작업을 수행할 수 있습니다.
    • 바인딩 세션
    • LDAP 항목 삭제
    • 기존 항목 수정
    • 항목 검색 및 비교
    • 포기 요청
    • 바인딩 해제 작업
  • 경량: LDAP는 가벼운 프로토콜이므로 네트워크 및 시스템 자원에 부하가 적습니다.
  • 벤더 및 프로토콜 독립성: LDAP는 벤더 및 프로토콜에 종속되지 않습니다. 즉, 모든 벤더/솔루션/프로토콜과 함께 사용할 수 있습니다. 예를 들어 TCP/IP 또는 X.25를 통해 LDAP를 사용할 수 있습니다. 최신 LDAP 버전인 LDAPv3는 주로 TCP/IP를 사용합니다.
  • 디렉토리 구조: LDAP는 디렉토리-트리 구조를 사용하여 디렉토리 데이터베이스 내의 자산을 저장하고 접근합니다. 부모-자식 관계를 통해 검색 속도를 향상시킵니다.
  • 표준화: LDAP는 IETF(Internet Engineering Task Force)에서 표준화되었습니다. 이러한 표준화는 LDAP가 여러 벤더의 제품과 호환되도록 보장합니다.
  • 보안: LDAP는 TCP/IP 계층에서 TLS를 사용하여 보안을 유지합니다. 또한 SSL(Secure Socket)을 사용하여 정보의 암호화, 해독 및 전송을 안전하게 처리하여 무결성과 기밀성을 보장합니다.
  • 복제: LDAP는 여러 서버 간의 복제를 지원하여 데이터 중복성을 보장하고 장애 발생 시 데이터 가용성을 확보합니다. 동기화 복제 엔진인 Syncrepl을 사용합니다.

LDAP 디렉토리 구조

LDAP 디렉토리는 체계적이고 명확한 구조를 가지고 있어, 데이터에 쉽게 접근하고 검색 효율성을 높입니다.

LDAP는 트리 구조를 따르기 때문에 계층적인 특징을 가지며, 주로 DIT(디렉토리 정보 트리)로 표현됩니다.

LDAP 디렉토리 구조는 여러 단계로 구성되어 있으며, 다음과 같은 주요 단계를 포함합니다.

  • 루트 디렉토리
  • 조직

보시는 바와 같이, LDAP 디렉토리는 트리 구조를 가집니다. “루트” 디렉토리는 최상위 항목으로, 디렉토리 구조의 모든 하위 항목을 포함합니다. 그 아래에는 국가가 표시되고, 그 다음에는 조직 단위로 분기됩니다. 그 아래에는 OU(조직 단위)가 있으며, 마지막으로 개인 및 그룹으로 분기됩니다.

LDAP 디렉토리 구조를 좀 더 쉽게 이해하기 위해 다음 예시를 살펴보겠습니다.

 - Root (최상위 항목)
   |
   +-- Country: "dc=com" (예: dc=example,dc=com)
         |
         +-- Organization: "dc=example" (예: dc=example)
               |
               +-- Organizational Unit (OU): "ou=Users"
               |      |
               |      +-- User: "cn=Nitish Singh"
               |      |
               |      +-- User: "cn= Oliver Green"
               |
               +-- Organizational Unit (OU): "ou=Groups"
                      |
                      +-- Group: "cn=Admins"
                      |
                      +-- Group: "cn=Users"
		|
		+-- Group: “cn=Superusers”

루트 항목은 도메인 구성 요소 속성을 나타내는 DC로 식별됩니다. 따라서 “dc=com”인 경우 루트 항목은 “com” 도메인으로 식별됩니다.

루트 아래에는 여러 조직 또는 도메인이 존재할 수 있으며, “dc=조직”으로 표시됩니다. 위의 예시에서는 “com” 도메인 아래에 있습니다.

각 조직은 하나 이상의 OU(조직 단위)를 가질 수 있습니다. 관리자는 OU를 논리적으로 세분화하여 구성할 수 있습니다. 예를 들어, OU를 “사용자”, “그룹” 또는 “수퍼유저”로 설정할 수 있습니다.

마지막으로, 각 OU 아래에는 그룹, 장치, 사용자 등 다양한 항목을 나열할 수 있습니다. 이 예시에서는 “사용자” OU 아래에 “Nitish Singh”과 “Oliver Green”이라는 두 개의 항목이 있고, “그룹” OU 아래에 “Admins”, “Users” 및 “Superusers”라는 그룹이 있습니다.

LDAP 디렉토리 구조는 각 항목을 식별하는 데 사용되는 고유 이름(DN)에 크게 의존합니다. DN은 고유한 이름을 포함하며, 상대 고유 이름(RDN)을 검색하는 데 사용됩니다.

LDAP 공통 요소

LDAP 데이터 구성을 이해하려면 LDAP 시스템에서 항목이 구성되는 데 필요한 기본 요소들을 알아야 합니다.

LDAP 데이터의 기본 구성 요소는 다음과 같습니다.

  • 속성
  • 항목
  • 데이터 정보 트리

속성

LDAP에서 속성은 키-값 쌍으로 표현됩니다. 이러한 속성은 LDAP 시스템 내에 데이터를 저장하는 데 사용됩니다. 예를 들어, LDAP 시스템에서 이메일 주소를 저장하려면 “mail” 속성을 사용해야 합니다.

예시: mail: [email protected]

항목

LDAP 시스템 내에서 항목은 속성과 연결되어 의미를 부여합니다. 항목은 관련 속성의 모음으로 생각할 수 있습니다.

예를 들어, LDIF(LDAP Data Interchange Format) 형식으로 표현된 데이터는 다음과 같습니다.

dn: sn=Hogwarts, ou=wizards, dc=WizardingWorld, dc=fiction

objectclass: wizard

sn: Hogwarts

cn: Harry Potter

데이터 정보 트리

데이터 정보 트리(DIT)는 LDAP 시스템 내에서 데이터를 표현하고 접근하는 데 사용됩니다. 대부분의 데이터는 분리되어 있기 때문에 트리를 통해 데이터를 나타내는 것이 효과적입니다. 이는 부모-자식 연결을 가진 파일 시스템과 유사합니다.

LDAP 데이터 구성

이제 LDAP 시스템 내에서 데이터가 어떻게 조직되는지 살펴보겠습니다.

LDAP는 DIT를 활용하여 데이터를 체계화하고 구조화합니다. 새로운 항목이 생성되면 기존 항목의 하위 항목으로 트리 구조에 추가됩니다.

모든 것은 DIT 계층 구조 트리의 최상위에서 시작됩니다. 주로 “dc=com” 또는 “example”과 같은 조직으로 표시되며, 하위 항목들을 관리하는 데 사용됩니다. 도메인 구성 요소를 사용하여 관리를 용이하게 하며, 관리자는 “l=location_name” 또는 “ou=tech, marketing”과 같은 조직 세그먼트를 사용하여 위치를 설정할 수 있습니다.

항목은 OU(조직 단위) objectClass를 사용합니다. 항목이 “ou=” 속성 레이블을 사용할 수 있게 해주므로, DIT 내에서 정보를 쉽게 분류하고 찾을 수 있게 합니다.

또 다른 중요한 개념으로 RDN(상대 식별 이름)이 있습니다. RDN은 DIT 계층 구조 수준에 따라 각 요소의 상대적 이름입니다. 항목에 접근하려면 상위 RDN 값과 함께 해당 항목의 RDN 값을 입력해야 합니다.

이를 통해 하위에서 상위로 이동하는 RDN 값 체인이 생성되어 해당 항목에 대한 경로가 만들어집니다. 이 RDN 값 체인을 “고유 이름(DN)”이라고 합니다.

즉, LDAP가 새로운 자산 또는 정보를 배치할 위치를 정확히 알 수 있도록 항목 생성 시 DN을 지정해야 합니다. 따라서 RDN은 상대 값으로, DN은 절대 경로로 볼 수 있습니다.

LDAP의 중요성

LDAP는 다음과 같은 두 가지 측면에서 중요한 역할을 합니다.

  • 디렉토리 서비스 관리: LDAP 프로토콜은 LDAP 디렉토리 데이터를 저장하고 접근하는 데 필요한 수단을 제공합니다. 앞서 “LDAP 작동 방식 및 데이터 구성 요소” 및 “조직” 섹션에서 논의한 바와 같이 LDAP는 데이터를 관리, 저장, 접근 및 보호하는 데 사용됩니다. 또한 효율적인 정보 검색을 보장하며, 확장성 및 복제 기능을 제공합니다.
  • 사용자 인증: 디렉토리 서비스 관리 외에도 LDAP는 사용자 인증 및 권한 부여에 중요한 역할을 합니다. 연결이 설정되면, 사용자는 관리자가 설정한 접근 규칙에 따라 저장된 자산에 접근할 수 있습니다.

LDAP 대 Active Directory

많은 사람들이 LDAP와 Active Directory를 혼동하지만, 둘 사이에는 분명한 차이가 있습니다. LDAP와 Microsoft의 Active Directory는 긴밀하게 협력하여 조직이 데이터를 안전하게 저장하고 접근할 수 있는 환경을 제공합니다.

LDAP는 프로토콜이며, Active Directory는 조직 데이터를 트리 구조로 저장하는 디렉토리 서비스 제품입니다.

LDAP는 Active Directory와 같은 디렉토리 서버에 접근하기 위한 통신 프로토콜로 사용됩니다.

결론

LDAP는 Active Directory 서비스를 운영하기 위한 핵심 프로토콜입니다. 시스템 및 서버에 부담을 주지 않는 경량 프로토콜이며, 오픈 소스, 벤더 독립적, 표준화된 특성을 가지고 있어 기존 솔루션에 쉽게 통합할 수 있습니다.

이와 함께 Multi-Factor Authentication(MFA)도 함께 고려해볼 수 있습니다.