LDAP이란 무엇인가요?
(1) LDAP이 무엇인지 소개하기 전에 한 가지를 살펴보겠습니다: "디렉토리 서비스란 무엇인가?" ”
1. 디렉터리 서비스는 필터링 기능이 있는 특성 기반 세부 정보를 담은 특수 데이터베이스입니다.
2. 동적이고 유연하며 쉽게 확장할 수 있습니다.
예를 들어: 인사 조직 및 관리, 전화번호부, 주소록.
(2) 디렉터리 서비스를 이해한 후, LDAP의 도입을 살펴보겠습니다:
LDAP(Light Directory Access Portocol)는 X.500 표준을 기반으로 한 경량 디렉터리 접근 프로토콜입니다.
디렉터리는 쿼리, 탐색, 검색에 최적화된 데이터베이스로, 파일 디렉터리와 유사한 트리 구조로 데이터를 조직합니다.
디렉터리 데이터베이스는 관계형 데이터베이스와 달리 읽기 성능은 우수하지만 쓰기 성능이 낮으며, 트랜잭션 처리나 롤백과 같은 복잡한 기능이 없어 자주 수정된 데이터를 저장하기에 적합하지 않습니다. 그래서 목차는 이름처럼 본질적으로 쿼리에 사용됩니다.
LDAP 디렉터리 서비스는 디렉터리 데이터베이스와 일련의 접근 프로토콜로 구성된 시스템입니다.
(3) 왜 사용해야 하는지
LDAP은 업계에서 널리 인정받는 오픈 인터넷 표준으로, 크로스 플랫폼 인터넷 프로토콜을 지원합니다. 시장 내 제품이나 오픈 소스 커뮤니티의 대부분 제품들이 LDAP 지원을 추가했기 때문에, 이 유형의 시스템은 별도로 맞춤화할 필요가 없고, LDAP을 통해 간단한 설정만 하면 인증과 서버와의 상호작용이 가능합니다. "단순하고 조잡하다"는 방식은 반복적인 개발 및 도킹 비용을 크게 줄일 수 있습니다.
LDAP의 주요 제품:
| | | | | | | | DB2 기반 데이터베이스는 평균 속도를 가집니다. | | | 텍스트 데이터베이스 기반 저장은 빠르고 널리 사용되지 않습니다. | | | 윈도우 시스템 사용자 기준으로 대용량 데이터 처리 속도는 평균적이지만, 유지보수가 쉽고 생태계가 넓고 관리가 비교적 간단합니다. | | | OpenLDAP는 빠른 오픈 소스 프로젝트이지만 주류 애플리케이션은 아닙니다. |
LDAP의 기본 모델
모든 시스템과 프로토콜은 고유한 모델을 가지고 있으며, LDAP도 예외가 아닙니다. LDAP의 기본 모델을 이해하기 전에 몇 가지 LDAP 디렉터리 트리 개념을 이해해야 합니다:
(1) 카탈로그 트리 개념
1. 디렉터리 트리: 디렉터리 서비스 시스템에서는 전체 디렉터리 정보 집합을 디렉터리 정보 트리로 표현할 수 있으며, 트리 내 각 노드는 하나의 항목입니다.
2. 항목: 각 항목은 기록이며, 각 항목은 고유한 구별 가능한 이름(DN)을 가집니다.
3. 객체 클래스: 엔터티 타입에 대응하는 속성 집합으로, 객체 클래스는 상속될 수 있어 부모 클래스의 필수 속성도 상속됩니다.
4. 속성: 항목의 한 측면 정보를 설명하며, 속성은 속성 유형과 하나 이상의 속성 값으로 구성되며, 속성은 필수 속성과 비필수 속성을 가집니다.
(2) DC, UID, OU, CN, SN, DN, RDN
| | | | | 도메인 이름 부분은 완전한 도메인 이름 형태로 여러 부분으로 나뉘는데, 예를 example.com 들어 도메인 이름은 dc=example, dc=com(기록의 위치)이 됩니다. | | | 사용자 ID songtao.xu (기록의 ID) | | | 조직 단위, 조직 단위는 "OA 그룹"(기록이 속한 조직)과 같은 다양한 객체(다른 조직 단위 포함)를 포함할 수 있습니다 | | | "토마스 요한손"(레코드 이름)과 같은 공개 이름들 | | | | | | "uid=Songtao.XU,ou=OA 그룹, DC=example, DC=com", 기록의 위치(고유) | | | 상대 구별은 파일 시스템의 상대 경로와 유사하며, 디렉터리 트리 구조의 일부로, "uid=tom" 또는 "cn= Thomas Johansson"과 같이 관련이 없습니다 |
OpenLDAP 소개
LDAP는 경량 디렉터리 접근 프로토콜(LDAP)으로, 오픈 소스 중앙집중식 계정 관리 아키텍처를 구현한 것으로, 다양한 시스템 버전을 지원하며 대부분의 인터넷 기업에서 채택되고 있습니다.
LDAP는 데이터 읽기, 탐색, 검색에 좋은 영향을 미치는 특수 데이터베이스 시스템인 디렉터리 서비스의 정보 서비스를 제공하고 구현합니다. 디렉터리 서비스는 일반적으로 속성에 기반한 설명 정보를 담고 정교한 필터링 기능을 지원하는 데 사용되지만, OpenLDAP 디렉터리 서비스는 범용 데이터베이스의 대규모 업데이트 작업에 필요한 복잡한 트랜잭션 관리나 롤백 정책을 지원하지 않습니다.
LDAP에는 X.500과 LDAP라는 두 가지 표준이 있습니다. OpenLDAP은 X.500 표준을 기반으로 하며, X.500의 복잡한 기능을 제거하고 자체 필요에 따라 추가 확장으로 맞춤화할 수 있지만, X.500과는 차이점도 있습니다. 예를 들어 OpenLDAP는 TCP/IP 프로토콜을 지원하는 등 현재 인터넷에서 인터넷에 접속하는 프로토콜은 TCP/IP입니다.
OpenLDAP는 더 단순하고 일반적인 TCP/IP 또는 기타 신뢰할 수 있는 전송 프로토콜 계층에서 직접 실행될 수 있어 OSI 세션 및 프레젠테이션 계층의 오버헤드를 피하고, 연결 구축과 패킷 처리를 더 간단하고 빠르게 하여 인터넷 및 기업용 네트워크 애플리케이션에 이상적입니다.
OpenLDAP 디렉터리의 정보는 트리 형태의 계층 구조(DNS와 유사)로 저장되며, 최상위 계층은 "기본 DN"이라고 불립니다. 예를 들어 "dc=mydomain, dc=org" 또는 "o=mydomain.org"와 같은 식으로, 전자는 더 유연하며 Windows AD에서도 사용됩니다. 루트 디렉터리 아래에는 많은 파일과 디렉터리가 있으며, 이러한 방대한 데이터를 논리적으로 분리하기 위해 OpenLDAP는 다른 디렉터리 서비스 프로토콜과 마찬가지로 OU(조직 단위)를 사용합니다. 이는 부서 등 내부 회사 조직을 표현하는 데 사용될 수 있으며, 장비, 인력 등도 표현할 수 있습니다. 동시에 OU는 더 상세한 분류를 나타내는 서브-OU도 가질 수 있습니다.
OpenLDAP의 각 레코드는 다른 레코드와 구별되는 고유한 이름인 DN(구별 이름)을 가지고 있으며, "잎"의 부분은 RDN(사용자 입력의 상대 식별자)이라고 불립니다. 예를 들어, dn에서 cn은 cn=tom, ou=동물, dc=ilanni, dc=com은 RDN이며, RDN은 OU 내에서 고유해야 합니다.
기본적으로 OpenLDAP는 백엔드 데이터베이스로 Berkeley DB를 사용하며, Berkeley DB 데이터베이스는 주로 키-값 쌍과 같은 해시된 데이터 타입 형태로 데이터를 저장합니다.
BerkeleyDB는 쿼리와 읽기에 최적화된 특별한 유형의 데이터베이스로, 주로 검색, 탐색, 쿼리 작업 업데이트에 사용되며, 일반적으로 데이터를 한 번에 쓰고 여러 번 쿼리 및 검색하는 데 좋은 효과를 냅니다. BerkeleyDB는 트랜잭션 데이터베이스(MySQL, MariDB, Oracle 등)가 지원하는 높은 동시성 처리량과 복잡한 트랜잭션 연산을 지원하지 않습니다.
|