블로그 이미지
by 피앙새

NOTICE

CALENDAR

«   2009/07   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

TAG CLOUD

  • Total : 1,266
  • Today : 0  | Yesterday : 0

CATEGORY

2SCOM(Windows_World) (18)
News (2)
Microsoft(MS) (16)

RECENT COMMENT

RECENT TRACKBACK

ARCHIVE

LINK



웹 응용 프로그램 격리
응용 프로그램 격리는 응용 프로그램이 서로 영향을 주고 받는 것을 막기 위해 프로세스 경계로 응용 프로그램을 분리하는 것입니다. 응용 프로그램 격리는 두 가지의 IIS 격리 모드에 따라 다르게 구성됩니다.

이 항목에서는 다음 정보를 설명합니다.

작업자 프로세스 격리 모드에서 웹 응용 프로그램 격리
IIS 5.0 격리 모드에서 웹 응용 프로그램 격리
작업자 프로세스 격리 모드에서 웹 응용 프로그램 격리
작업자 프로세스 격리 모드에서 IIS 6.0을 실행하는 경우 웹 응용 프로그램을 응용 프로그램 풀로 그룹화할 수 있습니다. 응용 프로그램 풀을 사용하면 응용 프로그램 그룹 및 이러한 응용 프로그램 그룹을 처리하는 작업자 프로세스에 특정 구성 설정을 적용할 수 있습니다. 응용 프로그램 풀에는 웹 디렉터리나 가상 디렉터리를 지정할 수 있습니다.

응용 프로그램 풀 내의 모든 응용 프로그램은 같은 작업자 프로세스를 공유합니다. 각 작업자 프로세스는 작업자 프로세스 실행 파일인 W3wp.exe의 개별 인스턴스로 작동하므로 응용 프로그램 풀을 처리하는 각 작업자 프로세스는 서로 분리됩니다. 따라서 한 웹 응용 프로그램이 실패해도 다른 응용 프로그램 풀에서 실행하는 응용 프로그램은 영향을 받지 않습니다.

다음 기능을 활용하도록 응용 프로그램을 구성하고 관리할 수 있습니다.

응용 프로그램 풀 상태 검색
작업자 프로세스 재생
웹 가든
프로세서 선호도
응용 프로그램 풀 ID
IIS_WPG 그룹
미리 정의된 계정
구성 가능한 계정
응용 프로그램 풀 상태 검색
IIS는 응용 프로그램 풀의 안정성(상태) 정도를 검색하여 수정 작업이 필요한지 여부를 확인합니다. 응용 프로그램 풀에 지정된 작업자 프로세스의 사용 가능한 모든 IIS 스레드가 차단되었거나 작업자 프로세스에서 IIS에 문제를 보고하면 World Wide Web 게시 서비스(WWW 서비스)가 비정상적으로 종료된 상태가 좋지 않은 작업자 프로세스를 검색할 수 있습니다.

작업자 프로세스 재생
작업자 프로세스 재생은 웹 응용 프로그램에 지정된 작업자 프로세스를 다시 시작하여 해당 웹 응용 프로그램을 자동으로 새로 고치는 프로세스로, 특히 응용 프로그램 코드를 수정할 수 없는 경우와 같이 문제가 있는 응용 프로그램을 원활하게 실행할 수 있게 합니다. 재생 이벤트가 발생하면 응용 프로그램 풀을 처리하고 있는 작업자 프로세스가 종료되고 WWW 서비스가 종료된 프로세스를 대신할 새 작업자 프로세스를 다시 시작합니다.

웹 가든
웹 가든은 여러 작업 프로세스를 실행하도록 구성된 응용 프로그램 풀입니다. 웹 가든 내의 작업자 프로세스는 특정 응용 프로그램에 도착한 요청을 공유하므로 응용 프로그램 풀에 들어 있는 응용 프로그램의 성능과 안정성이 향상됩니다.

프로세서 선호도
프로세서 선호도는 작업자 프로세스가 특정 마이크로프로세서 또는 CPU에서 실행되도록 하는 응용 프로그램 풀 속성으로, 특정 응용 프로그램 풀을 처리하는 모든 작업자 프로세스에 적용됩니다. 웹 가든 및 프로세서 선호도를 사용하는 고급 구성은 CPU의 클러스터를 특정 응용 프로그램 풀 전용으로 사용할 수 있는 다중 프로세서 컴퓨터에서 사용할 수 있습니다. 이 구성은 특정 네트워크 인터페이스 카드의 선호도를 특정 CPU로 설정하여 추가로 한 단계 더 구성할 수 있습니다.

응용 프로그램 풀 ID
응용 프로그램 풀 ID는 응용 프로그램 풀을 처리하는 작업자 프로세스가 프로세스 ID로 사용하는 사용자 계정입니다. 프로세스 ID는 프로세스가 실행되는 계정을 나타내는 데 사용되는 운영 체제 용어입니다. Microsoft® Windows NT® 기반 운영 체제에서 실행되는 모든 프로세스는 시스템 리소스에 대한 액세스를 제어하는 데 사용되는 프로세스 ID를 가지고 있습니다. 응용 프로그램 풀 ID는 미리 정의된 계정이나 사용자가 구성할 수 있는 계정에 지정할 수 있습니다.

ID 선택
응용 프로그램 풀 ID를 선택할 때는 응용 프로그램에서 필요로 하는 최소한의 권한을 가진 하나의 ID를 선택해야 합니다. ISAPI(인터넷 서버 응용 프로그램 인터페이스) 확장은 이와 같이 코딩된 경우 작업자 프로세스 ID로 쉽게 실행될 수 있습니다. 이 경우 ISAPI 확장에서 수행한 작업은 작업자 프로세스 ID의 컨텍스트에 존재합니다. 작업자 프로세스 ID를 LocalSystem과 같이 권한 수준이 높은 계정으로 설정하면 인증된 사용자의 범위 이상의 권한이 해당 응용 프로그램에 부여됩니다. 따라서 ISAPI 확장이 이런 방식으로 자신의 권한을 높이는 것을 막으려면 작업자 프로세스 ID를 권한 수준이 낮은 계정으로 설정하십시오. 이렇게 하면 응용 프로그램의 보안 침해를 차단할 수 있습니다.

응용 프로그램 풀 ID와 가장된 사용자와의 관계
가장을 사용하면 프로세스가 자신의 기본 ID와 다른 보안 자격 증명을 사용하여 실행되도록 할 수 있습니다. 응용 프로그램 풀 ID와 가장된 사용자는 자주 혼동되므로 응용 프로그램 풀 ID로 설정한 작업자 프로세스 ID와 가장된 사용자와의 관계를 이해하는 것이 중요합니다.

WWW 서비스에서 작업자 프로세스를 만들면 작업자 프로세스에 응용 프로그램 풀 ID에 연결된 프로세스 토큰이 만들어지는데 이 토큰에 의해 작업자 프로세스의 프로세스 ID가 설정됩니다. 기본적으로 작업자 프로세스에서 수행한 모든 작업은 이 작업자 프로세스 ID 계정의 컨텍스트에서 완료됩니다. 그러나 클라이언트 요청이 처리될 때는 요청을 처리하는 스레드가 요청 기간 동안 인증된 사용자의 토큰이라고도 하는 클라이언트에 연결된 토큰을 사용합니다. 이 방법을 가장이라고 합니다.

응용 프로그램에서 다음과 같이 동작합니다.

요청이 익명이면 인증된 사용자의 토큰이 구성된 익명 사용자에 연결됩니다. 기본적으로 사용되는 계정의 이름은 IUSR_machinename입니다.
요청이 익명이 아니면 인증된 사용자의 토큰이 사용자의 인증된 계정에 연결됩니다.
IIS가 URL을 지원하기 전에 인증된 사용자의 토큰은 요청 중인 리소스의 ACL(액세스 제어 목록)에 대해 확인됩니다. 또한 요청이 ASP와 같은 ISAPI 확장에 대한 것이면 작업자 프로세스는 인증된 사용자의 토큰을 가장 토큰으로서 ISAPI 확장을 호출하는 스레드에 적용합니다. ISAPI 확장이 요청을 처리하기 시작하면 이 가장 토큰이 해당 작업에 적용됩니다. 따라서 ISAPI 확장에서 수행하는 작업은 프로세스 ID가 아니라 인증된 사용자에 연결됩니다.

IIS 6.0 ID와 IIS 5.0 ID의 차이
작업자 프로세스는 IIS 5.0에 사용된 ID와 다른 프로세스 ID를 사용합니다. 이것은 IIS 5.0에서 마이그레이션된 응용 프로그램에 영향을 주며 프로세스 ID가 IWAM_ComputerName과 같은 특정 계정으로 실행되도록 합니다. 또한 IIS 5.0에서 만든 웹 응용 프로그램에서는 ID를 구성 요소 서비스에서 구성하지만 작업자 프로세스 격리 모드에서 실행하는 IIS 6.0에서는 ID를 IIS 관리자에서 구성합니다.

IIS_WPG 그룹
IIS_WPG 그룹은 IIS 6.0에서 제공하는 사용자 그룹입니다. IIS_WPG 그룹은 IIS에 필요한 최소한의 권한 집합을 제공하며, ID에 권한을 직접 할당하지 않아도 ID 계정에 대해 특정 사용자를 쉽게 사용할 수 있게 합니다. 계정이 IIS_WPG 그룹에 속해 있지 않고 적절한 사용 권한을 가지고 있지 않은 경우 작업자 프로세스를 시작할 수 없습니다.

미리 정의된 계정
미리 정의된 계정은 서비스 사용자 계정이라고도 하며 운영 체제에서 만듭니다. IIS에서는 응용 프로그램 풀 ID에 사용할 있도록 다음과 같은 미리 정의된 계정을 제공합니다.

NetworkService
LocalSystem
LocalService
기본적으로 이러한 계정은 IIS_WPG 그룹의 구성원이며, 응용 프로그램 풀 ID는 세 계정 중 권한이 가장 적은 NetworkService 계정으로 설정됩니다. 응용 프로그램을 구성한 다음 프로덕션 서버에 배포하기 전에 응용 프로그램의 보안 요구 사항과 미리 정의된 계정의 사용 권한 수준을 비교해 보는 것이 좋습니다.

구성 가능한 계정
이 옵션을 사용하는 경우 응용 프로그램 풀 ID에 사용할 로컬 컴퓨터나 도메인 사용자 이름과 암호를 지정해야 합니다. 지정된 계정은 IIS_WPG 사용자 그룹의 구성원이어야 합니다. 권장되는 방법은 아니지만 사용자 계정이 IIS_WPG 그룹에 속해 있지 않은 경우 작업자 프로세스에 필요한 리소스에 대한 ACL 설정을 수동으로 적용해야 합니다.

IIS 5.0 격리 모드에서 웹 응용 프로그램 격리
IIS 5.0 격리 모드에서 실행하는 경우 각 응용 프로그램에 대해 AppIsolated 속성 설정을 사용하여 격리를 구성할 수 있습니다. 격리에 사용할 수 있는 옵션은 다음과 같이 IIS 5.0을 실행할 때와 비슷합니다.

낮음(IIS 프로세스)   응용 프로그램이 Inetinfo.exe의 DLL로 프로세스 내에서 실행되고 프로세스 내에서 실행 중인 다른 응용 프로그램의 영향으로부터 보호되지 않습니다. 기본 응용 프로그램 ID(응용 프로그램이 실행되는 계정)는 LocalSystem입니다.
보통(풀링됨)   풀링된 모든 응용 프로그램이 DLLHost.exe의 한 인스턴스에 있는 DLL로 실행되고 낮음 또는 높음 격리에서 실행 중인 응용 프로그램의 영향으로부터 보호됩니다. 그러나 풀링된 모든 응용 프로그램은 같은 프로세스에서 실행되므로 이들간의 영향으로부터는 보호되지 않습니다. 기본 응용 프로그램 ID는 IWAM_ComputerName입니다.
높음(격리됨)   응용 프로그램이 DLLHost.exe의 DLL로 실행되고 다른 응용 프로그램의 영향으로부터 보호됩니다. 또한 같은 컴퓨터에서 실행되는 다른 모든 응용 프로그램도 높음 격리에서 실행되는 응용 프로그램의 영향으로부터 보호됩니다. 기본 응용 프로그램 ID는 IWAM_ComputerName입니다.
보안 고려 사항
IIS 5.0 격리 모드에서 IIS 6.0을 실행하면 낮음 격리로 설정된 웹 응용 프로그램이 LocalSystem ID로 실행됩니다. LocalSystem 계정은 해당 컴퓨터에 있는 모든 리소스에 액세스할 수 있습니다. 즉, 악의적인 사용자가 낮음 격리로 설정된 웹 응용 프로그램의 침입에 성공하면 이 공격자에게 로컬 컴퓨터에 있는 모든 자산이 노출됩니다.

격리가 중간이나 높음으로 설정된 웹 응용 프로그램은 IWAM_ComputerName을 기본 ID로 실행됩니다.

성능 고려 사항
IIS를 IIS 5.0 격리 모드에서 실행하는 경우 응용 프로그램을 높음 격리 구성에서 실행하면 성능이 저하될 수 있습니다. 이것은 다음 작업을 수행하는 동안 발생하는 COM(Common Object Model)에서 사용하는 RPC(원격 프로시저 호출) 메커니즘 때문입니다.

요청이 높음 격리에서 실행 중인 응용 프로그램으로 전달되고 응답이 다시 전달될 때
높음 격리에서 실행 중인 웹 응용 프로그램이 요청을 처리하는 동안 웹 서버와 통신할 때
반면에 IIS 6.0을 작업자 프로세스 격리 모드에서 실행하면 응용 프로그램이 프로세스 내에서 W3wp.exe에 로드되기 때문에 성능이 저하되는 문제가 생기지 않습니다.

관련 항목
IIS의 응용 프로그램 풀 상태 모니터링 구성에 대한 자세한 내용은 작업자 프로세스 상태 모니터링 구성을 참조하십시오.
작업자 프로세스 재생의 사용 시기와 작업자 프로세스의 재생 구성 방법에 대한 자세한 내용은 작업자 프로세스 재생을 참조하십시오.
웹 가든에 대한 정보 및 웹 가든을 만드는 방법에 대한 자세한 내용은 웹 가든 구성을 참조하십시오.
응용 프로그램 풀의 ID를 구성하는 방법에 대한 자세한 내용은 응용 프로그램 풀 ID 구성을 참조하십시오.
서비스 사용자 계정의 권한에 대한 자세한 내용은 Windows 기본 서비스에 대한 Platform SDK 도움말을 참조하십시오.


 

Trackback 0 And Comment 0