_IT 트렌드/Vendors

[펌] 이기종 타서비스간의 통합인증을 하려면? LDAP 이 답이다 !

분석맨 2010. 10. 8. 08:58

이기종 및 타서비스간의 하나의 아이디로 통합하려면, 어떻게 처리 하면 좋을까?

 결론 부터 말하면, LDAP 이다. 그 이유는 LDAP 은 윈도우 뿐만 아니라. 리눅스, MAC, *NIX 계열에서 모두 사용이 가능하다는 이야기이다.

그렇다. 답은 LDAP 을 사용하면, 가능 하다는 이야기이다.

윈도우에서는 Active Directory(이하 AD)가 LDAP 표준을 사용하여 제공하게 된다. OSX(맥 운영체제)에서도 LDAP 을 지원한다. (LDAP 서버로 사용가능 한지는 모른다.)

그리고 리눅스 계열은 OpenLDAP 을 사용해서 LDAP 서버를 구축 및 클라이언트로도 사용이 가능하다. 또한  구축도 쉽게 이루어 질 수 있다. (요것은 구현해봤다!)

그러한 이유는 PAM 에서 LDAP 유저를 사용할 수 있게끔 간단하게 지정만 해주면, LDAP 을 사용할 수 있다는 이야기 이다.

그렇지만, 윈도우 AD를 사용해서 LDAP 서버역할을 해내면 어떻게 해결해야 할지 모르는 문제가 생긴다-_-;;
그 이유는 윈도우 AD는 User의 정보를 넘겨주지 못하고, kerberos 라는 표준을 이용해서 티켓을 발급하여, 티켓개념의 Single-Sign-On 만을 제공하기 때문이다.

그래서 리눅스와 윈도우를 통합하기 위해서는 리눅스에서 kerberos 를 사용해야 한다.(이 부분은 구축하지 못했으므로 자세한 사항을 언급하지 못하겠다. SSH 도 PAM 을 통해서 인증을 받는데.. 티켓을 받게 되면 인증 부분이 필요없고, 그 앞단에서 인증한후 SSH 를 사용할 수 있게 된다는 이야기이다.)

간단하게 OpenLDAP 이란 무엇인지 알아보자.

LDAP 은 쉽게 말해서 표준 프로토콜이다. 이 프로토콜은 특이한 점이 있다. 데이터들을 버클리DB를 통해서 저장한다. 버클리 DB는 B*트리를 기반으로 제작되어진 DB이다. B* 트리구조로 되어져 있으며, 읽기에는 최고의 속도를 자랑한다. 하지만, B* 트리 특성상 새로운 값 입력시 너무 느리다는 단점이 있다.(구조가 변하기 때문에...) 그래서 LDAP 을 보통의 DB(Oracle,My-SQL 등)를 사용해서 사용하는 방법이 있다.

사용자의 정보는 어떻게 저장되어 있는가?


위 그림을 보자 계층적 구조로 사용자의 정보를 입력되어져 있다. 그렇기 때문에 더 빠른 정보를 읽어 올 수 있으며, 효율적으로 User를 관리 할 수 있다.

이러한 LDAP 은 범용적이기도 하다. 무슨 이야기이냐 하면, Apache 및 PHP 등의 응용프로그램단에서도 인증서비스를 지원할 수 있다는 이야기이다. 즉 하나의 아이디를 통해서 사용가능하다는 이야기다.

위 말이 어렵다면, 예를 들어서 설명해보이겠다. 우리는 싸이월드나 네이트온을 사용할 때 보통 하나의 아이디로 둘다 로그인이 가능하다. 이렇게 하나의 아이디를 통해서 인증을 할 수 있는게 LDAP 을 사용하면 이루어 질 수 있다는 이야기다.

LDAP 의 사용으로 기업의 이점?

LDAP을 사용하게 되면, 기업과 사용자의 이점은 무엇인가? 보안 문제를 쉽게 해결하며, 하나의 서버에서 인증을 해주기 때문에 그린 IT에 대응 할 수 있으며, 인력이나 서버관리 비용이 줄어들수 있다.

사용자의 입장에서는 하나의 아이디를 통해서 다양한 서비스를 이용할 수 있고, 재가입을 막고, 아이디와 패스워드 관리가 비교적 쉬워진다는 이야기 입니다.

LDAP의 단점은 무엇인가?

아이러니 하게도 보안이다. 하나의 보안이 뚫리게 되면, 사용자의 모든 정보가 다 노출될 수 있는 단점이 생긴다. 그게 무슨 이야기냐 하면, LDAP 에는 다양한 정보를 갖고, 약간의 정보가 필요한 서비스에게 정보를 제공해 줄 것이다. 거기에 쇼핑몰까지 연결되어져 있다고 생각해보자. 그렇게 되면, 쇼핑몰에서 쓰기 위한 추가적인 정보도 LDAP 서버에 저장되어야 할 것이다. 그럼 모든 정보가 하나의 LDAP 서버에 있게 되는게 이게 크래킹이라도 된다면 엄청난 파장이 불러 올 것이다.

또한 LDAP 은 평문전송을 하기 때문에 가로채기시 사용자의 아이디 및 비번을 찍어서 볼 가능성도 있다. (이렇기 때문에 윈도우 AD에서는 케르베로스 티켓을 사용하는 듯 하다.)

그럼에도 불구 하고 LDAP 을 사용해야하는 이유는?

나의 생각은 이렇다. 여러 서버에 있는 보안 프로그램 및 방화벽을 한곳에 집중적으로 투자하여 운영하게 되면 조금더 나은 보안이 이루어 지며, 그로 인해 관리비용은 비슷하지만, 사용자의 서비스가 편리해지고 사용자의 정보관리 또한 쉬워진다는 이야기다.

그리고 LDAP 의 평문전송은 이미 해결책이 나와있다. LDAPs 라고 불리우는지는 모르겠지만, 우리가 흔이 말하는 인터넷 인증서처럼 인증서를 발급받아 공개키 방식의 암호작업을 해서 전송이 이루어지기 때문에 문제가 생기지는 않는다.

그리고 사용자는 편리한 서비스를 원한다. 단번의 로그인으로 여러가지 서비스를 사용하는 것과 아이디와 비밀번호를 하나로 사용한다는 것은 매리트 있는 이야기이기 때문에 보안에 관해서 조금더 신경을 쓰게 된다면, 모든 부분은 해결할 수 있다.


LDAP 과 케르베로스를 동시에 사용하게 된다면?

LDAP과 케르베로스를 사용하게 된다면, LDAP 서버에서 인증을 받은 후 케르베로스를 통해서 티켓만으로 모든 서비스를 받을 수 있다. 인증된 티켓은 유효시간안에 다양한 서비스를 받을 수 있는 것이다. 쉽게 말해서 우리가 전철이나 기차, 버스를 타는 것과 같다고 생각 하면 된다.


* 출처 : http://fri8nd.com/tag/LDAP#recentTrackback

반응형