Windows Server 2008이 나오면... (25) - ADFS

어제는 같이 일하시는 한 지인분에게 재미있는 단어를 하나 들었습니다.

영역 제어자, 행정가, 이벤트 통나무.. 라는 단어를 말씀하시면서, 이게 뭔지 아냐고 하시더군요. 요즘 몇몇 분들이랑 영문 문서 번역 작업을 같이 진행하고 있는데, 그 분이 시간에 쫓겨, 번역 서비스를 이용하여 문서를 번역했다가 나온 단어더군요.

clip_image001

오늘 알아볼 주제는 Active Directory Federation Service (ADFS)입니다. 액티브 디렉터리 연방 서비스(?)라고 번역이 될 수 있습니다. Windows Server 2008에서 새롭게 나오는 컨셉은 아니고, 정확하게는 Windows Server 2003 R2에서 추가된 기능으로, Windows Server 2008엔 기본적으로 내장되어져 있습니다.

image

시나리오를 하나 생각해보죠.

자동차 회사가 있고, 자동차 부품을 납품하는 회사가 있습니다. 이 둘의 관계는 파트너 관계가 될 것이며, 어떻게 보면 B2B적인 요소가 가미될 수 있습니다. 자동차 부품을 납품하는 회사의 류과장은 자동차 회사의 재고 사이트에 접근하여, 부품의 사용량을 체크하고, 필요시 주기적으로 이를 납품하는 역할을 하고 있습니다.

류과장은 아침에 출근해서 인터넷 익스플로어를 열고.. https://자동차회사재고사이트 에 접근할 것입니다. 그럼 당연히 인증을 받아야 합니다. 여기서 사용하는 계정에 유념하셔서 생각하시면 이해가 빠르실 수 있습니다. 이때 사용하는 계정은 자동차 회사에서 발급한 계정을 사용할 것입니다.

사용자 입장에서는 자신의 회사(부품 회사)의 계정과 자동차 회사 웹 사이트에 접근할 계정 2개를 기억해야 합니다.
자동차 회사의 IT 관리자 입장에서는 파트너 회사를 위해 계정을 1개 발급해줘야 하며, 이 계정의 사용자에 대해서 지속적인 모니터링이 필요합니다. 그렇지만 이 사람이 퇴사를 하거나 부서를 이동했다는 사실에 대해서는 공지를 받기 전까지는 알 수가 없습니다. 또한 부품 납품 회사가 변경되었을 때, 해당 계정에 대해 재설정을 해주어야 하며, 이 계정을 도대체 몇명이 사용하는지를 모릅니다. 또한, 동일한 인증 데이터베이스를 사용하는 또다른 응용 프로그램을 납품 회사에서 발견한다면, 해당 계정을 통해 로그인할 수 있는 확률도 존재합니다. (물론 권한 설정을 해야겠죠). 해당 계정의 암호를 변경하는 것도 쉽지 않겠죠.

이러면 어떨까요? 아주 간단한 방법입니다. 접근시 파트너 회사에서 사용하던 계정을 이용하자! Single Sign On 컨셉을 가져가자 입니다.

제가 생각하는 ADFS의 한국적인 컨셉은 내꺼만 관리하자! 입니다 :)

액티브 디렉터리의 보안 영역은 조직내부라는 한정된 공간으로 보통 생각하십니다, 상호 액티브 디렉터리를 사용하는 회사의 경우, 이 둘을 연결하기 위해서 트러스트를 사용하실 수 있는데, 이 트러스트를 인터넷 공간에서 패킷을 주고 받는다는 것은 보안상 불가능한 일입니다. 바로 이때 ADFS가 제격이 됩니다.

clip_image002[3][1]

모든 보안의 기본 원칙은 인증과 허가입니다. 인증은 원래 계정을 가진 곳에서 하자는 것입니다. 허가만 자원을 가진 곳에서 처리하는 모습이 기본적인 ADFS의 모습입니다. 또한 양단에서 신호를 주고 받는 기본 채널은 WS(Web Service)-*, WS-Federation 아키텍쳐를 이용합니다. 웹 서비스이므로, HTTPS가 사용된다는 의미입니다. 하나의 포트를 사용하여 이런 교신이 가능하기 때문에, 인터넷 환경에서 도입을 고려할 수 있고, HTTPS(SSL)을 이용하므로, 보안 사항도 지켜지게 됩니다. WS-*는 표준 방식이므로, 이를 이용할 수 있는 영역과는(타사 서비스) 언제든지 이런 형태의 서비스를 이용할 수 있습니다.

ADFS에서는 Account Partner과 Resource Partner로 나누어지게 됩니다. 앞선 시나리오에서 자동차 회사는 Resource Partner이 되고, 부품 회사가 Account Partner가 되게 됩니다. 상호간 서비스 정보를 주고 받고(ADFS Trust Policy), 데이터에 대한 무결성을 확인하기 위해, 인증서가 필요합니다. 이런 후, Account Partner에선 누가 넘어다닐 것인지를 지정하고(인증된 사용자가 어떻게 넘어올지를 설정합니다. 더 쉽게 말하면, 인증된 사용자는 무슨 데이터가 있다라는), Resource Partner에선 넘어온 데이터를 확인하고, 어떤 서비스를 어디에 제공할지를 결정하면 됩니다. 꼭 2개의 회사만이 연결되지는 않기 때문입니다.

자, 그럼 시나리오에서 다시 살펴보면..

두회사의 관계가 끝났습니다 - ADFS Trust를 해제합니다.
자동차 회사 웹 사이트에 접근하는 직원이 퇴사했습니다. - 부품 회사의 관리자가 해당 계정을 Disable할 것입니다.
직원이 바뀌었습니다. - 넘어다닐 수 있는 직원을 재설정합니다.
제공한 계정을 가지고 또다른 서비스를 이용할 수 있는 가능성 - ADFS 설정시 제공 응용 프로그램을 지정할 수 있습니다.

ADFS에는 2가지 종류의 응용 프로그램 서비스가 가능합니다. 하나는 Token Based Application, 또하나는 Claim-Aware Application입니다. 간단하게만 설명하고 포스팅을 마치겠습니다. Token Based는 Windows 인증을 처리해주는 것입니다.(OWA, SHAREPOINT). Claim-Aware Application은 ASP.NET 응용 프로그램내 처리되는 ADFS 개체를 이용하는 모드입니다. 해당 서비스에 대해서는 ADFS Overview 문서를 참조하시면 됩니다.

이름 그대로 연방 서비스를 제공해주는 것입니다. 너와 내가 어떠한 비즈니스적 파트너가 되면, 연방을 연결시켜서 서비스를 제공하는 것, ADFS가 그것입니다.