내 잡다한 노트

LDAP ( Lightweight Directory Access Protocol ) 본문

DevOps/리눅스

LDAP ( Lightweight Directory Access Protocol )

peanutwalnut 2024. 11. 15. 21:16

회사 서버들 프로세스를 정리하다가 LDAP 서버가 있어서 그것에 대해 공부해보기로 마음을 먹어 공부 겸 글을 쓰게 됐다.

IT 인프라에서 중요한 역할을 하는 디렉토리 프로토콜로, 사용자 인증, 권한 관리, 자원 관리 등에 널리 사용된다.

LDAP

네트워크 상에서 디렉토리 정보를 조회하고 수정하기 위한 표준 프로토콜이다.
조직 내의 사용자, 그룹, 장비, 애플리케이션 등의 정보를 중앙에서 관리하고 빠르게 검색할 수 있도록 도와준다.

여기서, 디렉토리라는게 일반적인 파일 시스템의 디렉토리와는 다른 개념이다.

LDAP에서의 디렉토리는 전화번호부나 연락처 목록과 유사한 개념으로, 다양한 attribute를 가진 object들을 계층적으로 관리하는 데이터베이스이다. 

그래서, 모든 사용자와 자원 정보를 한 곳에서 관리할 수 있다. 

주요 특징

  • 경량성 : 비교적 단순하고 효율적인 프로토콜로, 빠른 응답 속도를 제공한다.
  • 표준화 : RFC로 정의돼 호환성이 높음
  • 확장성
  • 보안 : 인증(Authentication)과 암호화(Encryption)를 지원하여 안전한 데이터 관리를 가능하게 한다.

구성 요소

LDAP 디렉토리는 트리 구조로 조직되어 있으며, 다음과 같은 구성 요소로 이루어져 있다.

  1. 디렉토리 정보 트리 ( DIT : Directory Information Tree )
    DIT는 디렉토리 데이터를 계층적으로 구성한 구조이다. 트리는 루트 entry를 시작으로, 여러 하위 엔트리로 확장된다.
    예를 들어, 회사의 디렉토리 구조는 다음과 같이 구성될 수 있다.
    dc=example,dc=com
    ├── ou=People
    │ ├── uid=john.doe
    │ └── uid=jane.smith
    ├── ou=Groups
    │ ├── cn=developers
    │ └── cn=designers
    └── ou=Devicesdc가 Domain Component , ou가 Organizational Unit, uid가 User ID, cn이 Common Name 이다.
    1. 스키마
      디렉토리에 저장될 수 있는 데이터의 구조와 규칙을 정의한다.
      예를 들어, 사용자 엔트리는 uid, cn, mail 등의 속성을 가질 수 있다.
    2. 엔트리
      디렉토리 내의 개별 데이터 항목을 의미한다. 각 엔트리는 고유한 DN (Distinguished Name)을 가지며, 하나 이상의 속성으로 구성 된다. 예시로 사용자 엔트리.
    3. dn: uid=john.doe,ou=People,dc=example,dc=com
      objectClass: inetOrgPerson
      uid: john.doe
      cn: John Doe
      sn: Doe
      mail: john.doe@example.com
  2. ├── cn=printer1 └── cn=router1

동작 원리

클라이언트-서버 모델을 기반으로 동작한다. 클라이언트는 디렉토리 서버에 요청을 보내고, 서버는 이를 처리하여 응답을 반환한다.

  1. 연결(Connection)
    클라이언트는 LDAP 서버에 연결을 설정합니다. 이 과정에서 인증(Authentication)이 필요할 수 있습니다. 인증 방법으로는 간단한 바인드(Simple Bind)부터 SASL(Simple Authentication and Security Layer)을 이용한 다양한 인증 방식이 있습니다.
  2. 검색(Search)
    클라이언트는 특정 기준에 맞는 엔트리를 검색할 수 있습니다. 검색 요청은 베이스 DN, 검색 범위(scope), 필터(filter) 등을 포함합니다. 예를 들어, 특정 이메일 주소를 가진 사용자를 검색할 수 있습니다.
  3. 수정(Modify)
    클라이언트는 디렉토리 내의 엔트리를 추가, 수정, 삭제할 수 있습니다. 이는 관리자가 사용자 정보를 업데이트하거나 새로운 리소스를 추가할 때 사용됩니다.
  4. 인증(Authentication)
    LDAP은 중앙 인증 서버로도 사용될 수 있습니다. 사용자가 로그인할 때 LDAP 서버를 통해 인증을 수행하여 사용자 자격 증명을 확인합니다.

 

요약하면 LDAP 디렉토리 서버는 파일을 공유하는 것이 아니라 정보(데이터)를 중앙에서 관리하고 제공하는 역할을 합니다. 이를 통해 다양한 클라이언트가 동일한 정보를 참조하고 사용할 수 있게 되는 것입니다.