애플리케이션 풀 ID
작성자: Thomas Deml
자체 서버 또는 클라우드에서 사이트를 실행하든 보안은 우선 순위 목록의 맨 위에 있어야 합니다. 그렇다면 IIS에 애플리케이션 풀 ID라는 보안 기능이 있다는 소식을 듣고 기뻐할 것입니다. 이 기능은 Windows Server 2008 및 Windows Vista의 SP2(서비스 팩 2)에서 도입되었습니다. 애플리케이션 풀 ID를 사용하면 도메인 또는 로컬 계정을 만들고 관리할 필요 없이 고유한 계정으로 애플리케이션 풀을 실행할 수 있습니다. 애플리케이션 풀 계정의 이름은 애플리케이션 풀의 이름에 해당합니다. 아래 이미지는 DefaultAppPool ID로 실행되는 IIS 작업자 프로세스(W3wp.exe)를 보여줍니다.
애플리케이션 풀 ID 계정
IIS 6.0 및 IIS 7의 작업자 프로세스는 기본적으로 네트워크 서비스로 실행됩니다. 네트워크 서비스는 기본 제공 Windows ID입니다. 암호가 필요하지 않으며 사용자 권한만 있습니다. 즉, 상대적으로 권한이 낮습니다. 권한이 낮은 계정으로 실행하는 것은 악의적인 사용자가 전체 시스템을 인수하는 데 소프트웨어 버그를 사용할 수 없기 때문에 좋은 보안 방법입니다.
그러나 점점 더 많은 Windows 시스템 서비스가 네트워크 서비스로 실행되기 시작하면서 시간이 지남에 따라 문제가 발생했습니다. 네트워크 서비스로 실행되는 서비스가 동일한 ID로 실행되는 다른 서비스를 변조할 수 있기 때문입니다. IIS 작업자 프로세스는 기본적으로 타사 코드(클래식 ASP, ASP.NET, PHP 코드)를 실행하므로 IIS 작업자 프로세스를 다른 Windows 시스템 서비스와 격리하고 고유한 ID로 IIS 작업자 프로세스를 실행해야 합니다. Windows 운영 체제는 IIS가 각 애플리케이션 풀에 대해 고유한 ID를 만들 수 있도록 하는 "가상 계정"이라는 기능을 제공합니다. 가상 계정에 대한 자세한 내용은 서비스 계정 단계별 가이드를 참조 하세요.
IIS 애플리케이션 풀 ID 구성
Windows Server 2008 R2 또는 이후 버전의 IIS에서 IIS 7.5를 실행하는 경우 새 ID를 사용하기 위해 아무 작업도 수행할 필요가 없습니다. 만드는 모든 애플리케이션 풀에 대해 새 애플리케이션 풀의 Identity 속성은 기본적으로 ApplicationPoolIdentity로 설정됩니다. WAS(IIS 관리 프로세스)는 새 애플리케이션 풀의 이름으로 가상 계정을 만들고 기본적으로 이 계정에서 애플리케이션 풀의 작업자 프로세스를 실행합니다.
Windows Server 2008에서 IIS 7.0을 실행할 때 이 가상 계정을 사용하려면 만든 애플리케이션 풀의 ID 속성을 ApplicationPoolIdentity로 변경해야 합니다. 방법은 다음과 같습니다.
IIS 관리 콘솔(INETMGR)을 엽니다. MSC).
컴퓨터 노드 아래에 있는 애플리케이션 풀 노드를 엽니다. 자동으로 생성된 애플리케이션 풀 ID에서 실행되도록 변경하려는 애플리케이션 풀을 선택합니다.
애플리케이션 풀을 마우스 오른쪽 단추로 클릭하고 고급 설정을 선택합니다 .
ID 목록 항목을 선택하고 줄임표(점 3개가 있는 단추)를 클릭합니다.
다음과 같은 대화 상자가 나타납니다.
기본 제공 계정 단추를 선택한 다음 콤보 상자에서 ID 유형 ApplicationPoolIdentity 를 선택합니다.
명령줄을 사용하여 동일한 단계를 수행하려면 다음과 같은 방법으로 appcmd 명령줄 도구를 호출할 수 있습니다.
%windir%\system32\inetsrv\appcmd.exe set AppPool <your AppPool> -processModel.identityType:ApplicationPoolIdentity
리소스 보안
새 애플리케이션 풀을 만들 때마다 IIS 관리 프로세스는 애플리케이션 풀 자체의 이름을 나타내는 SID(보안 식별자)를 만듭니다. 예를 들어 이름이 "MyNewAppPool"인 애플리케이션 풀을 만드는 경우 이름이 "MyNewAppPool"인 보안 식별자가 Windows 보안 시스템에 만들어집니다. 이 시점부터 이 ID를 사용하여 리소스를 보호합니다. 그러나 ID는 실제 사용자 계정이 아닙니다. Windows 사용자 관리 콘솔에 사용자로 표시되지 않습니다.
Windows 탐색기에서 파일을 선택하고 파일의 ACL(액세스 제어 목록)에 "DefaultAppPool" ID를 추가하여 이 작업을 시도할 수 있습니다.
Windows 탐색기를 엽니다.
파일 또는 디렉터리를 선택합니다.
파일을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다 .
보안 탭을 선택합니다.
편집 단추를 클릭한 다음 추가 단추를 클릭합니다.
위치 단추를 클릭하고 컴퓨터를 선택했는지 확인합니다.
선택할 개체 이름 입력: 텍스트 상자에 IIS AppPool\DefaultAppPool 을 입력합니다.
이름 확인 단추를 클릭하고 확인을 클릭합니다.
이렇게 하면 선택한 파일 또는 디렉터리도 DefaultAppPool ID 액세스를 허용합니다.
ICACLS 도구를 사용하여 명령줄을 통해 이 작업을 수행할 수 있습니다. 다음 예제에서는 DefaultAppPool ID에 대한 모든 권한을 제공합니다.
ICACLS test.txt /grant "IIS AppPool\DefaultAppPool:F"
자세한 내용은 ICACLS를 참조하세요.
Windows 7 및 Windows Server 2008 R2 이상 버전의 Windows에서 기본값은 애플리케이션 풀을 애플리케이션 풀 ID로 실행하는 것입니다. 이를 위해 이름이 "AppPoolIdentity"인 새 ID 형식이 도입되었습니다. "AppPoolIdentity" ID 유형(Windows 7 및 Windows Server 2008 R2 이상의 기본값)을 선택하면 IIS는 작업자 프로세스를 애플리케이션 풀 ID로 실행합니다. 다른 모든 ID 형식에서는 보안 식별자가 프로세스의 액세스 토큰에만 삽입됩니다. 식별자를 삽입하는 경우 ApplicationPoolIdentity에 대한 콘텐츠는 여전히 ACLed일 수 있지만 토큰의 소유자는 고유하지 않을 수 있습니다. 이 개념에 대한 자세한 내용은 IIS 7의 새로운 기능 - 앱 풀 격리 블로그 게시물을 참조하세요.
네트워크 액세스
도메인 환경에서 네트워크 서비스 계정을 사용하면 큰 이점이 있습니다. 네트워크 서비스로 실행되는 작업자 프로세스는 머신 계정으로 네트워크에 액세스합니다. 컴퓨터 계정은 컴퓨터가 도메인에 가입될 때 생성됩니다. 다음과 같습니다.
<domainname>\<machinename>$,
예시:
mydomain\machine1$
이에 대한 좋은 점은 파일 공유 또는 SQL Server 데이터베이스와 같은 네트워크 리소스가 이 컴퓨터 계정 액세스를 허용하도록 ACLed가 될 수 있다는 것입니다.
애플리케이션 풀 ID는 어떻습니까?
좋은 소식은 애플리케이션 풀 ID도 컴퓨터 계정을 사용하여 네트워크 리소스에 액세스한다는 것입니다. 변경할 필요가 없습니다.
애플리케이션 풀 ID와 호환성 문제
지침 설명서
애플리케이션 풀 ID와의 가장 큰 호환성 문제는 네트워크 서비스에 대한 ACL 리소스, 즉 IIS 6.0 및 IIS 7.0에서 DefaultAppPool의 기본 ID를 명시적으로 권장하는 이전 지침 문서일 것입니다. 고객은 IIS 7.5 이상에서 실행할 때 "IIS AppPool\DefaultAppPool"(또는 다른 애플리케이션 풀 이름)에 대한 스크립트를 ACL로 변경해야 합니다(이 작업을 수행하는 방법은 위의 예제 참조).
사용자 프로필
IIS는 Windows 사용자 프로필을 로드하지 않지만 특정 애플리케이션은 임시 데이터를 저장하기 위해 이 프로필을 활용할 수 있습니다. SQL Express는 이 작업을 수행하는 애플리케이션의 예입니다. 그러나 프로필 디렉터리 또는 레지스트리 하이브에 임시 데이터를 저장하려면 사용자 프로필을 만들어야 합니다. 네트워크 서비스 계정에 대한 사용자 프로필은 시스템에서 만들어졌으며 항상 사용할 수 있었습니다. 그러나 고유한 애플리케이션 풀 ID로 전환하면 시스템에서 사용자 프로필을 만들지 않습니다. 표준 애플리케이션 풀(DefaultAppPool 및 클래식 .NET AppPool)만 디스크에 사용자 프로필을 포함합니다. 관리자가 새 애플리케이션 풀을 만드는 경우 사용자 프로필이 만들어지지 않습니다.
그러나 원하는 경우 LoadUserProfile 특성을 "true"로 설정하여 사용자 프로필을 로드하도록 IIS 애플리케이션 풀을 구성할 수 있습니다.
요약
애플리케이션 풀 ID는 Windows Server 2008, Windows Vista 및 이후 버전의 Windows에 도입된 강력한 새로운 격리 기능입니다. IIS 애플리케이션을 더욱 안전하고 안정적으로 실행할 수 있습니다.