IIS AppPoolIdentity 및 파일 시스템 쓰기 액세스 권한


395

내가 연구하고 아무데도 가지지 못한 IIS 7.5 및 ASP.NET의 문제가 있습니다. 도움을 주시면 감사하겠습니다.

내 질문은 IIS 7.5에서 ASP.NET을 사용하면 IIS 및 / 또는 운영 체제 C:\dump가 완전 신뢰 하에서 실행될 때 와 같이 웹 응용 프로그램이 폴더에 쓰도록 어떻게 허용 합니까? 응용 프로그램 풀 사용자 (이 경우 ApplicationPoolIdentity) 에 대한 쓰기 액세스 권한을 명시 적으로 추가 할 필요가없는 방법은 무엇입니까?

내가 아는 많은 것 :

  • IIS 7.5에서 응용 프로그램 풀의 기본 아이디는 ApplicationPoolIdentity입니다.
  • ApplicationPoolIdentity "IIS APPPOOL \ AppPoolName"이라는 Windows 사용자 계정을 나타냅니다.이 계정은 응용 프로그램 풀을 만들 때 만들어지며 여기서 AppPoolName은 응용 프로그램 풀의 이름입니다.
  • "IIS APPPOOL \ AppPoolName"사용자는 기본적으로 IIS_IUSRS그룹 의 구성원입니다 .
  • 당신이 완전 신뢰에서 실행하는 경우, 웹 응용 프로그램은 파일 시스템의 여러 분야 (제외 폴더처럼 쓸 수 C:\Users, C:\Windows등). 예를 들어, 애플리케이션은와 같은 일부 폴더에 쓸 수있는 액세스 권한을 갖습니다 C:\dump.
  • 기본적으로 IIS_IUSRS그룹에는 읽기 또는 쓰기 액세스 권한이 부여되지 않습니다 C:\dump(적어도 Windows 탐색기의 "보안"탭을 통해 볼 수있는 액세스 권한은 허용되지 않음).
  • 에 대한 쓰기 액세스를 거부 IIS_IUSRS하면 예상대로 폴더에 쓰려고 할 때 SecurityException이 발생합니다.

따라서이 모든 것을 고려하면 "IIS APPPOOL \ AppPoolName"사용자에게 쓰기 액세스 권한이 어떻게 부여됩니까? w3wp.exe 프로세스는이 사용자로 실행되므로이 ​​사용자가 명시 적으로 액세스 할 수없는 폴더에 쓸 수있는 것은 무엇입니까?

완전 신뢰 하에서 실행중인 경우 사용자가 작성해야하는 모든 폴더에 대한 액세스 권한을 사용자에게 부여하는 데 어려움이 있기 때문에 편의상이 작업이 수행되었음을 이해합니다. 이 액세스를 제한하려면 언제든지 중간 신뢰에서 응용 프로그램을 실행할 수 있습니다. 명시적인 파일 시스템 액세스 권한이없는 것처럼 보이지만 운영 체제 및 / 또는 IIS가 이러한 쓰기 작업을 수행하는 방법에 대해 알고 싶습니다.

답변:


403

ApplicationPoolIdentity의 회원 할당 된 Users그룹뿐만 아니라 IIS_IUSRS그룹을. 언뜻보기에 이것은 다소 걱정스러워 보일 수 있지만 Users그룹은 NTFS 권한이 다소 제한되어 있습니다.

예를 들어 폴더에 폴더를 만들려고하면 폴더를 만들 C:\Windows수 없습니다. (가) ApplicationPoolIdentity여전히 윈도우 시스템 폴더에서 파일을 읽을 수 있어야합니다 (그렇지 않으면 어떻게 다른 작업자 프로세스 동적 필수 DLL의로드 할 수있을 것입니다).

c:\dump폴더 에 쓸 수있는 것에 대한 관찰과 관련하여 . 고급 보안 설정에서 권한을 살펴보면 다음과 같은 내용이 표시됩니다.

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

다음에서 특별 권한이 상속됨을 참조하십시오 c:\.

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

이것이 귀하의 사이트 가 해당 폴더를 ApplicationPoolIdentity읽고 수 있는 이유 입니다. 그 권리는 c:\드라이브 에서 상속됩니다 .

각각 고유 한 응용 프로그램 풀과 응용 프로그램 풀 ID가있는 수백 개의 사이트가있는 공유 환경에서는 사이트 폴더를 Users그룹이 제거 된 폴더 나 볼륨에 저장하고 관리자와 SYSTEM 계정에 액세스 권한이 있습니다 (상 속됨).

그런 다음 IIS AppPool\[name]사이트 루트 폴더 각각에 필요한 필수 권한을 개별적으로 할당 합니다.

또한 잠재적으로 중요한 파일 또는 데이터를 저장하는 위치에 생성 한 모든 폴더에 Users그룹이 제거되어 있는지 확인해야합니다 . 또한 설치하는 모든 응용 프로그램이 c:\program files\[app name]폴더에 중요한 데이터를 저장하지 않고 사용자 프로필 폴더를 대신 사용 하는지 확인해야합니다 .

그렇습니다. 언뜻보기에는 필요한 것 ApplicationPoolIdentity보다 더 많은 권리가 있는 것처럼 보이지만 실제로 그룹 구성원이 지시하는 것보다 더 많은 권리가 없습니다.

ApplicationPoolIdentity의 그룹 구성원은 시스 인 터널을 사용하여 검사 할 수 Explorer의 도구를 처리합니다 . 관심있는 응용 프로그램 풀 ID로 실행중인 작업자 프로세스를 찾으십시오. User Name표시 할 열 목록에 열을 추가 해야합니다.

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

예를 들어 여기 900300에 Application Pool Identity가 인 풀이 있습니다 IIS APPPOOL\900300. 프로세스의 속성을 마우스 오른쪽 버튼으로 클릭하고 보안 탭을 선택하십시오.

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

우리가 볼 수 있듯이 그룹 IIS APPPOOL\900300의 구성원입니다 Users.


@Kev는 [1] 난 여기에 응용 프로그램 풀 ID에 대한 NTFS 권한 regardin 비슷한 질문을 게시 : stackoverflow.com/questions/11232675/...을 - 당신이보고있는 것 만약 내가 감사 할 것입니다.
one.beat.consumer 2018 년

@ one.beat.consumer-죄송합니다. 귀하의 의견을 본 적이 없습니다. 아직도 그 질문에 갇혀 있습니까?
Kev

@ Kev-예, 다른 쓰레기와 함께 쫓겨 났을 때 문제가되지는 않지만 여전히 해결되지 않았습니다. 이견있는 사람?
one.beat.consumer

7
이 섹션이 MSDN에 포함되도록 투표하십시오. 시간을내어이 사실을 알아 내지 못 했으므로 이것은 큰 도움이됩니다.
절망의 그리 망

67
이 Microsoft IIS 핵심 문서가 MSDN 대신 SO에있는 이유를 명확하지 않습니다.
Amit Naidu

40
  1. 폴더를 마우스 오른쪽 버튼으로 클릭하십시오.

  2. 속성을 클릭하십시오

  3. 보안 탭을 클릭하십시오. 다음과 같은 것을 보게 될 것입니다 :

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

  1. 위 화면에서 "편집 ..."버튼을 클릭하십시오. 다음과 같은 것을 보게 될 것입니다 :

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

  1. 위 화면에서 "추가 ..."버튼을 클릭하십시오. 다음과 같은 것을 보게 될 것입니다 :

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

  1. 위 화면에서 "위치 ..."버튼을 클릭하십시오. 이와 같은 것을 보게 될 것입니다. 이제이 트리 구조의 맨 위로 이동하여 컴퓨터 이름을 선택한 다음 확인을 클릭하십시오.

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

  1. 이제 "iis apppool \ your_apppool_name"을 입력하고 "이름 확인"버튼을 클릭하십시오. apppool이 있으면 텍스트 상자에 밑줄과 함께 apppool 이름이 표시됩니다. 확인 버튼을 클릭하십시오.

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

  1. 계정에 부여 할 액세스 권한을 확인 / 선택 취소

  2. 적용 버튼을 클릭 한 다음 확인을 클릭하십시오.


0

II의 각 응용 프로그램 풀은 기본적으로 c : \ users 아래에 전체 읽기 / 쓰기 권한이있는 자체 보안 사용자 폴더를 만듭니다. Users 폴더를 열고 어떤 응용 프로그램 풀 폴더가 있는지 확인한 후 마우스 오른쪽 단추를 클릭하고 할당 된 응용 프로그램 풀 가상 계정에 대한 권한을 확인하십시오. 루트 및 하위 폴더에 지정된 읽기 / 쓰기 액세스 권한이있는 응용 프로그램 풀 계정이 이미 추가되어 있어야합니다.

따라서 파일 스토리지 액세스 유형이 자동으로 수행되므로 앱 풀 사용자 계정 폴더에 원하는 것을 무엇이든 쓸 수 있어야합니다. 그렇기 때문에 각 응용 프로그램 풀에 대한 가상 사용자 계정이 만들어졌습니다.


"로드 사용자 프로필"이 True로 설정된 경우에만 발생합니다.
JamesQMurphy

맞습니다. 이는 AppPool 사용자의 폴더가 사실이 아닌 경우 생성되지 않았 음을 의미합니까? 이것이 그들이 이런 방식으로 그것을 구축 한 이유입니다. .... II가 해당 계정에 대해 관리되는 보안 폴더 대신 Windows / temp 및 하드 드라이브의 정크에 액세스하고 저장하지 못하도록합니다.
Stokely

0

이벤트 로그 → Windows → 응용 프로그램에서 다음과 같이 IIS 웹 사이트에 대한 액세스 문제를 해결하려고 시도했습니다 .

로그 이름 : 응용 프로그램
출처 : ASP.NET 4.0.30319.0
날짜 : 2012 년 1 월 1 일 오후 4시 12 분 33 초
이벤트 ID : 1314
작업 범주 : 웹 이벤트
레벨 : 정보
키워드 : 클래식
사용자 : N / A
컴퓨터 : SALTIIS01

기술:
이벤트 코드 : 4008 
이벤트 메시지 : 요청에 대한 파일 권한 부여에 실패했습니다. 
이벤트 시간 : 2012 년 1 월 5 일 4:12:33 오후 
이벤트 시간 (UTC) : 2012 년 1 월 6 일 12:12:33 AM 
이벤트 ID : 349fcb2ec3c24b16a862f6eb9b23dd6c 
이벤트 순서 : 7 
이벤트 발생 : 3 
이벤트 상세 코드 : 0 

신청 정보 : 
    응용 프로그램 도메인 : / LM / W3SVC / 2 / ROOT / Application / SNCDW-19-129702818025409890 
    신뢰 수준 : 전체 
    응용 프로그램 가상 경로 : / Application / SNCDW 
    응용 프로그램 경로 : D : \ Sites \ WCF \ Application \ SNCDW \ 
    기계 이름 : SALTIIS01 

공정 정보 : 
    프로세스 ID : 1896 
    프로세스 이름 : w3wp.exe 
    계정 이름 : iisservice 

정보를 요청하다: 
    요청 URL : http : //webservicestest/Application/SNCDW/PC.svc 
    요청 경로 : /Application/SNCDW/PC.svc 
    사용자 호스트 주소 : 10.60.16.79 
    사용자 : js3228 
    인증 됨 : True 
    인증 유형 : 협상 
    스레드 계정 이름 : iisservice 

결국 Windows Everyone그룹 이 해당 폴더대한 읽기 권한 을 부여하여 제대로 작동하게해야했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.