본문 바로가기

old/Cyber Security

LDAP(Lightweight Directory Access Protocol)이란

반응형

정의

LDAP (Lightweight Directory Access Protocol)은 인터넷 프로토콜 스택의 일부로서 디렉터리 서비스를 제공하는 프로토콜입니다.

LDAP 구조

LDAP는 기본적으로 트리구조를 가지고 있으며, 특징적인 조건을 가지고 데이터를 저장합니다. 각 노드를 엔트리라고 부르며, 각 엔트리에는 분류된 정보가 저장됩니다.

엔트리 이름 테이블

LDAP를 이용한 웹싸이트 구조

목적

LDAP은 데이터의 계층적 구조를 사용하여 사용자, 그룹, 장치 등의 정보를 저장하고 검색하기 위한 방법을 제공합니다.

장점

  • 디렉터리 서비스의 계층적 구조로 데이터를 구성하여 효율적인 데이터 검색이 가능합니다.
  • 인증 및 접근 제어에 대한 기능을 제공하여 보안성을 강화할 수 있습니다.
  • 널리 알려진 표준 프로토콜이며, 다양한 플랫폼과 언어에서 지원됩니다.

단점

  • LDAP은 복잡한 설정과 관리가 필요할 수 있습니다.
  • 대용량 데이터를 처리하는 데는 적합하지 않을 수 있습니다.
  • 삽입, 수정보다는 검색, 저장에 특화되어 있습니다.

예제

import ldap

# LDAP 서버에 연결
conn = ldap.initialize('ldap://ldap.example.com')

# 바인딩 (인증)
conn.simple_bind_s('username', 'password')

# 검색
base_dn = 'ou=users,dc=example,dc=com'
filter = '(& (cn=john))'
attributes = ['cn', 'email']
result = conn.search_s(base_dn, ldap.SCOPE_SUBTREE, filter, attributes)

# 결과 출력
for dn, entry in result:
    cn = entry['cn'][0].decode('utf-8')
    email = entry['email'][0].decode('utf-8')
    print(f'CN: {cn}, Email: {email}')

# 연결 종료
conn.unbind()

파이썬 코드에서는 ldap 모듈을 사용하여 LDAP 서버와의 연결, 바인딩, 검색, 결과 처리 및 연결 종료를 수행합니다. ldap.initialize 함수를 사용하여 LDAP 서버에 연결하고, conn.simple_bind_s 함수를 사용하여 인증을 수행합니다. 그런 다음 conn.search_s 함수를 사용하여 검색을 수행하고, 결과를 처리합니다.

반응형