본문 바로가기
infra/ldap

AD (Active Directory) vs LDAP (Lightweight Directory Access Protocol)

by moonsiri 2022. 8. 4.
728x90
반응형

OpenLdap, MS AD를 사용하다 보니 Ldap이라고 통칭해서 부를 때도 있고 AD라고 부를 때도 있어서 두 명칭의 차이를 명확하게 살펴보기 위해 포스팅하겠습니다.

 

 

AD (Active Directory)

Active Directory는 Microsoft에서 만든 인증, 그룹 및 사용자 관리, 정책 관리 등의 모든 기능을 제공하는 디렉터리 서비스 구현입니다.

 

AD에는 다음과 같은 보안 기능이 포함되어 있습니다.

  • 인증 - 사용자들은 네트워크 리소스에 액세스 하기 전 관련 자격 증명을 제공해야 합니다.
  • 보안 그룹 - IT 관리자가 사용자를 그룹화한 다음 관리를 최소화할 목적으로 사용자 그룹이 앱에 할당됩니다.
  • 그룹 정책 - AD에는 컴퓨터에 원격으로 액세스 하거나 브라우저 보안 설정을 구성할 사용자를 정의하는 정책이 무수히 많습니다.

Active Directory의 주요 목적은 Microsoft 기술을 모두 통합하여 사용자가 리소스에 손쉽게 액세스 하고, 관리자가 액세스를 안전하게 정의할 수 있도록 지원하는 것입니다.

그래서 AD는 Single-SignOn(SSO)을 제공하며 사무실 및 VPN 상에서 적용하기 좋습니다.

 

 

LDAP (Lightweight Directory Access Protocol)

LDAP은 디렉토리 서비스 인증에 사용되는 개방형 통신 프로토콜입니다.

AD는 컴퓨터를 포함해 직원 수가 수천 명에 이르는 기업을 대상으로 설계되었습니다. 반면에 LDAP는 수백만 건에 달하는 모바일 네트워크 구독자의 인증 요청을 처리해야 하는 이동통신 사업자의 애플리케이션 프로토콜로 설계되었습니다.

 

LDAP 프로토콜은 기본적으로 다음과 관련이 있습니다.

  • 디렉터리 구조 - 각 디렉터리 항목마다 속성이 있기 때문에 쿼리를 사용할 때는 DN을 통해야 액세스 할 수 있습니다.
  • 데이터 추가, 수정, 읽기 - LDAP은 빠른 데이터 검색 및 읽어오기에 최적화되어 있습니다.
  • 인증 - LDAP에서는 서비스로 "바인딩"됩니다. 이때 인증은 단순한 사용자 이름과 비밀번호, 클라이언트 인증서 또는 Kerberos 토큰이 될 수 있습니다.
  • 검색 - 검색 기능은 LDAP이 두각을 나타내는 영역 중 하나입니다. 다시 말하지만 LDAP 기반 서버는 일반적으로 대량의 쿼리에 맞게 설계되며, 이러한 쿼리들은 일반적으로 데이터 세트에 대한 검색인 경우가 많습니다.

 

 

AD vs LDAP

LDAP는 다양한 디렉터리 서비스 및 액세스 관리 설루션의 기반을 구성하는 프로토콜입니다.

즉, LDAP는 디렉터리 서비스 프로토콜이고 Active Directory의 디렉터리 액세스는 LDAP에 의해 실행됩니다. AD는 이러한 예 중 하나일 뿐이지만 LDAP은 OpenLDAP과 같은 많은 디렉터리 서비스를 지원합니다.

간단히 말하자면 LDAP은 AD의 기반이 되는 프로토콜입니다.

 

 

LDAP 구조

LDAP DIT(Directory Information Tree)는 다음과 같은 몇 가지 컴포넌트로 구성됩니다.

[출처] https://www.windows-active-directory.com/active-directory-ldap.html

 

  • Entries
    • DIT를 구성하는 오브젝트는 엔트리라고 불리며 계층 내에 특정 위치가 있습니다. 오브젝트에는 Container objects, Leaf objects와 같이 두 가지 유형이 있습니다.
    • 각 엔트리에는 3가지 컴포넌트가 있습니다.
      • DN (Distinguished Name)
        • DN은 각 엔트리의 일의 식별자로서 기능합니다. DN 값은 트리 내 객체의 위치입니다. DIT에서의 엔트리와 그 위치를 식별합니다. DN은 "cn=Tom, ou=people, o=zoho, c=india"과 같이 attribute-value 쌍으로 구성되고, 해당 예시는 인도 조호 회사의 임직원 Tom의 계정 경로를 나타낸 것입니다.
      • Attributes
        • 속성은 객체를 설명하는 데 사용되며 key-value 쌍으로 정의됩니다. 속성의 표준은 일반적으로 사용되는 LDAP 사양에 따라 정의됩니다. 속성 컬렉션은 엔트리를 정의하는 데 사용됩니다. 속성은 스키마로 정의됩니다. 속성 이름은 일반 이름의 경우 "cn", 도메인 구성 요소의 경우 "dc", 조직 단위의 경우 "ou", 전자 메일 주소의 경우 "mail"과 같은 문자열 형식입니다.
        • DN은 RDN (Relative Distinguished Name)이라고 불리는 요소로 구성됩니다. RDN은 LDAP 디렉터리 엔트리의 속성에서 파생됩니다. 이 값은 <value name> = <value> 형식입니다.
      • Object Classes
        • 오브젝트 클래스를 구성하는 속성 컬렉션. Associated attributes는 설명하기 쉽도록 그룹화되어 있습니다. 예를 들어 objectClass: person과 같이 입력합니다. 오브젝트 클래스는 구조 클래스와 보조 클래스의 두 가지 유형으로 구성됩니다.
        • Schema
          • 스키마는 objectClass 정의 및 속성 정의를 사용하여 구성됩니다. 이것은 DIT의 구조와 서버가 보유할 수 있는 정보의 종류를 정의하는 규칙입니다. 동일한 DIT에 대해 다양한 스키마가 존재할 수 있습니다.

 

 

다음 게시물에서는 Spring에서 Ldap을 사용하는 법을 알아보겠습니다.

 

 

[Reference]

https://www.okta.com/kr/identity-101/ldap-vs-active-directory/

https://www.windows-active-directory.com/active-directory-ldap.html

 

728x90
반응형

댓글