[ LDAP ] LDAP(Lightweight Directory Access Protocol)

duck-ach·2023년 2월 15일
0

LDAP

목록 보기
1/4
post-thumbnail

LDAP이란?

LDAP(Lightweight Directory Access Protocol)은 네트워크 상에서 조직이나, 조직 내 파일/개인정보/디바이스정보 등을 찾아볼 수 있도록 하는 프로토콜이다.

  • 네트워크 상의 디렉토리 서비스 표준인 X.500의 DAP(Directory Access Protocol)을 기반으로 한 경랑화(Lightweight)된 DAP 버전이다.

    • DAP은 OSI 전체의 프로토콜을 지원하고 통신 간에 네트워크 자원을 많이 소비하는 등 운영 환경에 제약이 많다.
      -> LDAP은 OSI계층 전체가 아닌 TCP/IP 위에서 운용되고, DAP의 스펙을 최대한 유지하면서도 경량화해 네트워크 부담을 줄이도록 설계되었다.
  • 디렉터리 서비스 (Directory Service)

    • 이름을 기준으로 대상을 찾아 조회하거나 편집할 수 있는 서비스
    • DNS도 디렉터리 서비스의 일종(DNS는 도메인 이름으로 IP주소를 조회)
    • 디렉토리 안에는 연락처, 사용자, 파일, code 등 무엇이든 넣을 수 있고, insert, update 보다는 검색 요청에 특화되어 있다.
  • Lightweight (경량화)

    • 사용하기 간편하다는 의미보다는 통신 네트워크 대역폭 상의 가벼움을 의미한다.
    • 데이터를 조금만 주고 받아도 되게끔 설계되어있다.
  • 검색에 특화

    • LDAP의 요청 99%는 검색에 대한 요청을 한다.
    • 검색에 특화되다보니 Transaction이나 Rollback이 없고, 복잡한 관계 등을 설정할 수 없다.
  • Binary Protocol (바이너리 프로토콜)

    • ASN.1 이라는 언어로 메시지를 표현
    • 메시지를 BER(Basic Encoding Rules)라는 포맷으로 Incoding 하여 주고받음(BER Incoding이 바이너리라서 내용을 알아볼 수는 없음)
    • Binary Protocol은 Compact하지만 해석하기 쉽고, 내부적으로 처리되는 것이므로 상세하게 알 필요는 없다.
  • Asynchronous Protocol (비동기 프로토콜)

    • 세션을 하나만 열어서 여러 메시지 요청을 보낼 수 있고, 각각의 요청에 대한 응답이 다른 시점에 올 수도 있음
    • 응답마다 어떤 요청의 응답인지 식별할 수 있는 아이디가 부여됨

LDAP의 구조

LDAP의 구성요소는 4가지 모델로 나눌 수 있다.

  • Information 모델
  • Naming 모델
  • Functional 모델
  • Security 모델

Entry NameFull NameDiscription
DCDomain Component도메인 구성요소
DNDistinguished Name모인 Entry를 바탕으로 사용자를 구분할 수 있는 고유의 트리 이름
CNCommon Name일반 이름
SNSir Name(이름의) 성
CCountry Name국가명
STState Province Name주(도) 명
LLocality Name도시, 특정 지역 단위명
OOrganization조직(회사) 명
OUOrganization Unit Name조직 부서명
UIDUser ID유저 아이디

각 사용자나 개체는 고유한 DN(Distinguish Name)을 갖는데, 이는 끝 노드부터 역순으로 올라간다.

Information 모델

LDAP 서버에는 여러 Entry가 계층적트리(Hierarchical Tree)구조로 들어있으며, 각각의 Entry는 다수의 Attribute(이름 등)을 갖습니다.
각 Entry는 DN(Distinguished Name)이라는 고유값으로 정의됩니다.

트리 형태의 구조를 DIT(Directory Information Tree) 라고 합니다.

  • Entry : Directory에서 정보를 표현하는 기본 단위. Entry는 다수의 Attribute로 구성된다.
  • Attribute : Entry의 각 타입을 저장하는 공간으로 1개의 Attribute에 하나, 또는 다수의 값을 담을 수 있다.
    ("ou=Employee", "cn=James" 등)
  • ObjectClass
    • Entry에서 꼭 필요하거나 가질 수 있는 Attribute 타입을 정의한다.
    • 데이터에 필수적으로 들어가야하는 정보를 담을 수 있게 정의할 수 있다.
    • 또 다른 ObjectClass를 상속하여 구현하며 개념을 확장할 수 있다.
  • Schema
    • ObjectClass와 Attribute에 대해 정의하는 규칙으로 보면 된다.
      ObjectClass에 어떤 Attribute가 들어갈지, Attribute의 값에 대한 제약 및 조건 등 관련된 규칙들을 정의할 수 있다.
    • 스키마 정의를 통해 여러 응용 프로그램에서 Directory Service를 읽고 사용할 때 상호운용성을 보호해주는 역할을 한다.

Naming 모델

Alice는 ldapsoftware.com(dc)라는 도메인의 employee(ou)에 속한 사용자이다.

  • LDAP 디렉토리 구조에서 각 Entry를 어떻게 식별하고 구성하는지에 대해 설명한다.
  • Entry는 여러 자식 Entry를 가지는 형태의 트리 구조로 나타나게 되는데, 각각의 Entry 계층에서는 해당 계층을 나타내는 고유한 주소 Attribute를 지니는데 이를 RDN(Relative Distinfuished Name)이라고 한다.

Functional 모델

LDAP 디렉토리에서 작업하는 명령을 다룬다.
작업 명령의 기능에 따라 3가지로 구분하며, 총 8가지의 작업 명령을 나눈다.

질문 작업

  • Search : 주어진 조건에 맞는 Entry 도출
  • Compare : 특정 Entry의 Attribute 값 비교

갱신 작업

  • Add : Directory에 신규 Entry 추가
  • Delete : Directory에 기존 Entry 삭제
  • Modify : Directory에 기존 Entry 수정 및 Entry DN값 변경

인증 및 제어 작업

  • Bind : Directory 서버 연결 시 사용자 인증
  • Unbind : Directory 서버와의 연결 해제
  • Abandon : 이전 요청 명령을 취소

Security 모델

  • 디렉토리에 접근하는 사용자 인증과 데이터 접근 권한을 통해 서비스를 보호하는 방식에 대해 설명합니다.
  • SSL/TLS 인증 방식을 통해 서버 클라이언트 간 연결을 구성할 수 있으며 데이터 전송 시 Binary 암호화를 적용해 정보를 보호합니다.

Binary암호화 : 소스코드를 알아보기 힘들게 난독화하는것이 아니라, Decompile이 불가능하도록 Binary 자체를 암호화하는 것을 말합니다. (위변조 방지 라고도 함)

LDAP의 기능

  • 컴퓨터 관리, 사용자 인증 등 정보를 중앙에서 관리할 수 있다.
  • 관리 중인 정보를 읽거나 검색하는 것에 특화되어 있다. (Create, Delete 등은 transaction이나 rollback 등의 기능이 존재하지 않아 쓰기에는 적합하지 않다.
  • 수많은 서버의 계정 관리, 접근 제어 등을 중앙에서 관리할 수 있어 보안적 결함 관리에도 효율적이다.

LDAP과 RDB

LDAP을 이용한 Directory Server도 데이터를 저장하는 DB 유형 중 하나이다.
우리가 흔히 사용하는 Oracle DB, MySQL같은 관계형(RDB)와 비교했을 때 데이터 구조와 용도에서 많은 차이가 있다.

RDB(Relational Database)는 행과 열의 형태로 구성된 테이블에 데이터를 저장하고, 서로 다른 테이블들과의 관계를 통해 결과를 도출한다.

반면, LDAP의 경우 데이터가 트리 구조로 이루어진 Hierarchical DB이다.
각 Entry는 Attribute로 이루어진 데이터들과 함께 하위에 여러 자식 Entry를 가지는 그룹 형태를 반복하여 트리와 같은 계층 형태의 데이터로 표현할 수 있다.

LDAP이 가진 계층 구조는 검색과 읽기 작업에 큰 강점을 보여준다.

  • 데이터가 위치한 계층에 접근하여 필요한 데이터를 바로 꺼내올 수 있다.
  • 해당 계층의 같은 성격을 가진 데이터의 Attribute와 Schema 설정을 통해 보다 상세히 비교할 수 있다.
RDB(Relational Database)LDAP(Lightweight Directory Access Protocol)
구조관계형 테이블 구조계층형 트리 구조
특징여러 데이터, 테이블들의 관계를 통해 필요한 데이터를 종합적으로 가져오는 복합적 쿼리를 처리저장된 데이터를 신속하게 조회하기 위해 단순 쿼리 위주로 작업을 처리
장점추가, 삭제와 같은 쓰기작업에서 안정성 ↑검색 및 읽기 작업에서 속도와 성능면에서 RDB보다 유리
단점스키마를 수정하기 어려우며, 시스템이 커지면 JOIN문이 많은 복잡한 쿼리가 만들어 질 수 있다.트랜잭션 특성이나 실시간성이 떨어져 사용자 추가나 패스워드 변경이 바로 반영되지 않을 수 있다.
profile
자몽 허니 블랙티와 아메리카노 사이 그 어딘가

0개의 댓글