IIS / ASP.NET의 모든 사용자 계정은 무엇이며 어떻게 다른가요?


283

ASP.NET 4.0이 설치된 Windows Server 2008에는 수많은 관련 사용자 계정이 있으며 어떤 계정이 있는지, 어떻게 다른지, 어떤 앱이 내 앱을 실행하는지 알 수 없습니다. 목록은 다음과 같습니다.

  • IIS_IUSRS
  • IUSR
  • DefaultAppPool
  • ASP.NET v4.0
  • NETWORK_SERVICE
  • 지역 서비스.

무엇입니까?


그리고 ASP.NET 4.0 이상에서 Windows Server 2012를 사용합니까?
Kiquenet

답변:


433

이것은 매우 좋은 질문이며 슬프게도 많은 개발자가 웹 개발자가되고 IIS를 설정하는 맥락에서 IIS / ASP.NET 보안에 대해 충분한 질문을하지 않습니다. 여기로갑니다 ...

나열된 신원을 다루려면

IIS_IUSRS:

이것은 이전 IIS6 IIS_WPG그룹 과 유사합니다 . 이 그룹의 모든 구성원이 응용 프로그램 풀 ID로 작동 할 수 있도록 보안이 구성된 기본 제공 그룹입니다.

IUSR:

이 계정은 IUSR_<MACHINE_NAME>IIS5 및 IIS6 웹 사이트 (예 : 사이트 속성의 디렉터리 보안 탭을 통해 구성된 기본 익명 사용자) 인 이전 로컬 계정 과 유사합니다 .

자세한 내용은 다음 IIS_IUSRSIUSR참조하십시오.

IIS 7의 기본 제공 사용자 및 그룹 계정 이해

DefaultAppPool:

응용 프로그램 풀이 응용 프로그램 풀 ID 기능을 사용하여 실행되도록 구성된 경우 풀이라는 "합성 된"계정 IIS AppPool\<pool name>이 즉시 만들어져 풀 ID로 사용됩니다. 이 경우 IIS AppPool\DefaultAppPool풀 수명 동안 생성 된 합성 계정 이 있습니다. 풀을 삭제하면이 계정이 더 이상 존재하지 않습니다. 파일 및 폴더에 권한을 적용 할 때는을 사용하여 추가해야합니다 IIS AppPool\<pool name>. 또한 컴퓨터 사용자 관리자에이 풀 계정이 표시되지 않습니다. 자세한 내용은 다음을 참조하십시오.

응용 프로그램 풀 ID

ASP.NET v4.0: -

이것이 ASP.NET v4.0 응용 프로그램 풀의 응용 프로그램 풀 ID입니다. DefaultAppPool위를 참조하십시오 .

NETWORK SERVICE: -

NETWORK SERVICE계정은 Windows 2003에 도입 된 기본 제공 ID NETWORK SERVICE입니다. 응용 프로그램 풀과 웹 사이트를 실행할 수있는 권한이 낮은 계정입니다. Windows 2003 풀에서 실행되는 웹 사이트는 여전히 사이트의 익명 계정 (IUSR_ 또는 익명 ID로 구성한 모든 계정)을 가장 할 수 있습니다.

Windows 2008 이전의 ASP.NET에서는 ASP.NET이 응용 프로그램 풀 계정 (일반적으로 NETWORK SERVICE) 에서 요청을 실행하도록 할 수있었습니다 . 또는 로컬 파일 <identity impersonate="true" />설정을 통해 사이트의 익명 계정을 가장하도록 ASP.NET을 구성 할 수 있습니다 web.config(설정이 잠겨 있으면 파일의 관리자가 수행해야 함 machine.config).

<identity impersonate="true">공유 응용 프로그램 풀이 사용되는 공유 호스팅 환경 (가장 계정이 해제되지 않도록 부분 신뢰 설정과 함께)에서 설정 이 일반적입니다.

IIS7.x / ASP.NET에서 가장 제어는 이제 사이트의 인증 구성 기능을 통해 구성됩니다. 따라서 풀 ID IUSR또는 특정 사용자 지정 익명 계정 으로 실행되도록 구성 할 수 있습니다.

LOCAL SERVICE:

LOCAL SERVICE계정은 내장 서비스 제어 관리자가 사용하는 계정입니다. 로컬 컴퓨터에 대한 최소 권한 집합이 있습니다. 사용 범위가 상당히 제한되어 있습니다.

지역 서비스 계정

LOCAL SYSTEM:

당신은 이것에 대해 묻지 않았지만 완전성을 추가하고 있습니다. 이것은 로컬 내장 계정입니다. 상당히 광범위한 특권과 신뢰를 가지고 있습니다. 이 ID로 실행되도록 웹 사이트 또는 응용 프로그램 풀을 구성해서는 안됩니다.

로컬 시스템 계정

실제로:

실제로 웹 사이트 보안에 대한 기본 접근 방식 (사이트에 자체 응용 프로그램 풀이있는 경우 (IIS7 MMC의 새 사이트에 대한 기본값))은에서 실행하는 것 Application Pool Identity입니다. 이는 응용 프로그램 풀의 고급 설정에서 사이트의 ID를 다음으로 설정하는 것을 의미합니다 Application Pool Identity.

여기에 이미지 설명을 입력하십시오

그런 다음 웹 사이트에서 인증 기능을 구성해야합니다.

여기에 이미지 설명을 입력하십시오

익명 인증 항목을 마우스 오른쪽 단추로 클릭하고 편집하십시오.

여기에 이미지 설명을 입력하십시오

"응용 프로그램 풀 ID" 가 선택되어 있는지 확인하십시오 .

여기에 이미지 설명을 입력하십시오

파일 및 폴더 권한을 적용 할 때 필요한 모든 권한을 응용 프로그램 풀 ID에 부여합니다. 예를 들어 ASP.NET v4.0풀 권한에 대해 애플리케이션 풀 ID를 부여하는 경우 탐색기를 통해이를 수행 할 수 있습니다.

여기에 이미지 설명을 입력하십시오

"이름 확인"버튼을 클릭하십시오 :

여기에 이미지 설명을 입력하십시오

또는 ICACLS.EXE유틸리티를 사용하여이 작업을 수행 할 수 있습니다 .

icacls c : \ wwwroot \ mysite / grant "IIS AppPool \ ASP.NET v4.0":( CI) (OI) (M)

... 나 ... 당신이 사이트의 응용 프로그램 풀을 호출하는 경우 BobsCatPicBlog다음 :

icacls c : \ wwwroot \ mysite / grant "IIS AppPool \ BobsCatPicBlog":( CI) (OI) (M)

이것이 문제를 해결하는 데 도움이되기를 바랍니다.

최신 정보:

나는 2009 년 부터이 훌륭한 답변에 부딪 쳤으며 여기에는 유용한 정보가 많이 있으며 읽을 가치가 있습니다.

'로컬 시스템'계정과 '네트워크 서비스'계정의 차이점은 무엇입니까?


익명 인증 및 응용 프로그램 풀 ID에 동일한 사용자를 사용하는 데 동의하지 않습니다 ... 폴더에 대한 apppoolidentity 쓰기 권한을 부여해야하는 경우 ...
giammin

1
@giammin-왜 안돼? 특별한 경우가 아니라면 각 사이트가 자체 응용 프로그램 풀에있는 경우 응용 프로그램 풀 ID를 사용하는 것이 가장 안전한 방법입니다. "권한에 대한 호소"를하기를 싫어하지만 15 년 동안 공유 된 웹 호스트 엔지니어이자 보안 담당자 인이 접근 방식은 IIS7 +에서 가장 쉬운 방법입니다.
Kev

@Kev 단순히 익명 사용자에게 사이트에 대한 쓰기 권한을 부여하고 싶지 않습니다
giammin

1
IIS AppPool \ <name_of_apppool>을 사용하면 응용 프로그램 풀을 더욱 구체적으로 지정할 수 있습니다. 관련 참고 사항에 따르면 IIS 풀은 응용 프로그램 풀 가상 계정이 만들어지지 않기 때문에 IIS AppPool \ ASP.NET v4.0에서만 작동합니다.
kevindaub

@ daub815-IIS Express는 Windows 로그인 및 시작시 실행되고 개발 및 디버깅시 필요에 따라 종료되므로 의도적으로 다르게 작동합니다. 실제로는 Full Fat IIS 응용 프로그램 풀이나 인프라에 실제로 의존하거나 의존하지 않습니다. VS의 장난감 웹 서버가 심각하게 제한 되었기 때문에 IIS Express의 의도는 개발자들에게 실제와 같은 행동, 풍미 및 구성을 제공하는 것이 었습니다.
Kev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.