다음을 통해 공유


ASP.NET 프로세스 ID 구성

업데이트: 2007년 11월

ASP.NET 페이지는 프로세스 또는 Windows 프로그램 내에서 실행됩니다. 모든 Windows 프로그램은 특정 보안 ID를 사용하여 실행됩니다. 기본적으로 ASP.NET 프로세스는 미리 정의된 Windows ID로 실행됩니다. 또는 가장을 사용하도록 응용 프로그램을 구성하여 요청하는 사용자의 Windows ID 또는 다른 ID로 실행하도록 ASP.NET을 설정할 수도 있습니다.

ASP.NET 응용 프로그램의 보안을 향상시키려면 응용 프로그램을 실행하는 데 필요한 최소 권한만 설정된 ID를 사용하여 ASP.NET 프로세스가 실행되어야 합니다. 이렇게 하면 ASP.NET에 의해 노출되는 리소스에서 보안 문제가 발생할 가능성이 줄어듭니다.

Microsoft Windows Server 2003 및 IIS(인터넷 정보 서비스) 6.0이 실행되는 웹 서버에서는 ASP.NET 프로세스가 웹 응용 프로그램의 응용 프로그램 풀에서 실행됩니다. 응용 프로그램 풀은 ASP.NET을 실행할 때 사용하는 ID를 정의합니다(기본적으로 NETWORK SERVICE 계정). 이전 버전의 IIS(Microsoft Windows 2000 및 Windows XP Professional 운영 체제)에서는 ASP.NET 작업자 프로세스(Aspnet_wp.exe)에서 ASP.NET이 실행되었습니다. ASP.NET을 실행할 때 사용하는 ID는 Aspnet_wp.exe 프로세스의 ID로 정의됩니다(기본적으로 ASPNET 계정).

Windows Server 2003이 실행되는 서버에서 ASP.NET 응용 프로그램의 ID를 지정하려면 IIS 관리자를 사용하여 ASP.NET 응용 프로그램에 대한 응용 프로그램 풀의 ID를 구성합니다. 또한 서버 컴퓨터의 IIS_WPG 그룹에 응용 프로그램 풀 ID를 추가해야 합니다.

Windows 2000 또는 Windows XP Professional에서 고유의 계정으로 ASP.NET 작업자 프로세스를 실행하려면 다음과 같은 두 특성을 웹 서버 컴퓨터에 대한 Machine.config 파일의 <processModel> 구성 요소에 적용합니다.

  • userName   프로세스가 실행될 Windows 계정의 이름입니다.

  • password   해당 계정의 일반 텍스트 암호입니다. 구성 파일에 일반 텍스트 암호를 저장하면 보안 문제가 발생할 수 있습니다. 자격 증명을 구성 파일에 저장할 경우에는 보호되는 구성을 사용하여 <processModel> 구성 요소의 내용을 암호화해야 합니다. 자세한 내용은 보호되는 구성을 사용하여 구성 정보 암호화를 참조하십시오. 인터넷에 게시되는 응용 프로그램의 경우에는 IIS에서 제공하는 익명 ID를 가장하는 등 특정 ID로 응용 프로그램을 실행하는 다른 방법을 사용해야 합니다. 자세한 내용은 ASP.NET 가장과 함께 IIS 인증 사용을 참조하십시오.

다음 예제에서는 로컬 사용자 계정으로 작업자 프로세스를 실행하기 위해 구성 파일의 <processModel> 요소에 이러한 특성을 설정하는 방법을 보여 줍니다.

<system.web>
  <processModel enable="true"
    userName="LOCALMACHINE\IUSR_ProcessUser"
    password="%Hco94*#QW12"/>
</system.web>

userName 특성을 기존 Windows ID의 이름뿐만 아니라 미리 정의된 이름, 즉 System 또는 Machine으로 설정할 수도 있습니다. System 계정은 IIS 자체와 동일한 ID(대개 SYSTEM)를 사용하여 작업자 프로세스를 실행합니다.

보안 정보:

System 계정은 권한을 올려 이로 인해 ASP.NET 프로세스가 손상될 경우 보안 문제를 나타낼 수 있으므로 응용 프로그램을 실행할 때 이 계정을 사용하지 않는 것이 좋습니다.

Machine 계정은 권한이 제한된 특수 계정 ASPNET을 사용하여 작업자 프로세스를 실행합니다. 이러한 두 ID 중 하나를 사용하면 프로세스에서 운영 체제에 자격 증명을 제공할 필요가 없습니다.

참고:

ASP.NET 응용 프로그램이 제대로 작동하려면 ASP.NET 필수 ACL(액세스 제어 목록)에 나열된 ACL(액세스 제어 목록)에 대한 액세스 권한이 프로세스 ID에 있어야 합니다. 또한 IIS 5.0이 실행되는 서버에서 IIS 메타베이스에 대한 읽기 권한이 이 프로세스 ID에 부여되어야 합니다. 이 권한을 부여하려면 Aspnet_regiis.exe 도구를 사용하고 -ga 옵션을 지정합니다(예: aspnet_regiis -ga "UserDomain\ApplicationUser").

참고 항목

기타 리소스

ASP.NET 웹 응용 프로그램 보안