Inside SharePointSharePoint 디렉터리 통합

Pav Cherny

코드 다운로드 위치: SharePoint2008_09.exe(2,775 KB)

목차

SharePoint 디렉터리 관리 서비스
사용자 지정 디렉터리 관리 서비스
SharePoint와 ILM
결론

Microsoft WSS(Windows SharePoint Services) 3.0과 MOSS(Microsoft Office SharePoint Server) 2007에는 Active Directory에서 SharePoint 리소스용 메일 사용이 가능한 연락처와 그룹 개체를 프로비전할 수 있는 디렉터리 관리 서비스 형식의 디렉터리 동기화 기능이 포함되어 있습니다.

이렇게 SharePoint® 리소스에 대한 받는 사람 개체를 프로비전하면 사용자는 문서 및 다른 정보를 전송할 때 Microsoft® Outlook® 주소록에서 SharePoint 라이브러리, 목록 및 그룹을 직접 선택할 수 있게 됩니다.

SharePoint 받는 사람 개체는 또한 Exchange Server 조직에서 메시지 전송과 형식 변환을 제어할 수 있는 방법을 제공합니다. 무엇보다 중요한 것은 스패머와 같은 무단 전송자가 Active Directory®의 메시지 배달 제한을 설정하여 SharePoint 라이브러리에 메시지를 전송하는 것을 방지한다는 것입니다.

그러나 SharePoint 디렉터리 관리 기능은 다소 제한적이며 이 기사는 기본 메시지 시스템이 Exchange Server 2003이라고 가정하고 작성했습니다. Exchange Server 2007이나 타사 메시징 시스템을 사용하고 있다면 기본 제공 디렉터리 관리 기능을 확장하거나 사용자 지정 솔루션으로 대체해야 원하는 수준의 상호 운용성을 달성할 수 있습니다.

이 칼럼에서는 SharePoint 디렉터리 관리 기능을 간단하게 검토하고 기존의 한계를 극복하는 방법을 논의해 보겠습니다. 디렉터리 관리 서비스는 가장 기본적인 사용자 요구 사항만 충족합니다. 다양한 메시징 시스템과 디렉터리 플랫폼을 포함하는 환경에서는 높은 유연성과 많은 기능이 필요합니다. 기본 제공 구성 요소를 사용자 지정 솔루션으로 대체하면 API나 가져오기 기능을 제공하는 모든 디렉터리 솔루션을 사용하여 SharePoint 받는 사람 정보를 동기화할 수 있습니다.

Exchange Server 2007과 호환되는 방법으로 SharePoint 받는 사람 정보를 동기화하는 방법을 살펴보면서 이를 확인해 보겠습니다. 비슷하게 사용자 지정 솔루션을 사용하여 IBM Lotus Notes나 다른 시스템과 받는 사람 정보를 동기화할 수 있습니다.

또한 Microsoft ILM(Identity Lifecycle Manager) 2007 Feature Pack 1에 포함되어 있는 Identity Information Server와 같은 메타디렉터리 서비스를 바탕으로 디렉터리 프로비전 프로세스를 중앙 집중화할 수 있습니다. 여기에서는 SharePoint를 ILM 2007과 통합하여 SharePoint 문서 라이브러리용 디렉터리 개체의 프로비전을 조정하는 방법을 살펴보겠습니다. 이 솔루션을 빌드하기 위한 도구, 소스 코드 및 단계별 지침은 technetmagazine.com의 코드 다운로드 섹션에 있는 이 칼럼의 첨부 자료에 포함되어 있습니다.

SharePoint 디렉터리 관리 서비스

거의 모든 구성 및 받는 사람 정보를 위해 Active Directory를 사용하는 Exchange Server와는 달리 SharePoint는 구성 및 콘텐츠 데이터베이스를 사용합니다. 따라서 SharePoint는 해당 데이터베이스에서 메일 사용이 가능한 라이브러리, 목록 및 그룹에 대한 받는 사람 정보를 디렉터리로 전파해야 합니다. 메시징 클라이언트는 일반적으로 디렉터리 개체를 사용하여 생성되는 주소록에서 받는 사람 정보를 찾습니다.

SharePoint에는 이러한 목적을 위한 디렉터리 관리 서비스가 기본적으로 포함되어 있습니다. 디렉터리 관리 서비스는 SharePoint 3.0 중앙 관리의 작업 페이지에 있는 받는 전자 메일 설정에서 구성할 수 있는 전자 메일 통합 웹 서비스(SharepointEmailWS.asmx)의 일부입니다. 그림 1에서는 기본 제공 디렉터리 관리 서비스가 작동하는 방법을 보여 줍니다.

fig01.gif

그림 1 SharePoint 디렉터리 관리 서비스 아키텍처 (더 크게 보려면 이미지를 클릭하십시오.)

디렉터리 관리를 위한 웹 팜을 설정하고 메시지를 수신하기 위해 EmailSettings.aspx 등을 사용하여 전자 메일 주소에 라이브러리, 목록 또는 그룹을 할당하면 암시적으로 전자 메일 통합 웹 서비스를 호출하여 Active Directory에서 해당하는 받는 사람 개체를 프로비전하게 됩니다. 먼저 SharePoint는 콘텐츠 데이터베이스에 전자 메일 주소 정보를 저장합니다. 그런 다음 SharePoint는 사용자를 대신하여 웹 응용 프로그램 풀 계정의 ID를 사용하여 전자 메일 통합 웹 서비스에 요청을 프로비전합니다. 프로비전 요청이 실패하면 콘텐츠 데이터베이스에는 전자 메일 주소 정보가 있지만 Active Directory에는 이에 해당하는 받는 사람 개체가 없게 됩니다.

추가 리소스

프로비전 요청이 실패하는 데는 여러 가지 이유가 있습니다. 가장 일반적인 이유는 IIS 메타데이터 액세스 권한이 없기 때문입니다. SharepointEmailWS.asmx는 응용 프로그램 풀 계정을 위한 웹 서비스로 설계되었기 때문에 이 웹 서비스는 호출자가 응용 프로그램 풀 계정인지 확인하기 위해 IIS 메타데이터를 검사하며 해당하지 않은 경우에는 사용자의 SharePoint 계정과 Active Directory 사용 권한 수준에 관계없이 액세스를 거부합니다.

SharepointEmailWS.asmx는 호출자의 ID로 이 액세스 검사를 수행하므로 호출 응용 프로그램 풀 계정은 자체 액세스 권한을 확인하기 위해 메타데이터에 대한 액세스가 필요합니다. 따라서 응용 프로그램 풀 계정에 상승된 사용 권한을 부여해야 이 작업이 성공합니다.

물론 웹 서버에서 상승된 사용 권한을 사용하면 보안에 대한 우려가 가중됩니다. 이보다는 ASP.NET 웹 서비스에 대한 액세스를 제어하는 것이 더 나은 방법입니다. 게다가 SharePoint는 중앙 관리 사이트에서 디렉터리 관리 서비스를 찾으려고 시도하지만 웹 팜에서는 노출 영역을 줄이기 위해 잠겨 있으므로 이 사이트를 영구적으로 사용할 수 없습니다. 따라서 사용자의 SharePoint 프로덕션 환경에서 기본 제공 디렉터리 관리 서비스를 사용하여 약화된 보안 구성을 수용해야 합니다.

기본 제공 디렉터리 관리 서비스는 밀접하게 연관된 클라이언트/서버 아키텍처에 기반을 두고 있기 때문에 추가적인 제한이 발생합니다. Microsoft.SharePoint.dll은 System.DirectoryServices.dll을 직접 사용하므로 프로비전 프로세스를 사용자 지정하기 위해 직접 논리를 구현할 수 없습니다. 예를 들어 기본 제공 디렉터리 관리 서비스 구현은 Exchange Server 2007을 지원하기 위한 모든 받는 사람 특성을 기록하지 않으며 특성 생성 규칙을 사용자 지정하기 위한 옵션이 없습니다.

논리를 직접 구현할 수 없다는 것은 가령 프로비전 프로세스를 사용자 지정하여 사용자 지정 승인을 구현하는 등의 작업이 불가능하다는 것을 의미합니다. SharePoint는 그룹용 승인 프로세스를 지원하지만 이 기능은 중앙 관리 사이트에 기반을 두고 있습니다. SharePoint 팜 관리자만 보류 중인 요청을 승인할 수 있지만 SharePoint 관리자가 항상 Active Directory 프로비전 프로세스를 승인하는 업무를 담당하는 것은 아닙니다.

이보다 더 중요한 것은 메일 사용이 가능한 문서 라이브러리와 목록에 대한 승인 프로세스가 없다는 것입니다. 디렉터리 관리를 설정하면 기본적으로 웹 팜의 모든 사이트 관리자에게 Active Directory에 메일 사용이 가능한 연락처와 그룹을 만들 수 있는 권한이 부여됩니다. 웹 팜의 받는 사람 개체는 모두 동일한 OU에 배치되므로 조직 구성 단위(OU)를 기반으로 받는 사람 관리를 구성하는 것도 불가능합니다.

디렉터리 관리 서비스는 SharePoint OU에서 받는 사람 개체를 찾으므로 받는 사람 개체를 다른 OU로 옮길 수 없으며 SharePoint 중앙 관리 응용 프로그램 풀 계정에 Active Directory에 대한 관리 권한을 부여해야 합니다. 또한 SharePoint의 Active Directory 간의 양방향 동기화를 구현할 수 있는 방법이 없습니다. Active Directory에서 개체 특성을 변경해도 변경 내용이 SharePoint 환경으로 전파되지 않습니다.

사용자 지정 디렉터리 관리 서비스

지금까지 기본 제공 디렉터리 관리 서비스에 추가적인 유연성을 위한 여지가 있다는 것을 설명했으므로 다음은 몇 가지 대안을 살펴보겠습니다. 다행스러운 것은 SharePoint는 여러분이 직접 디렉터리 관리 서비스를 구현하도록 허용한다는 것입니다. SharePoint 3.0 중앙 관리의 작업 페이지에 있는 받는 전자 메일 설정에서 여러분의 웹 서비스를 원격 디렉터리 관리 서비스로 등록하기만 하면 됩니다.

사용자 지정 웹 서비스를 배포하고 등록하는 데 대한 자세한 단계별 지침은 첨부 자료에서 "Directory Integration Based on a Custom Directory Management Service.xps" 워크시트를 참조하십시오. 또한 필자의 웹 서비스를 보면 Active Directory에서 cmdlet이나 Exchange 관리 도구를 사용하지 않고 Exchange Server 2007과 호환되는 받는 사람 개체를 프로비전하는 방법을 알 수 있습니다. 해당하는 소스 코드는 EmailIntegrationService 폴더에 있습니다. 그림 2에는 솔루션 아키텍처가 나와 있습니다.

fig02.gif

그림 2 사용자 지정 디렉터리 관리 서비스 아키텍처 (더 크게 보려면 이미지를 클릭하십시오.)

사용자 지정 웹 서비스의 인터페이스는 SharePoint SDK에 문서화된 내용에 따라 디렉터리 관리 서비스 인터페이스를 준수해야 합니다. MSDN® 웹 사이트(msdn.microsoft.com)에서 "SharepointEmailWS"에 대해서 검색해 보면 필요한 세부 사항을 찾을 수 있습니다. 첨부 자료의 EmailIntegrationService\App_Code 폴더에 있는 Service.cs 파일도 확인해 보십시오. 이 파일은 필요한 웹 서비스 인터페이스를 구현하며, Active Directory 개체를 프로비전하는 실제 코드는 SPRecipient.cs에 있습니다. 예를 들어 SPRecipient.cs의 UpdateRecipientAttributes 함수는 필요한 Exchange Server 2007 특성을 생성합니다. SPRecipient.cs는 직접 사용자 지정 디렉터리 관리 서비스를 개발하기 위해 반드시 대체해야 하는 코드 파일입니다.

사용자 지정 디렉터리 관리 서비스는 상승된 사용 권한이라는 요구 사항을 극복하고 SharePoint를 타사 디렉터리나 메시징 시스템과 통합하기 위한 좋은 도구입니다. 응용 프로그램 풀 계정에 대한 웹 액세스를 제한하기 이해 IIS 메타데이터를 확인할 필요는 없으며 <authorization> 섹션을 웹 서비스의 web.config 파일(사용 예는 첨부 자료 참조)에 추가하면 됩니다.

그러나 SharePoint가 여러분의 디렉터리 관리 서비스를 호출할지 여부와 호출하는 시점을 제어할 수 없기 때문에 약간의 문제가 남아 있습니다. 무엇보다 SharePoint는 여러분이 메일 사용이 가능한 문서 라이브러리나 목록을 삭제할 때 디렉터리 관리 서비스를 호출하지 않으므로 잘못된 받는 사람 개체가 Active Directory에 남게 됩니다. 기본 제공 디렉터리 관리 서비스나 사용자 지정 솔루션 중 어떤 것을 사용하더라도 Active Directory의 받는 사람 정보가 SharePoint 리소스와 일치한다고 보장할 수 없습니다.

SharePoint와 ILM

안정적인 디렉터리 통합을 달성하려면 ILM과 같은 전문적인 디렉터리 관리 패키지를 배포하는 것을 고려할 수 있습니다. 이 시스템은 끌어오기 기반 디렉터리 동기화 모델을 사용합니다. 관리 에이전트는 해당하는 연결된 원본에서 정보를 끌어오고, 공용 메타디렉터리로 이를 가져온 다음, 메타디렉터리에서 해당 연결된 시스템으로 정보를 내보냅니다. 원본 시스템은 일반적으로 자체 정보를 메타디렉터리로 밀어넣지 않습니다. 정보를 끌어옴으로써 각 동기화 주기에서 일관성을 보장할 수 있습니다.

ILM을 사용할 때의 다른 혜택으로는 Active Directory, Lotus Notes 및 다양한 다른 시스템을 지원하는 여러 관리 에이전트가 기본적으로 제공된다는 것입니다. SharePoint 정보를 여러분의 환경에 있는 다른 지원되는 디렉터리 플랫폼과 동기화하려면 SharePoint용 사용자 지정 관리 에이전트만 구현하면 됩니다.

SharePoint에서 원하는 정보를 검색하고, 가져오기 파일에 정보를 저장하며, 가져온 정보를 메타디렉터리로 전송하는 논리를 구현해야 합니다. 그러나 메타디렉터리에서 이러한 정보를 Active Directory나 다른 디렉터리 플랫폼으로 내보내는 논리는 구현할 필요가 없습니다. 그림 3에는 ILM을 사용하여 SharePoint에서 Active Directory로의 동기화를 구현하는 방법이 나와 있습니다. 디렉터리 개체용 SharePoint 리소스를 프로비전하여 다른 방향으로 동기화를 달성하는 것도 가능하지만 이러한 기능은 불필요하거나 선택적입니다.

fig03.gif

그림 3 ILM(Identity Lifecycle Manager) 기반 디렉터리 통합 (더 크게 보려면 이미지를 클릭하십시오.)

SharePoint 관리 에이전트 개발하려는 경우 Alex Tcherniakhovski의 기사 "SharePoint Services 목록으로 Connecting ILM 2007 연결(blogs.msdn.com/alextch/archive/2007/09/02/wsslistsandilm.aspx)"을 참조하면 시작하는 데 도움이 될 것입니다. Alex는 또한 문서 라이브러리에 제출된 InfoPath® 기반 프로비전 요청을 사용하는 ILM 기반 디렉터리 관리 솔루션을 만드는 방법도 보여 주고 있습니다. Alex의 관리 에이전트는 문서 라이브러리에서 승인된 모든 요청을 검색한 다음 연결된 디렉터리로 내보낼 수 있는 해당 메타디렉터리 개체를 만듭니다.

그러나 기본적으로 SharePoint는 목록이나 그룹을 메일이 가능하도록 설정해도 InfoPath 기반 프로비전 요청을 생성하지 않습니다. 사용자 지정 디렉터리 관리 서비스를 통해 이를 해결할 수 있지만 이렇게 하면 SharePoint가 모든 상황에서 디렉터리 관리 서비스를 호출하지는 않기 때문에 앞에서 언급한 대로 일관성 문제가 발생합니다. 따라서 관리 에이전트가 원하는 SharePoint 받는 사람 정보를 사이트 컬렉션의 목록과 그룹에서 직접 검색하는 방법을 사용하는 것이 좋습니다. 승인 프로세스가 필요하다면 관리 에이전트에서 새로운 리소스를 위한 InfoPath 기반 프로비전 요청을 생성한 다음 모든 승인 요청을 처리하면 됩니다.

SharePoint 정보를 검색하는 데는 몇 가지 방법이 있습니다. 즉, 콘텐츠 데이터베이스에서 직접 정보를 읽거나 SharePoint 개체 모델을 사용하거나 또는 SharePoint 웹 서비스를 활용할 수 있습니다.

데이터베이스 구조가 향후에 변경되면 디렉터리 관리 솔루션에 문제가 발생하므로 콘텐츠 데이터베이스에 직접 액세스하는 방법은 사용하지 않는 것이 좋습니다.

여러분의 관리 에이전트에서 SharePoint 개체 모델을 직접 사용하는 것도 비슷한 이유로 까다롭습니다. 개체 모델을 위해 로컬로 코드를 실행해야 하지만 환경에 있는 모든 SharePoint 팜의 웹 서버에 ILM을 설치하면 디렉터리 관리 인프라가 복잡해집니다.

SharePoint 웹 서비스를 사용하는 것을 고려할 수 있지만 SharePoint 웹 서비스를 통해서는 SharePoint 그룹에 대한 전자 메일 주소 정보나 받는 전자 메일 서버 표시 주소와 같은 원하는 정보를 쉽게 액세스할 수 없으므로 다른 문제가 발생합니다.

결국에는 SharePoint 개체 모델을 사용하여 원하는 정보를 검색하고, 이를 XML 문서 형식으로 호출자에 반환하는 사용자 지정 SharePoint 웹 서비스를 구현하는 것이 최적의 선택입니다. 이제 그림 3에 나와 있는 것처럼 ILM 배포를 중앙 집중화하고 사용자 지정 SharePoint 웹 서비스의 개별 인스턴스를 통해 원하는 수의 팜과 사이트 컬렉션을 통합할 수 있습니다.

ILM 기반 디렉터리 통합을 사용하더라도 사용자 지정 디렉터리 관리 서비스의 필요성이 사라지는 것이 아니라는 점에 주의할 필요가 있습니다. ILM이 디렉터리 개체를 프로비전하므로 이 사용자 지정 서비스는 아무 작업을 수행할 필요가 없지만 SharePoint 3.0 중앙 관리에서 디렉터리 관리를 수행하려면 사용자 지정 서비스를 제공해야 합니다. 그렇지 않으면 그룹에 전자 메일 주소를 할당하는 등의 작업을 할 수 없습니다. 그림 4에는 결과 솔루션 아키텍처가 나와 있습니다.

fig04.gif

그림 4 웹 서비스 기반 SharePoint 디렉터리 통합 (더 크게 보려면 이미지를 클릭하십시오.)

web.config 파일의 OpMode 매개 변수를 <add key="OpMode" value="dummy"/>와 같이 설정하여 첨부 자료에 포함되어 있는 사용자 지정 디렉터리 관리 서비스를 더미 서비스로 변경할 수 있습니다. 이 구성에서 사용자 지정 서비스는 프로비전 호출에 대한 응답으로 아무 작업도 수행하지 않고 항상 SUCCESS를 반환합니다.

또한 사용자 지정 서비스는 SharePoint 관리 에이전트가 NetBIOS 기반 사용자 이름으로 고유 이름을 확인하는 데 필요한 ResolveUsers 메서드를 공개합니다. 이 과정은 그룹을 프로비전할 때 필수 단계입니다. SharePoint는 NetBIOS 기반 사용자 계정 이름의 목록으로 그룹 등록 정보를 반환하지만 Active Directory에는 고유 이름이 필요합니다. 이것으로 끝입니다. 최종 솔루션을 배포하는 데 대한 자세한 내용은 첨부 자료에서 "Configuring Directory Integration based on ILM 2007.xps"를 참조하십시오.

WSS 3.0과 MOSS 2007에는 SharePoint를 Exchange Server 2003과 통합하여 메시징 기반 크로스 플랫폼 공동 작업을 구현하는 디렉터리 관리 서비스가 포함되어 있습니다.

하지만 몇 가지 제한 사항이 있습니다. 사용자가 기본 제공 디렉터리 관리 서비스를 사용자 지정 솔루션으로 대체해야 합니다. ILM과 같은 전문 디렉터리 관리 솔루션을 사용하여 SharePoint를 디렉터리 관리 인프라로 통합할 수도 있습니다. 이렇게 하면 높은 수준의 유연성을 제공할 수 있으며 끌어오기 기반 동기화 모델에서 정보의 일관성을 보장하는 데 도움이 됩니다.

Pav Cherny는 공동 작업 및 통합 커뮤니케이션을 위한 Microsoft 기술을 전문으로 하는 IT 전문가이자 저술가입니다. IT 운영과 시스템 관리를 주로 다루는 백서, 제품 설명서 및 서적 등을 출간한 Pav는 문서 관리 및 지역화 서비스를 전문으로 하는 Biblioso Corporation의 사장입니다.