1. LDAP == Lightweight Directory Access Protocol
경량 디렉터리 액세스 프로토콜 이라 한다. 줄여서 LDAP 라 한다.
LDAP 는 디렉터리 서비스에 접근 하기 위한 프로토콜 이다.
디렉터리 서비스 란 ?
디렉터리 서비스는 계층적인 구조로 데이터를 저장 한다.
주로, 조직의 사용자 / 그룹 / 자원 / .. 등과 같은 관련된 정보를 효과적으로 구성 하고, 검색 하기 위해 사용 된다.
여러 회사 에서 LDAP 를 사용 해서,
사용자 인증 / 권한 부여 / 이메일 주소록 / 장치 구성 / .. 등 과 같은 다양한 정보를 저장 하고 관리 한다.
LDAP 의 주요 특징 및 용어는 아래와 같다.
1) 디렉터리 서비스
LDAP 은 디렉터리 서비스에 접근 하는데 사용되는 프로토콜 이다.
디렉터리 서비스는 계층적인 구조로 데이터를 저장 하고, 사용자 및 자원과 관련된 정보를 효과적으로 구성 한다.
이해 하기 쉽도록, 디렉터리 서비스를 데이터의 중앙 저장소 또는 (데이터) 레포지토리 로 생각 할 수 있다.
2) 계층적인 구조
LDAP 는 트리 구조 이다. 이러한 트리 구조로 데이터를 저장 한다.
각 항목은 키 또는 값으로써 고유한 식별자를 가진다. (Distinguished Name == DN)
DN 을 통해 트리 구조인 LDAP 에서 해당 엔트리를 찾을 수 있는 경로를 제공 한다.
부모 - 자식 관계로 구성 된다.
distinguish : 구별 하다
3) 디렉터리 엔트리 (Entry)
LDAP 엔트리는 속성과 값의 집합으로 이루어져 있다.
각 엔트리의 속성은 해당 엔트리의 정보이고,
각 속성은 하나 이상의 값을 가질 수 있다.
예를들어, 사용자 엔트리는 이름 / 이메일 주소 / 전화번호 / .. 등 과 같은 속성을 가질 수 있다.
LDAP 엔트리의 예시는 아래와 같다.
DN: cn=John Doe,ou=People,dc=example,dc=com
objectClass: person
cn: John Doe
sn: Doe
mail: john.doe@example.com
위의 엔트리는
cn = John Doe / ou = People / dc = example / cn : John Doe / sn : Doe / mail : john.doe@example.com
이 나타내져 있다.
이는 각각,
cn : common name
ou : organizational unit
dc : Domain Component
sn : surname
을 의미 하는데,
이렇게 이름 / 조직 단위 / 도메인 구성 요소 / 성씨 / 메일 을 의미 한다.
이런것들을 속성 이라고 한다.
속성은 LDAP 트리에서 엔트리의 위치와 역할을 정의 하는데 사용 된다.
특히, DN 에서 각각의 요소들은 트리의 다른 수준을 나타내어 엔트리의 위치를 지정 한다.
DN : cn=John Doe,ou=People,dc=example,dc=com 는
엔트리를 식별 하고 구성 하는데 사용 되는 중요한 구성 요소 이다.
( 요소 == 속성 )
4) 속성 == Attribute
엔트리의 특징 또는 속성 이다.
예를들어, 사용자 엔트리가 있다 하면, 이름 / 이메일 주소 / 전화 번호 / .. 등 의 여러 속성을 가질 수 있다.
5) 디렉터리 서버 (Directory Server)
LDAP 프로토콜을 사용 해서 디렉터리 서비스를 제공 할 때, 그 서버 자체를 의미 한다.
디렉터리 서버는 LDAP 프로토콜을 이용 해서 클라이언트 에게 데이터를 제공 하고 업데이트 한다.
6) DN (Distinguished Name)
각 엔트리를 고유 하게 식별하는 경로 또는 계층 구조를 나타내는 문자열 이다.
DN 은 트리 구조에서 엔트리의 위치를 나타 낸다.
2. LDAP 와 RDB 의 공통점 및 차이점
LDAP : Lightweight Directory Access Protocol == 경량 디렉터리 액세스 프로토콜
RDB : Relational Database == 관계형 데이터베이스
공통점
1) 데이터 구조
LDAP 와 RDB 모두 데이터를 효과적으로 구조화 하고 저장 하는 목적을 가진다.
LDAP 는 계층적인 디렉터리 구조를 사용 하고,
RDB 는 테이블 / 행 / 열 구조를 사용 한다.
2) 고유 식별자
둘다 데이터를 식별 해야하므로 고유 식별자 가 필요 하다.
LDAP 는 DN 을 사용 하고, (Distinguished Name)
RDB 는 PK 를 사용 한다. (Primary Key)
3) 검색 및 조회
LDAP 와 RDB 모두 데이터를 검색 하고 조회 할 때, 쿼리 언어를 사용 한다.
LDAP 는 LDAP Query Language (LDAPQL) 를 사용 한다.
RDB 는 SQL (Structured Query Language) 를 사용 한다.
4) 트랜잭션 지원
LDAP 와 RDB 모두 트랜잭션을 지원 한다.
트랜잭션은 여러 연산을 논리적으로 묶어서 데이터 일관성을 유지 하고,
성공 / 실패시 전체 작업을 원자적으로 처리 한다.
5) 데이터 무결성 유지
두 시스템은 데이터 무결성을 유지 하기 위한 기능을 가진다.
RDB는 FK 를 사용 해서 관계를 유지 하고 무결성 제약 조건을 설정 하고,
LDAP는 스키마를 사용 하여 데이터의 타입 및 제약 조건을 정의 한다.
6) 관리 및 보안
LDAP 와 RDB 모두, 각각의 시스템에서 데이터의 관리 및 보안을 위한 기능을 제공 한다.
7) 분산 데이터 베이스
LDAP 와 RDB 모두 분산 데이터 베이스 시스템 으로 구성 될 수 있다.
이는, 여러 서버에 데이터를 분산 해서 물리적으로 데이터를 분산 하여 저장 하고 관리 하는것을 의미 한다.
차이점
1) 데이터 모델
LDAP는 디렉터리 서비스에 사용 된다.
계층적인 데이터 모델을 가진다.
데이터는 트리 구조로 구성 되어 있다.
각 엔트리는 고유한 식별자인 DN 을 갖는다.
엔트리는 다양한 속성의 집합으로 이루어져 있다. (공통점)
엔트리 간의 관계를 스키마를 사용 하여 정의 한다.
RDB는 테이블 형식의 데이터 모델 이다.
데이터는 행 / 열 로 구성된 테이블 이다.
각 엔터티는 고유한 식별자인 PK 를 갖는다.
엔터티는 다양한 속성 (칼럼) 의 집합으로 이루어져 있다. (공통점)
테이블 간의 관계를 외래 키 (FK) 를 사용 하여 정의 한다.
2) 목적
LDAP는 주로 식별 / 검색 / 계층적인 데이터 구조에서 빠른 읽기에 특화 되어 있다.
이는 계층 구조 이기 때문에 가능한 것이고,
그렇기 때문에 주로, 사용자 인증 / 권한 부여 / 주소록 / 장치 설정 등에 활용 된다.
RDB는 주로 정형화된 데이터를 저장 하고 효과적으로 조회 하기 위해 사용 된다.
여러 솔루션에서 다양 하게 사용 된다.
3) 데이터 일관성 유지
LDAP는 데이터를 빠르게 읽기 위해 초점을 맞춘 디렉터리 서비스 이다.
따라서, 일관성이 높고, 삽입 / 업데이트 / 삭제 보다는 읽기 연산에 최적화 되어 있다.
RDB는 트랜잭션과 일관성 유지에 중점을 둔 데이터베이스 이다.
ACID 속성을 보장 하며 트랜잭션을 지원 한다.
A : Atomicity
C : Consistency
I : Isolation
D : Durability
4) 쿼리 언어
LDAP는 LDAP Query Language (LDAPQL) 또는 LDAP Data Interchange Format (LDIF) 를 사용 한다.
RDB는 SQL (Structured Query Language) 를 사용 한다.
5) 용도와 활용
LDAP는 사용자 인증 / 권한 부여 / 주소록 / 디렉터리 서비스 등과 같은 응용 프로그램에서 활용 된다.
RDB는 LDAP가 주로 활용 되는 어플리케이션을 제외한 일반적인 다양한 분야에서 활용 된다.
6) 데이터 모델의 유연성
LDAP는 계층적인 구조로 인해 데이터 간의 관계를 표현하는데는 적합 하다.
하지만, 복잡한 관계를 표현 하기에는 한계가 있다.
RDB는 관계형 데이터베이스 이기 때문에, 다양한 데이터 간의 복잡한 관계를 표현 하기 좋다.
'개념 > Study' 카테고리의 다른 글
Proxy Server (프록시 서버) (0) | 2023.11.16 |
---|---|
HTTP 통신 과정 (0) | 2023.11.15 |
세션 (Session) & 쿠키 (Cookie) (1) | 2023.11.15 |
RBAC (Role-Based Access Control) & ABAC (Attributed-Based Access Control) (0) | 2023.11.14 |
SSO (Single Sign-On) 란 ? (1) | 2023.11.14 |