old/Cyber Security

LDAP(Lightweight Directory Access Protocol)이란

은색거북이 2023. 8. 31. 23:00
반응형

정의

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 함수를 사용하여 검색을 수행하고, 결과를 처리합니다.

반응형