2019. 7. 10. 14:36

응용 프로그램 풀 ID

자체 서버 또는 클라우드에서 사이트를 실행하는 경우 보안은 우선 순위 목록의 맨 위에 있어야합니다. 그렇다면 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 작업자 프로세스는 기본적으로 타사 코드 (Classic ASP, ASP.NET, PHP 코드)를 실행하므로 다른 Windows 시스템 서비스와 IIS 작업자 프로세스를 분리하고 고유 한 ID로 IIS 작업자 프로세스를 실행해야합니다. Windows 운영 체제는 IIS가 각 응용 프로그램 풀에 대해 고유 한 ID를 만들 수 있도록 "가상 계정"이라는 기능을 제공합니다. 가상 계정에 대한 자세한 내용은 서비스 계정 단계별 가이드를 참조하십시오 .

IIS 응용 프로그램 풀 ID 구성

Windows Server 2008 R2 또는 이후 버전의 IIS에서 IIS 7.5를 실행하는 경우 새 ID를 사용하기 위해 별도로 수행 할 작업이 없습니다. 생성 한 모든 응용 프로그램 풀에 대해 새 응용 프로그램 풀의 Identity 속성은 기본적 으로 ApplicationPoolIdentity 로 설정됩니다. IIS Admin Process (WAS)는 새 응용 프로그램 풀의 이름으로 가상 계정을 만들고 기본적으로이 계정으로 응용 프로그램 풀의 작업자 프로세스를 실행합니다.

Windows Server 2008에서 IIS 7.0을 실행할 때이 가상 계정을 사용하려면 작성한 응용 프로그램 풀의 Identity 속성을 ApplicationPoolIdentity 로 변경해야합니다 . 방법은 다음과 같습니다.

  1. IIS 관리 콘솔 (INETMGR.MSC)을 엽니 다.
  2. 시스템 노드 아래에있는 응용 프로그램 풀 노드를 엽니 다. 자동으로 생성 된 응용 프로그램 풀 ID에서 실행되도록 변경할 응용 프로그램 풀을 선택합니다.
  3. 응용 프로그램 풀을 마우스 오른쪽 단추로 클릭하고 고급 설정을 선택 합니다.

  4. ID 목록 항목을 선택하고 줄임표 (세 점이있는 단추)를 클릭하십시오.
  5. 다음 대화 상자가 나타납니다.

  6. 기본 제공 계정 단추를 선택한 다음 콤보 상자에서 ID 유형 ApplicationPoolIdentity 를 선택합니다 .

명령 줄을 사용하여 동일한 단계를 수행하려면 다음과 같이 appcmd 명령 줄 도구를 호출하면됩니다.

콘솔

%windir%\system32\inetsrv\appcmd.exe set AppPool <your AppPool> -processModel.identityType:ApplicationPoolIdentity

리소스 보안

새 응용 프로그램 풀이 만들어 질 때마다 IIS 관리 프로세스는 응용 프로그램 풀 자체의 이름을 나타내는 SID (보안 식별자)를 만듭니다. 예를 들어 이름이 "MyNewAppPool"인 응용 프로그램 풀을 만드는 경우 Windows 보안 시스템에 "MyNewAppPool"이라는 보안 식별자가 만들어집니다. 이 시점부터이 자원을 사용하여 리소스를 보호 할 수 있습니다. 그러나 ID는 실제 사용자 계정이 아닙니다. Windows 사용자 관리 콘솔에서는 사용자로 표시되지 않습니다.

Windows 탐색기에서 파일을 선택하고 파일의 액세스 제어 목록 (ACL)에 "DefaultAppPool"ID를 추가하여이 작업을 시도 할 수 있습니다.

  1. Windows 탐색기를 엽니 다.
  2. 파일 또는 디렉토리를 선택하십시오.
  3. 파일을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하십시오.
  4. 보안 탭을 선택 하십시오.
  5. 편집 버튼을 클릭 한 다음 추가 버튼을 클릭하십시오.
  6. 위치 버튼을 클릭하고 컴퓨터를 선택했는지 확인하십시오.

  7. 입력 IIS AppPool을 \을 DefaultAppPool는 에서 선택 개체 이름을 입력 : 텍스트 상자를.
  8. 클릭 이름 확인 버튼을 클릭 확인 .

이렇게하면 선택한 파일이나 디렉토리에서 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에 대해 콘텐트를 ACL화할 수 있지만 토큰의 소유자는 고유하지 않을 수 있습니다. 이 개념에 대한 자세한 내용은 IIS 7  새로운 기능 - 응용 프로그램 풀 격리 블로그 게시물을 참조하십시오.

네트워크 액세스

도메인 환경에서 네트워크 서비스 계정을 사용하면 큰 이점이 있습니다. 네트워크 서비스로 실행되는 작업자 프로세스는 네트워크를 시스템 계정으로 액세스합니다. 컴퓨터 계정은 컴퓨터가 도메인에 가입 할 때 생성됩니다. 그들은 다음과 같이 보입니다 :

XML

<domainname>\<machinename>$,

예 :

콘솔

mydomain\machine1$

이것에 대한 좋은 점은이 컴퓨터 계정에 액세스 할 수 있도록 파일 공유 또는 SQL Server 데이터베이스와 같은 네트워크 리소스를 ACL로 액세스 할 수 있다는 것입니다.

응용 프로그램 풀 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 및 Classic .NET AppPool)에만 디스크에 사용자 프로필이 있습니다. 관리자가 새 응용 프로그램 풀을 만드는 경우 사용자 프로필이 만들어지지 않습니다.

그러나 원하는 경우 LoadUserProfile 특성을 "true"로 설정하여 사용자 프로필을로드하도록 IIS 응용 프로그램 풀을 구성 할 수 있습니다.

개요

응용 프로그램 풀 ID는 Windows Server 2008, Windows Vista 및 이후 버전의 Windows에 새로 추가 된 강력한 격리 기능입니다. IIS 응용 프로그램을보다 안전하고 안정적으로 실행할 수 있습니다.

 

 

원본

https://docs.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities