LDAP에 대한 여러 자료를 조사하여 정리한 글 입니다. 참조한 레퍼런스들은 하단 링크로 첨부하였습니다.
LDAP 이란 ?
- Lightweight Directory Access Protocol
- 네트워크 상에서 조직이나 개인정보 혹은 파일이나 디바이스 정보 등을 찾아보는 것을 가능하게 만든 소프트웨어 프로토콜이다.
- 네트워크 상의 디렉토리 서비스 표준인 X.500의 DAP(Directory Access Protocol)를 기반으로한 경량화(Lightweight) 된 DAP 버전이다.
- DAP는 OSI 전체 프로토콜 스택을 지원하며 운영에 매우 많은 컴퓨팅 자원을 필요로하는 아주 무거운 프로토콜
- LDAP은 DAP의 복잡성을 줄이고 TCP/IP 레이어에서 더 적은 비용으로 DAP의 많은 기능적인 부분을 조작할 수 있도록 설계
- 디렉터리 서비스는?
- 이름을 기준으로 대상을 찾아 조회하거나 편집할 수 있는 서비스
- DNS도 디렉터리 서비스의 일종
- DNS는 도메인 이름으로 IP 주소를 조회
- Lightweight 하다.
- 이 의미는 사용하기 간편하다는 의미가 아니라 통신 네트워크 대역폭 상의 가벼움을 의미
- 인터넷 프로토콜로 데이터를 조금만 주고 받아도 되게끔 설계되었다고 함
- LDAP의 요청의 99%는 검색에 대한 요청
- 디렉토리 안에는 연락처, 사용자, 파일, code 등 무엇이든 넣을 수 있고, insert, update 보다는 검색 요청에 특화되어 있다.
- 검색에 특화되다보니 트랜잭션이나 롤백이 없고 복잡한 관계 등을 설정할 수 없다.
- 신뢰성이나 가용성을 개선하기 위해 쉽게 복제될 수 있는 아키텍처로 이루어져 있다.
- 기본적으로 바이너리 프로토콜이다.
- ASN.1이라는 언어로 메시지를 표현
- 메시지를 BER(Basic Encoding Rules)라는 포맷으로 인코딩하여 주고 받음
- BER 인코딩이 바이너리라서 내용을 알아볼 순 없음
- 비동기 프로토콜이다.
- 세션을 하나만 열어서 여러 메시지 요청을 보낼 수 있고, 각각의 요청에 대한 응답이 다른 시점에 올 수도 있음
- 응답마다 어떤 요청의 응답인지 식별할 수 있는 아이디가 부여됨
용도
- 사용자, 시스템, 네트워크, 서비스, 애플리케이션 등의 정보를 트리 구조로 저장하여 조회하거나 관리
- 회사에서 구성원의 조직도나 팀별 이메일 주소 등도 LDAP 서비스로 관리
- 특정 영역에서 이용자명과 패스워드를 확인하여 인증하는 용도로 쓰임
- 인증이든 무엇이든 트리 구조로 검색하고 편집하기 좋은 데이터들은 LDAP을 많이 사용
- LDAP은 서버에만 적용되는 프로토콜이 아니라 주소록 관리에 사용되거나 스마트폰 내에서도 LDAP 클라이언트가 포함되어 있음
- 특정 데이터를 중앙에서 일괄 관리하는 일반적인 경우에 사용
- 유저 권한 관리, 주소록, 조직도, 사용자 정보 관리, 어플리케이션/시스템 설정 정보, 공개 키 인프라스트럭쳐, DHCP나 DNS등의 저장소, 문서 관리, 이미지 저장소, Code 등
주요 용어
- DN : Distinguish Name
- RDN : Relative Distinguished Name
- DIT : Directory Information Tree
- LDIF : LDAP Data Interchange Format
- UID : User ID
- DC : Domain Component
- OU : Organizational Unit
LDAP 인증 Flow
현재 Rundeck을 사용한 LDAP 인증을 구현하고 있는데 위 그림이 가장 근접한 듯 하여 첨부하였다. Rundeck LDAP 인증은 추후 별도 포스팅에서 다룰 예정이다.
LDAP의 디렉터리 구조
LDAP 서버에는 여러 디렉토리 정보(entry)가 계층적 트리 구조(hierarchical tree-like)로 구성되어 있다.
- Entry 정보 참조는 RDN(Relative Distinguished Name)이나 DN(Distinguished Name)을 사용해서 정보를 얻어올 수 있다.
- 각각의 엔트리는 다수의 속성을 갖는다.
- 각 속성은 이름, 값+ 형태
- 이름 하나에 한개 이상의 값이 바인딩 될 수 있음
- 각 엔트리는 DN(Distinguished Name) 이라는 고유한 값으로 지칭
- 이 값으로 어디에 속한 엔트리인지 파악할 수 있다.
도구
LDAP 서버를 구축하기 위해 여러 옵션이 존재한다.
- Windows 라이센스를 가지고 있다면 Active Directory가 적합
- 오픈소스 : OpenLDAP, Apache DS, OpenDJ, 389 Directory Server 등
- Mac의 디렉토리 유틸리티
- 임의의 LDAP 서버에 붙어서 내용을 간편하게 확인할 수 있음
- Apache Directory Studio
- 이클립스 UI라서 개인적으로 사용하기 제일 편한 듯
AD (Active Directory)
- AWS
- Simple AD : 관리형 디렉토리 서비스
- 사용자 계정, 그룹 멤버십, Amazon EC2 인스턴스들에 대한 도메인 조인 등
- Microsoft AD : Windows Server 2012 R2 기반으로 운영되는 관리형 AD 서비스
- SSO 지원
- AD Connector
- 온프레미스 AD 환경을 AWS 환경에서 사용할 수 있도록 해주는 Proxy 역할
- Simple AD : 관리형 디렉토리 서비스
- Trust
- 단방향 (One-way) : 보안이 중요한 온프레미스에서 AWS 환경으로만 접근을 허용하려는 경우 단방향 Trust를 구성
- 양방향 : 양쪽 모두에서 데이터를 접근해야 하는 경우 양방향 Trust 구성
참고
'Work > 개발 노트' 카테고리의 다른 글
[WEB] 쿠키 개념 잡기 (0) | 2020.09.06 |
---|---|
[WEB] 토큰 기반 인증 (2) | 2020.09.04 |
[파이썬] 모듈 사용하기 (0) | 2020.09.03 |
Go언어로 웹 서버 개발 시 Swagger 문서 자동 생성하기 (0) | 2020.05.05 |
Mac에서 VS Code 터미널 폰트 깨지는 문제 (3) | 2019.06.23 |
댓글