OpenLDAP

OpenLDAP
OpenLDAP
The OpenLDAP logo
개발자OpenLDAP 프로젝트
초기 릴리즈1998년 8월 26일, 23년 전(1998-08-26)[1]
안정된 릴리스
2.6.3 / 2022-07-14
프리뷰 릴리즈
2.99.10[2] / 2022년 2월 25일
저장소
기입처C
운영 체제조금도
플랫폼크로스 플랫폼
유형LDAP 디렉토리 서비스
면허증.OpenLDAP 퍼블릭[3] 라이선스
웹 사이트www.openldap.org Edit this on Wikidata

OpenLDAP은 OpenLDAP 프로젝트에서 개발한 Lightweight Directory Access Protocol(LDAP)의 무료 오픈 소스 구현입니다.OpenLDAP Public [4]License라는 자체 BSD 스타일 라이선스로 출시됩니다.

LDAP는 플랫폼에 의존하지 않는 프로토콜입니다.일반적인 Linux 배포에는 OpenLDAP 소프트웨어 for LDAP 지원이 포함되어 있습니다. 소프트웨어는 AIX, Android, HP-UX, macOS, Solaris, Microsoft Windows(NT 및 파생 모델, 2000, XP, Vista, Windows 7 등) 및 z/OS에서도 실행됩니다.

역사

OpenLDAP 프로젝트는[5] Kurt Zeilenga에 [6]의해 1998년에 시작되었습니다.이 프로젝트는 1996년 최종 릴리스될 때까지 장기간에 걸친 프로젝트가 LDAP 프로토콜의 개발과 진화를 지원했던 미시간 대학의 LDAP 참조 소스를 복제하는 것으로 시작되었습니다.

2015년 5월 현재 OpenLDAP 프로젝트에는 4개의 핵심 팀원이 있습니다.하워드 추(최고건축가),[7] 퀘나 깁슨 마운트, 홀바드 후루세, 커트 자이렌가.Ondrej Kuznik, Luke Howard, Ryan Tandy, 그리고 Gavin Henry를 포함한 수많은 중요하고 적극적인 기여자들이 있습니다.과거 팀의 핵심 멤버로는 피에란젤로 마사라티가 [8]있다.

구성 요소들

OpenLDAP에는 4가지 주요 컴포넌트가 있습니다.

  • slapd: 스탠드아론의 LDAP 데몬 및 관련 모듈 및 도구.[9]
  • lloadd - 스탠드아론 LDAP 로드밸런싱 프록시[9] 서버
  • LDAP 프로토콜ASN.1 Basic Encoding Rules(BER;[9] 기본 인코딩 규칙) 구현 라이브러리
  • 클라이언트 소프트웨어: ldapsearch, ldapadd, ldapdelete[9]

또한 OpenLDAP 프로젝트에는 다음과 같은 여러 서브프로젝트가 있습니다.

  • JLDAP – Java용 LDAP[9] 클래스 라이브러리
  • JDBC-LDAP – Java JDBC – LDAP 브리지[9] 드라이버
  • ldapc++:C++[9]용 LDAP 클래스 라이브러리
  • LMDB – 메모리 매핑 데이터베이스[9] 라이브러리

백엔드

전체적인 개념

지금까지 OpenLDAP 서버(slapd, Standalone LDAP Daemon) 아키텍처는 네트워크 액세스 및 프로토콜 처리를 처리하는 프런트엔드와 데이터 스토리지를 엄격하게 다루는 백엔드로 분할되었습니다.이 분할 설계는 1996년에 작성된[10] 원래 미시간 대학 코드의 특징으로 이후의 모든 OpenLDAP 릴리즈에서 수행되었습니다.원래 코드에는 1개의 메인 데이터베이스 백엔드와 2개의 실험/데모 백엔드가 포함되어 있었습니다.이 아키텍처는 모듈러형이며 기존 데이터베이스뿐만 아니라 다른 기술과의 인터페이스에도 다양한 백엔드를 사용할 수 있습니다.

주의: 이전 (1.x) 릴리즈에서는 "백엔드"와 "데이터베이스"라는 용어가 서로 호환되게 사용되었습니다.정확히 말하면, "백엔드"는 스토리지 인터페이스의 클래스이고, "데이터베이스"는 백엔드의 인스턴스입니다.slapd 서버는 한 번에 임의로 많은 백엔드를 사용할 수 있으며,[11] 동시에 각 백엔드의 임의의 인스턴스(임의적으로 많은 데이터베이스)를 활성화할 수 있습니다.

사용 가능한 백엔드

현재 OpenLDAP 디스트리뷰션에서는 17개의 다른 백엔드가 제공되며 다양한 서드파티가 다른 백엔드를 독립적으로 유지하는 것으로 알려져 있습니다.표준 백엔드는 다음 3가지 카테고리로 느슨하게 구성되어 있습니다.

  • 데이터 스토리지 백엔드– 실제로 데이터를 저장합니다.
    • back-bdb: OpenLDAP의 첫 번째 트랜잭션 백엔드.버클리 DB를 기반으로 구축되었으며 OpenLDAP 2.5에서 [12]삭제되었습니다.
    • back-hdb : OpenLDAP 2.5에서 [13]삭제된 완전 계층형 서브트리 이름 변경을 지원하는 back-bdb의 변형.
    • back-ldif: 플레인텍스트 LDIF 파일에[11] 빌드
    • back-mdb: Open을 기반으로 구축된 트랜잭션 백엔드LDAP 라이트닝 메모리데이터베이스(LMDB)[11]
    • back-ndb: OpenLDAP 2.[14]6에서 제거된 MySQL의 NDB 클러스터 엔진을 기반으로 구축된 트랜잭션 백엔드.
    • Back-wiredTiger: OpenLDAP 2.5에서 [11]도입된 WiredTiger를 기반으로 구축된 실험적인 트랜잭션 백엔드.
  • 프록시 백엔드– 다른 데이터 스토리지 시스템에 대한 게이트웨이 역할을 합니다.
    • back-asyncmeta : OpenLDAP 2.5에서 [11]도입된 메타 디렉토리 기능을 갖춘 비동기 프록시.
    • back-ldap: 다른 LDAP[11] 서버에 대한 단순한 프록시
    • 백태그: 메타 디렉토리[11] 기능을 가진 프록시
    • back-passwd: UNIX 시스템의 패스워드와 그룹[11] 데이터를 사용합니다.
    • 백엔드: 내부적으로 다른 slapd[11] 백엔드로 리다이렉트
    • back-sql: OpenLDAP [11]2.5에서는 사용되지 않는 임의의 SQL 데이터베이스와 통신합니다.
  • 동적 백엔드 – 데이터를 즉시 생성합니다.
    • back-config: LDAP를 통한[11] slapd 설정
    • back-dnssrv: DNS 경유로 LDAP[11] 서버를 찾습니다.
    • 백 모니터: LDAP를 통한[11] slapd 통계 정보
    • back-null: 싱크/no-op 백엔드, Unix /dev/null과[11] 유사
    • back-perl:LDAP 요구에 응답하여 임의의 perl 모듈을 호출합니다.[11]OpenLDAP 2.5에서는 사용되지 않습니다.
    • back-shell: OpenLDAP 2.5에서 [15]삭제된 LDAP 요청의 셸 스크립트를 호출합니다.
    • back-sock: IPC를 통해 LDAP 요구를[11] 임의의 데몬으로 전송합니다.

이전 OpenLDAP 릴리즈에서 사용 가능한 일부 백엔드는 사용이 중지되었으며, 특히 원래 UMich 코드로부터 상속된 back-ldbm과 back-perl 및 [16]back-shell과 유사한 back-tcl이 있습니다.

다른 백엔드 지원도 곧 폐지될 예정입니다.백ndb는 현재 MySQL과의 파트너십이 Oracle이 MySQL을 인수한 후 종료되었기 때문에 백ndb와 백hdb는 백mdb를 위해 삭제되었습니다.백-mdb는 퍼포먼스, 신뢰성, 관리성 면에서 모두 우수하기 때문입니다.

실제로 -perl 및 -sock과 같은 백엔드는 임의의 프로그래밍 언어에 대한 인터페이스를 가능하게 하므로 커스터마이즈 및 확장을 위한 무제한 기능을 제공합니다.실제로 slapd 서버는 컴팩트하고 정의되어 있으며 유비쿼터스 API를 갖춘 RPC 엔진이 됩니다.

오버레이

전체적인 개념

일반적으로 LDAP 요구는 프런트엔드로 수신되어 디코딩된 후 처리를 위해 백엔드로 전달됩니다.백엔드는 요구가 완료되면 프런트엔드로 결과를 반환하고 프런트엔드는 결과를 LDAP 클라이언트로 전송합니다.오버레이는 프런트엔드와 백엔드 사이에 삽입할 수 있는 코드입니다.따라서 백엔드가 요청을 수신하기 전에 요청을 대행 수신하고 다른 액션을 트리거할 수 있습니다.또한 백엔드가 프런트엔드에 도달하기 전에 백엔드의 결과에 따라 동작할 수도 있습니다.오버레이는 slapd 내부 API에 완전히 액세스할 수 있으므로 프런트엔드 또는 다른 백엔드가 수행할 수 있는 모든 작업을 실행할 수 있습니다.프론트엔드와 백엔드 사이에 모듈 스택을 형성하면서 여러 오버레이를 동시에 사용할 수 있습니다.

오버레이는 완전히 새로운 백엔드를 쓸 필요 없이 데이터베이스의 기능을 확장할 수 있는 간단한 수단을 제공하며, 컴팩트하고 쉽게 디버깅이 가능하며 유지보수가 가능한 모듈에 새로운 기능을 추가할 수 있습니다.OpenLDAP 2.2에서 오버레이 기능이 도입된 이후 OpenLDAP 커뮤니티에서 많은 새로운 오버레이가 제공되었습니다.

사용 가능한 오버레이

현재 핵심 OpenLDAP 배포에는 25개의 오버레이가 있으며, 사용자 기여 코드 섹션에는 24개의 오버레이가 있으며,[17] 그 이상의 오버레이가 포함 승인을 기다리고 있습니다.

기타 모듈

백엔드와 오버레이는 가장 일반적으로 사용되는 모듈 유형입니다.백엔드는 보통 slapd 바이너리에 내장되어 있지만 동적으로 로드된 모듈로 내장되어 있을 수도 있습니다.오버레이는 보통 다이내믹모듈로 내장되어 있습니다.또한 slapd는 새로운 LDAP 구문, 일치 규칙, 제어 및 확장 조작을 구현하고 커스텀액세스 컨트롤 메커니즘과 패스워드 해시 메커니즘을 구현하기 위한 다이내믹모듈을 지원합니다.

OpenLDAP은 Sun 및 Netscape/Fedora/Red Hat에서 사용되는 플러그인 아키텍처인 SLAPI도 지원합니다.현재 릴리스에서는 슬랩드오버레이 내에 슬랩I 프레임워크가 구현되어 있습니다.Sun/Netscape/Fedora/Red Hat용으로 작성된 많은 플러그인이 OpenLDAP과 호환되지만 OpenLDAP 커뮤니티의 극히 일부 멤버만이 SLAPI를 [19]사용합니다.

사용 가능한 모듈

  • 네이티브 slapd 모듈
    • acl/posixgroup – 접근컨트롤에서[18] posixGroup 멤버십 지원
    • comp_match – 컴포넌트 기반[18] 매칭 지원
    • kinit – slapd용[18] Kerberos TGT 유지/갱신
    • passwd/: 추가 비밀번호 해시 메커니즘.현재 Kerberos, Netscape, RADIUSSHA-2[18]포함되어 있습니다.
  • SLAPI 플러그인
    • addrdnvalue: 추가[20] 요청에서 누락된 경우 엔트리에 RDN 값을 추가합니다.

릴리스 요약

OpenLDAP 소프트웨어의 주요 릴리스(기능)는 다음과 같습니다.

  • OpenLDAP 버전 1은 미시간 대학 프로젝트의 마지막 릴리스(릴리스 3.3)를 정리하고 추가 변경을 통합한 것입니다.
  • 2000년 8월에 출시된 OpenLDAP 버전 2.0에는 LDAP 버전 3(LDAPv3) 지원, Internet Protocol 버전 6(IPv6) 지원 및 기타 수많은 확장 기능이 포함되어 있습니다.
  • 2002년 6월에 출시된 OpenLDAP 버전 2.1에는 트랜잭션 데이터베이스 백엔드(Berkeley Database 또는 BDB 기반), Simple Authentication and Security Layer(SASL) 지원 및 Meta, Monitor 및 Virtual Experimal Backend가 포함되어 있습니다.
  • 2003년 12월에 출시된 OpenLDAP 버전 2.2에는 복제 지원(syncrepl), 오버레이 인터페이스 및 다수의 데이터베이스 및 RFC 관련 기능 확장 기능을 갖춘 LDAP "동기" 엔진이 포함되어 있습니다.
  • 2005년 6월에 출시된 OpenLDAP 버전 2.3에는 Configuration 백엔드(동적 구성), RFC 준거 패스워드 정책 소프트웨어를 포함한 추가 오버레이 및 수많은 확장 기능이 포함되어 있습니다.
  • 2007년 10월에 출시된 OpenLDAP 버전 2.4에서는 N-way MultiMaster 레플리케이션, 스탠바이 마스터, 스키마 요소를 즉시 삭제 및 수정할 수 있는 기능 등이 [21]도입되었습니다.
  • 2021년 4월에 출시된 OpenLDAP 버전 2.5에서는 LDAP 로드 밸런싱 프록시 서버, LDAP 트랜잭션 지원, HA 프록시 프로토콜 v2 지원 [22]등이 도입되었습니다.
  • 2021년 10월에 출시된 OpenLDAP 버전 2.6에서는 특정 LDAP 제어 및 LDAP 로드 밸런서 데몬에 대한 확장 조작과의 일관성을 향상시키는 추가 로드 밸런싱 전략과 추가 옵션이 도입되었으며 slapd와 lloadd 모두에[23] 대해 syslog를 경유하지 않고 파일에 직접 로그하는 기능도 도입되었습니다.

레플리케이션

OpenLDAP은 RFC 4533에 [24]규정된 콘텐츠 동기화를 사용한 복제를 지원합니다.이 사양은 이후 "syncrepl"로 불립니다.기본 사양 외에 delta-syncrepl로 알려진 확장 기능도 지원됩니다.멀티 마스터 [25]복제를 지원하기 위해 추가 기능이 구현되었습니다.

동기

기본적인 동기 조작에 대해서는, RFC 4533 [24]에 기재되어 있습니다.프로토콜은 지속적인 변경 데이터베이스가 필요하지 않도록 정의됩니다.변경은 각 엔트리에 저장되어 있는 Change Sequence Number(CSN; 변경 시퀀스 번호) 정보를 통해 암시되며 최근 삭제를 추적하는 데 특히 유용한 옵션 세션 로그를 통해 최적화됩니다.동작의 모델은, 레플리케이션 클라이언트(컨슈머)가 레플리케이션 서버(프로바이더)에 「컨텐츠 동기 검색」을 송신하는 것입니다.소비자는 이 검색에서 쿠키를 제공할 수 있습니다(특히 이전에 공급자와 동기화된 경우).RFC 4533의 OpenLDAP 실장에서는 이 cookie에는 프로바이더로부터 수신한 최신 CSN(contextCSN이라고 불립니다)이 포함되어 있습니다.

다음으로 프로바이더는 검색 결과(또는 아래의 최적화 참조), 현재(변경되지 않은 엔트리) (새로고침 단계의 현재 단계에서만 사용) 또는 추가, 변경(새로고침 단계에서 모든 현재 속성을 가진 추가로 표시) 또는 삭제된(속성 없음) 엔트리를 반환하여 사용자를 동기화시킵니다.nized 스테이트는 cookie를 통해 알려진 내용에 따라 달라집니다.cookie가 존재하지 않거나 소비자가 완전히 동기화되지 않았음을 나타내는 경우, 공급자는 새로 고침 단계에서 각 엔트리에 대해 추가를 보냅니다.이상적인 경우, 응답의 리프레시 스테이지에는, 소량의 추가 세트(변경 현재의 결과를 나타내는 것을 포함한다)와 소비자가 프로바이더와 마지막으로 동기화된 시점 이후에 발생한 삭제만이 포함됩니다.다만, 프로바이더내에 보관 유지되고 있는 세션로그 상태(비영구적)가 한정되어 있기 때문에, 특히 컨슈머가 마지막으로 동기화된 후에 프로바이더내에서 삭제된 것을 암시하는 수단(비효율적)으로서 변경되지 않은 모든 엔트리의 표시를 포함한, 현재의 국면이 필요한 경우가 있습니다.

검색은 refresh 또는 refreshAndPersist 모드로 실행할 수 있습니다.이것은, 어떠한 스테이지가 발생하는지를 나타냅니다.새로 고침 단계는 항상 먼저 발생합니다.새로 고침 단계에서는 present와 delete의 두 가지 단계가 발생할 수 있습니다.여기에서는 삭제 전에 항상 present가 발생합니다.단계는 완료된 단계를 지정하는 동기 정보 응답을 통해 구분됩니다.리프레시 스테이지와 지속 스테이지도, 이러한 동기 정보 응답에 의해서 구분됩니다.표시 또는 삭제되는 엔트리의 그룹을 보다 간결하게 나타내기 위한 옵션의 최적화는 엔트리의 목록을 식별하는 syncIdSet을 포함하는 동기 정보 응답을 사용하는 것입니다.이러한 엔트리의 UUID 값.

현재 단계는 삭제 단계와 다음과 같이 구분됩니다.변경되지 않은 엔트리가 있는 엔트리는 현재 단계에서만 반환할 수 있습니다.엔트리를 삭제하는 엔트리는 삭제 단계에서만 제공할 수 있습니다.어느 단계에서든 add 엔트리(변경된 엔트리의 현재 속성을 모두 나타내는 추가 포함)를 반환할 수 있습니다.현재의 국면 종료시에는, 현재의 국면중에 add 엔트리 또는 현재의 응답으로 식별되지 않은, 소비자가 가지는 각 엔트리는, 암묵적으로 프로바이더내에 존재하지 않기 때문에, 프로바이더와 컨슈머를 동기시키기 위해서, 소비자측에서 삭제될 필요가 있다.

지속 단계가 시작되면 프로바이더는 새로 고침 단계가 완료된 후 변경된 엔트리의 추가, 변경 및 삭제만 나타내는 검색 결과를 보냅니다(변경되지 않은 엔트리의 표시는 존재하지 않습니다).지속 단계는 무기한 계속됩니다. 즉, 검색에는 최종 "완료" 응답이 없습니다.반면 리프레시 모드에서는 리프레시 단계만 발생하고 이러한 단계는 현재 단계 또는 삭제 단계(현재 활성화되어 있는 단계)도 종료하는 완료 응답으로 완료됩니다.

델타 동기 대응

이 프로토콜은 쓰기 액세스(변경사항)의 영구 데이터베이스를 유지하며 각 수정 사항을 정확하게 나타낼 수 있습니다(변경된 속성만 의미).표준 syncrepl 사양에 근거해 구축되어 있기 때문에, 변경은 항상 완전한 엔트리로 송신됩니다.단, delta-syncrepl에서는 전송된 엔트리는 로그 데이터베이스에서 실제로 전송됩니다.로그 데이터베이스에서는 메인 데이터베이스의 각 변경이 로그 엔트리로 기록됩니다.로그 엔트리는 LDAP 로그 [26]스키마를 사용하여 기록됩니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Announcing OpenLDAP 1.0, an open source LDAP distribution". 26 August 1998. Retrieved 22 March 2018.
  2. ^ "Development version: GIMP 2.99.10 Released". 25 February 2022. Retrieved 26 February 2022.
  3. ^ "The OpenLDAP Public License, Version 2.8". openldap.org. 1 August 2003. Retrieved 15 August 2015.
  4. ^ "OpenLDAP, Public License for 2.4.39". Openldap.org. Retrieved 17 February 2014.
  5. ^ "OpenLDAP, Project". Openldap.org. Retrieved 17 February 2014.
  6. ^ "OpenLDAP, Kurt D. Zeilenga". Openldap.org. Retrieved 17 February 2014.
  7. ^ Howard Chu. "Howard's Miscellaneous Page". Highlandsun.com. Retrieved 17 February 2014.
  8. ^ "Ando's Home Page". Aero.polimi.it. Retrieved 17 February 2014.
  9. ^ a b c d e f g h "OpenLDAP main page". Retrieved 25 October 2021.
  10. ^ "Archived copy". Archived from the original on 17 February 2005. Retrieved 19 August 2013.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  11. ^ a b c d e f g h i j k l m n o p "OpenLDAP man page on slapd backends". Retrieved 25 October 2021.
  12. ^ "OpenLDAP 2.4 slapd-bdb man page". Retrieved 25 October 2021.
  13. ^ "OpenLDAP 2.4 slapd-hdb man page". Retrieved 25 October 2021.
  14. ^ "OpenLDAP 2.5 slapd-ndb man page". Retrieved 25 October 2021.
  15. ^ "OpenLDAP 2.4 slapd-shell man page". Retrieved 25 October 2021.
  16. ^ "OpenLDAP 2.3 slapd-ldbm man page". Retrieved 25 October 2021.
  17. ^ a b c d e f g h i j k l m n o p q r s t u v w x y z "OpenLDAP overlays man page". Retrieved 25 October 2021.
  18. ^ a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab "OpenLDAP contrib modules source code". Retrieved 25 October 2021.
  19. ^ "OpenLDAP SLAPI plugins man page". Retrieved 25 October 2021.
  20. ^ "OpenLDAP contrib SLAPI plugins". Retrieved 25 October 2021.
  21. ^ "OpenLDAP 2.4 Announcement". Openldap.org. 3 October 2007. Retrieved 17 February 2014.
  22. ^ "OpenLDAP 2.5 Announcement". Openldap.org. 29 April 2021.
  23. ^ "OpenLDAP 2.6 Announcement". Openldap.org. 25 October 2021.
  24. ^ a b "RFC4533". Retrieved 25 October 2021.
  25. ^ "OpenLDAP replication documentation". Retrieved 25 October 2021.
  26. ^ "draft-chu-ldap-logschema-00 – A Schema for Logging the LDAP Protocol". Tools.ietf.org. Retrieved 17 February 2014.

외부 링크