IIS 7의 사용자 계정과 그룹에 대한 이해

등록일시: 2006-11-17 10:42,  수정일시: 2013-12-09 10:27
조회수: 10,512
이 문서는 IIS 기술을 널리 알리고자 하는 개인적인 취지로 제공되는 번역문서입니다. 이 문서에 대한 모든 저작권은 마이크로소프트에 있으며 요청이 있을 경우 언제라도 게시가 중단될 수 있습니다. 번역 내용에 오역이 존재할 수 있고 주석은 번역자 개인의 의견일 뿐이며 마이크로소프트는 이에 관한 어떠한 보장도 하지 않습니다. 번역이 완료된 이후에도 대상 제품 및 기술이 개선되거나 변경됨에 따라 원문의 내용도 변경되거나 보완되었을 수 있으므로 주의하시기 바랍니다.

서론

이전 버전의 IIS에는 설치시에 생성되는 IUSR_MachineName라는 로컬 계정이 존재했습니다. 이 IUSR_MachineName 계정은 익명 인증이 활성화되어 있는 경우 IIS에 의해서 기본 신원계정으로 사용되며, FTP 서비스와 HTTP 서비스 모두 이 계정을 사용했습니다. 그리고, 응용 프로그램 풀의 신원 계정으로 사용되는 모든 계정들을 포괄하기 위한 용도인 IIS_WPG라는 그룹도 존재했습니다. IIS가 설치되는 동안 시스템에 존재하는 모든 적절한 리소스에는 IIS_WPG 그룹에 대한 올바른 권한 모음이 설정되었습니다. 그래서, 관리자들은 새로운 응용 프로그램 풀 계정을 생성하면 그 계정을 IIS_WPG 그룹에 추가해야 했었습니다.

이 모델도 잘 동작하기는 했지만 대부분의 설계가 그런 것처럼 단점도 존재했는데, 그 중에서도 IUSR_MachineName 계정과 IIS_WPG 그룹이 자신이 생성된 시스템에 국한된 계정이라는 점이 가장 큰 단점이었습니다. Windows의 모든 계정들과 그룹들은 다른 계정들과 구분되는 SID(Security IDentifier)라는 유일한 번호를 부여받는데, ACL이 생성될 때 이 SID가 사용됩니다. IIS의 기존 버전에서는 metabase.xml 파일에 IUSR_MachineName 계정 정보가 저장되도록 설계됐었는데, metabase.xml 파일을 한 머신에서 다른 머신으로 복사하더라도, 대상 머신의 IUSR_MachineName 계정은 본래 머신의 계정과 다른 SID를 갖고 있기 때문에 IIS가 곧바로 동작하지 않았습니다. 게다가, 머신과 머신간의 SID가 서로 다르므로 'xcopy /o' 명령만으로는 한 머신에서 다른 머신으로 ACL을 복사할 수도 없습니다. 도메인 계정을 사용하는 방법도 있지만, 그러려면 네트워크 기반 구조에 엑티브 디렉터리를 추가해야만 합니다. 그리고, IIS_WPG 그룹도 권한과 관련된 비슷한 문제점을 갖고 있었습니다. 만약 어떤 머신의 파일 시스템에 IIS_WPG 그룹에 대한 ACL을 설정한 다음, 'xcopy /o' 명령을 사용해서 또 다른 머신으로 복사를 시도하면 그 작업은 실패하게 될 것입니다. IIS 팀에서는 이런 문제점에 대한 피드백을 받아들여 내장 계정과 그룹을 사용해서 IIS 7을 개선했습니다.

내장 계정과 그룹은 운영체제 시스템에 의해 언제나 동일한 SID를 보장받습니다. 그리고, IIS는 이를 더욱 적극적으로 받아들여 새로운 계정과 그룹의 실제 이름이 결코 지역화되지 않도록 보장합니다. 가령, 설치된 Windows의 언어와 관계 없이 언제나 IIS 계정의 이름은 IUSR가 되고 그룹의 이름은 IIS_IUSRS가 됩니다.

이를 정리하면, IIS 7에서는:

  • IUSR 내장 계정이 기존의 IUSR_MachineName 계정을 대체합니다.
  • IIS_IUSRS 내장 그룹이 기존의 IIS_WPG 그룹을 대체합니다.

내장 계정인 IUSR 계정은 비밀번호가 필요 없습니다. 그리고, 논리적으로 이 계정은 NETWORKSERVICE 계정이나 LOCALSERVICE 계정과 동일한 것으로 간주할 수 있습니다. 다음 섹션에서 IUSR 계정과 IIS_IUSRS 그룹에 대해서 보다 자세하게 살펴보도록 하겠습니다.

새로운 IUSR 계정에 대한 이해

앞에서 설명했던 것처럼 IIS 7에서는 IUSR 계정이 IUSR_MachineName 계정을 대체합니다. 그러나, IUSR_MachineName 계정도 여전히 생성되고 사용되는데 이는 오직 FTP 서버가 설치된 경우에만 해당됩니다. 만약, FTP 서버가 설치되지 않는다면 이 계정은 결코 생성되지 않을 것입니다.

IUSR 내장 계정은 비밀번호를 요구하지 않으며 익명 인증이 활성화된 경우, 기본 신원계정으로 사용됩니다. applicationHost.config 파일을 살펴보면 다음과 같이 정의된 부분을 쉽게 찾아보실 수 있을 것입니다.

<anonymousAuthentication enabled="true" userName="IUSR" defaultLogonDomain="" />

이 부분은 모든 익명 인증 요청에 대해서 이 새로운 내장 계정을 사용하기 원한다는 것을 IIS에게 말해줍니다. 이 결과로 얻을 수 있는 커다란 이점은 다음과 같습니다.

  • 탐색기나 그 밖의 다양한 명령 프롬프트 도구들을 사용해서 IUSR 계정에 대한 파일 시스템 권한을 설정할 수 있습니다.
  • 더 이상 IUSR 계정의 비밀번호 만료에 대해서 걱정할 필요가 없습니다.
  • 파일들을 소유권 정보와 ACL 정보까지 포함해서 xcopy /o 명령을 통해 다른 머신에 완벽하게 복사할 수 있습니다.

가장 중요한 점은 IUSR 계정이 LOCALSERVICE 계정과 유사하게 네트워크에서 익명으로 동작한다는 사실입니다. NETWORKSERVICE 계정과 LOCALSYSTEM 계정은 머신의 자격 증명으로 동작할 수 있지만 IUSR 계정은 권한 승격으로 인해서 그럴 수가 없습니다. 만약, 익명 계정에 네트워크 권한을 부여하고자 한다면 기존 버전에서 익명 인증을 위해 작업했던 것처럼 새로운 계정을 생성하고 수작업으로 사용자 이름과 비밀번호를 설정해야 합니다. IIS 관리자를 사용해서 이 작업을 처리하려면:

  • 시작을 클릭한 다음 'INetMgr.exe'를 입력하고 엔터키를 누릅니다. (만약, 보안 경고 대화 상자가 나타난다면 "계속' 버튼을 선택하여 권한을 승격시키십시오.)
  • "Connections" 섹션에서 머신 이름이 적힌 노드 좌측에 위치한 "+" 버튼을 클릭합니다.
  • 웹 사이트 노드에서 관리하고자 하는 사이트를 더블 클릭합니다.
  • "Feature Name"이 "Authentication"인 항목을 더블 클릭합니다.
  • "Anonymous Authentication"을 선택하고, 화면 오른편에 위치한 "Actions" 섹션에서 "Edit" 버튼을 클릭해서 "Edit Anonymous Authentication Credentials" 대화 상자를 불러옵니다.
  • "Specific User" 옵션을 선택하고 그 옆의 "Set" 버튼을 누릅니다.
  • 원하는 사용자 이름과 비밀번호, 비밀번호 확인을 입력하고 "OK" 버튼을 누릅니다.

새로운 IIS_IUSRS 그룹에 대한 이해

이미 앞에서 설명했던 것처럼 IIS_IUSRS 그룹은 IIS_WPG 그룹을 대체하기 위한 목적으로 만들어 졌습니다. 이 내장 그룹은 필요한 모든 파일과 시스템 리소스에 대한 접근 권한을 갖고 있으며, 그렇기 때문에 어떤 계정이 이 그룹에 포함되면 아무 문제 없이 응용 프로그램 풀 신원 계정으로 동작할 수 있게 됩니다.

내장 IUSR 계정의 경우와 마찮가지로 내장 IIS_IUSRS 그룹도 몇 가지 XCOPY 배포의 문제점들을 해결해줍니다. 만약, IIS_WPG 그룹(IIS 6.0 시스템에서 사용 가능한)에 대해서 파일에 권한을 설정하고 그 파일들을 다른 Windows 머신에 복사하려고 한다면, 이 그룹의 SID는 머신들마다 다르므로 사이트 구성 설정은 깨지게 될 것입니다.

그러나, IIS 7에서 IIS_IUSRS 그룹의 SID는 롱혼이 실행되는 모든 시스템에서 동일하기 때문에, 'xcopy /o' 명령을 사용해서 머신에서 머신으로 파일들을 복사할 때 소유권 정보와 ACL 정보가 그대로 유지됩니다. 결과적으로 XCOPY 배포가 극단적으로 쉬워지는 것입니다.

고객들이 요청한 두 번째 사항은 '응용 프로그램 풀의 신원 계정을 설정하면 IIS가 사용자를 대신하여 자동으로 필요한 모든 변경작업을 대신 처리해달라.'라는 것이었습니다. IIS 팀에서는 이 피드백을 수용해서 IIS 7에서는 이 작업을 보다 편리하게 만들었습니다. IIS가 작업자 프로세스를 시작할 때, 이 작업에는 작업자 프로세스에서 사용될 토큰의 생성이 필요합니다. 이제는 이 토큰이 생성될 때, IIS가 런타임에 자동으로 IIS_IUSRS 그룹의 계정들을 작업자 프로세스 토큰에 추가합니다. 결과적으로 '응용 프로그램 풀 신원 계정'으로 동작하도록 정의된 계정을 더 이상 명시적으로 IIS_IUSRS 그룹에 포함시킬 필요가 없어졌습니다. IIS 팀에서는 이런 변화가 시스템 설정을 보다 덜 번거롭게 도와주고 전반적인 작업을 편리하게 만들어줄 것이라고 믿고 있습니다.

만약, 이 새로운 기능을 비활성화시키고 직접 IIS_IUSRS 그룹에 계정을 추가하는 것을 선호한다면, 언제라도 manualGroupMembership 속성의 값을 'true'로 설정해서 이 기능을 비활성화시킬 수 있습니다. 다음은 defaultAppPool을 대상으로 해당 설정을 적용한 예입니다.

<applicationPools>
  <add name="DefaultAppPool">
    <processModel manualGroupMembership="true" />
  </add>
</applicationPools>