LDAP은 한마디로 접근제한 프로토콜이라고 할수 있습니다.
회사에보면 직원들이 있지요 그리고 해당 직원별로 접근이 가능한 정보가 있습니다. 말단직원이 회사의 일급 보안자료를 보게되면 회사가 위험에 빠질수도 있는 문제이기때문이죠. 그리고 인사팀이 전직원 연봉을 관리하는데 그 정보를 다른 직원들이 보게 되는것도 매우 불편한 일이 될테구요. 그러면 이걸 해결하기 위해서 어떻게 하면 좋을까요? 사용자들을 그룹으로 묶어서 관리하고 접속할수 있는 데이타도 접근권한이나 업무성격등으로 묶어서 특정 그룹만이 허용된 데이타에 접근할수 있도록 하면 손쉽게 관리가 되겠죠? 여기서 그룹이라함은 팀만 해당되는 것은 아닙니다. 예를 들어 인사팀의 연봉정보를 예로 들게요. 인사팀이라는 그룹은 해당정보에 접속이 가능해야합니다. 그리고 다른팀 사람들 중에도 연봉정보를 봐야하는 사람들이 있지요. 각 팀의 팀장들은 자기 팀원들의 연봉도 알아야하고, 새로운 사람을 뽑을때 그 사람이 해당연봉에 걸맞는 사람인지도 판단해야하기 때문에 모든 팀의 팀장들은 연봉정보를 알아야합니다. 그리고 회사를 운영하는 임원들도 회사 정책이나 방향을 정할때 연봉정보를 참고할수있기때문에 단순하게 팀으로만 구성해서 권한을 주는 것은 유연성이 없다고 할수 있겠습니다.
LDAP은 모든 서비스를 최대한 작은 단위로 분류해서 다양한 그룹이 다양한 서비스에 다중으로 엮여 효과적으로 접근하도록 구성하는 것이 가능합니다. 그렇게 한번 설정을 해놓으면, 새로 직원을 뽑았을때 그 직원이 속하는 팀과 직급을 가지고 그룹에 추가만 하면 해당 그룹이 가지는 모든 권한을 자동으로 가지게 되므로 개개인을 일일이 설정할필요가 없어서 관리에 용이합니다.
LDAP은 특정 업체가 관리하는 것이 아니라 업계 표준 프로토콜입니다. 그리고 LDAP은 분산된 디렉토리서비스를 관리하고 또는 접속을 제한하는 Internet Protocol (IP) network 단계에서 처리되는 프로토콜입니다.
Domain Directory service는 사용자, 시스템, 네트워크, 서비스 그리고 어플리케이션에 대한 정보를 공유하는 데 대한 허용을 해주는 중요한 역할을 합니다. 마치 디렉토리 서비스가 잘 정돈된 계층적 구조를 가지는 email 디렉토리 같은 서비스를 제공하는것과 같습니다. 비슷하게는 주소와 전화번호가 나열된 전화번호부가 있겠습니다.
LDAP은 승인된 Internet Engineering Task Force (IETF)의 표준이며 Request for Comments(RFCs)를 따릅니다.
일반적으로 LDAP은 중앙에서 사용자의 이름과 비밀번호를 저장하는데 주로 이용됩니다. 이로 인해 수많은 어플리케이션들 간에 권한 관계를 한군데에서 관리하고 접속을 제한할수 있습니다.
LDAP은 X.500표준에서 일부를 발췌하여 심플하게 만든 표준이기 때문에 때때로 X.500-lite라고 불리기도 합니다.
클라이언트는 Directory System Agent (DSA)라고 불리는 LDAP서버에 접속해서 LDAP세션을 시작합니다. DSA서버는 기본적으로 TCP와 UDP를 사용하고, 포트는 389번이나 LDAPS (SSL기능이 들어간 LDAP)은 636번을 사용합니다. 한번 세션이 연결된 클라이언트는 별도의 인증없이 지속적으로 서버에서 필요한 자료를 요청할수 있습니다. 클라이언트는 동시에 여러개의 요청을 서버에 보낼수 있고, 서버는 요청순서와는 상관없이 처리가 되는대로 결과를 반환합니다. 모든 정보는 Basic Encoding Rules (BER)을 기반으로 정보교환이 됩니다.
아래는 클라이언트가 서버에 요청할수 있는 리스트입니다.
- StartTLS – use the LDAPv3 Transport Layer Security (TLS) extension for a secure connection
- Bind – authenticate and specify LDAP protocol version
- Search – search for and/or retrieve directory entries
- Compare – test if a named entry contains a given attribute value
- Add a new entry
- Delete an entry
- Modify an entry
- Modify Distinguished Name (DN) – move or rename an entry
- Abandon – abort a previous request
- Extended Operation – generic operation used to define other operations
- Unbind – close the connection (not the inverse of Bind)
Source: