2012년 7월 16일 월요일

SharePoint 서비스 계정은 어떤 걸 사용해야 하나?

SharePoint라는 제품이 팜을 이루어 여러대의 머신에서 동작 하는 솔루션이다 보니 Setup시에 서비스용 계정들을 설정해야 하는 경우가 생깁니다.
처음으로 SharePoint를 설치 하는 분들의 경우엔 솔루션의 특성을 이해 하고 진행 하기 보단 일단 Setup을 해보고 설치 결과를 보고 싶어 하는 성향이 많아서 일단 Setup.exe를 돌리고 보는데요 ㅎㅎ - 이런 경우엔 "단독 실행"으로 설치 하시는 게 가장 효과적입니다.-

오늘은 기본으로 돌아가 SharePoint Setup에 필요한 계정에 대해서 확인해 보도록 하겠습니다.
SharePoint 설치를 제대로 하기 위해서는 다음과 같은 계정과 권한이 Active Directory, SQL Server, SharePoint 멤버 서버에 필요 합니다.

아래에 나오는 계정의 이름은 제가 임의로 결정한 것입니다. 계정의 이름 규칙이 있다면 적절히 바꿔 사용 하시면 됩니다.


SQL Server 서비스 계정 : SVC_SQL
SQL서버 서비스를 돌리는 계정입니다. SQL 서비스 계정을 다른 Windows서비스와 같이 System, Network Service, Local System 계정으로 돌릴 수 있지만 명시적으로 도메인 계정을 사용 하는 게 좋습니다. SharePoint서버와 다른 서버에서 SQL 서버가 돌아간다면 도메인 계정을 필수로 사용해야 합니다.


Setup 사용자 계정(사람) : SP_Admin
SharePoint 설치 패키지를 실행해서 SharePoint를 깔고 설정을 할 사람이 사용할 계정입니다.
Setup이 진행되는 동안 SQL database에 접근 하고 설치 하는 서버에 로컬 그룹을 만들기도 합니다. 그래서 SP_Admin계정은 SQL서버에 securityadmin과 dbcreator 권한이 있어야 하고 설치 하는 서버의 로컬 Administrators 그룹에 속해 있어야 합니다. 이 작업은 자동으로 되지 않기 때문에 SQL 서버에서 직접 권한을 할당하고 로컬 Administrators에다 넣어 줘야 합니다. 한가지 중요한 점은 Domain Admins 같은 도메인의 최고 권한이 필요 한 것이 아니라는 점입니다. 도메인 그룹은 Domain Users 그룹에만 있어도 됩니다.


Server Farm 계정 : SP_Farm
설치가 진행되는 동안 SP_Admin 계정으로 SharePoint 팜을 만들게 되는 데 이 팜은 SQL 서버의 DB형태로 만들어 집니다. 설치 이후 SharePoint가 SQL서버의 SharePoint 팜 database에 접근할 때 사용하는 서비스 계정이 SP_Farm입니다. 주로 중앙관리 사이트를 통해 이루어 지는 대부분의 작업이 이 서비스 계정을 통해 접근 하게 됩니다. IIS의 SharePoint 중앙관리 사이트 application pool 의 identity로 설정 되고 SharePoint Timer 서비스 계정도 이 계정으로 설정됩니다. SharePoint 가 깔리는 모든 서버의 로컬 Administrators 그룹에 이 SP_Farm 계정이 포함 되어 있어야 합니다.
이 작업은 "SharePoint 제품 설정 마법사(SharePoint Products Configuration Wizard)"가 설치 이후 돌아 갈 때 자동으로 됩니다.


웹 응용프로그램과 서비스 응용프로그램 Application Pool 계정 : SP_Service
각 웹 응용프로그램은 IIS의 application pool에서 돌아 가게 되는데 이 application pool의 identity가 SP_Service 같은 도메인 사용자 계정입니다. 이 계정은 SQL Server의 SharePoint content database 에 접근 할 때 사용 됩니다.
Office Web App이나 Search같은 서비스 응용프로그램도 웹 응용프로그램의 일종으로써 도메인 사용자 계정이 설정된 application pool에서 돌아가게 됩니다. 사용된 계정은 SharePoint 응용프로그램이 만들어 질 때 권한이 자동으로 할당 되게 됩니다.


검색 Crawler (indexer) 계정 : SP_Crawl
검색 Crawler 계정은 SharePoint 콘텐츠를 인덱싱 하는데 사용됩니다. 이 계정은 모든 SharePoint 콘텐츠에 "모두 읽기" 권한이 부여 됩니다. 만약 검색 원본이 SharePoint 콘텐츠가 아니라 공유 폴더 같은 경우엔 SP_Crawler 계정에 읽기 권한을 수동으로 할당 해 줘야 합니다.


사용자 프로필 동기화 계정 : SP_Sync
SharePoint 사용자 프로필 동기화 서비스는 Active Directory와 SharePoint간에 프로필 속성을 동기화 하는데 사용됩니다. 이 계정은 계정 정보를 읽어 올 때 도메인 수준에서 "디렉터리 변경 사항 복제(Replicate Directory Changes)" 권한이 필요 합니다. 그리고 이 서비스 계정이 팜 관리자 그룹이나 사용자 프로필 동기화 관리자 그룹에 들어 있어야 합니다.
만약 도메인의 NETBIOS이름과 도메인 이름이 다르다면 cn=configuration 컨테이너에도 "디렉터리 변경 사항 복제" 권한이 필요 합니다.
그리고 만약 SharePoint 서버에서 AD로 사용자 사진 속성을 AD의 ThumbnailPhoto같은 속성으로 overwrite해야 한다면 해당 AD개체의 ThumbnailPhoto에는 read권한 밖에 주어지지 않으므로 명시적으로 write권한을 추가 해 줘야 합니다.

이렇게 SharePoint 2010 에서 사용되는 계정을 정리 해 보았습니다. 뭐 Domain Admins에 들어 있는 계정 하나 만들어서 몽땅 그 계정 하나로 설정 해 버리면야 문제가 없어 보이긴 합니다만… 첫 번째 보안에 위험 하겠지요. 두 번째로는 그 계정 하나가 문제가 발생하면 SharePoint 전체 서비스가 중단되는 사태가 벌어 질 수도 있을 것입니다.
정확히 SharePoint 서비스가 어떤 작업을 하는지 확인하고 어떤 계정이 어떤 권한을 가져야 하는지 확인이 필요 할 것입니다.