[asp.net] IIS AppPoolIdentity 및 파일 시스템 쓰기 액세스 권한

내가 연구하고 아무데도 가지지 못한 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가 이러한 쓰기 작업을 수행하는 방법에 대해 알고 싶습니다.



답변

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.


답변

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

  2. 속성을 클릭하십시오

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

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

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

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

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

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

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

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

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

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

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

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


답변

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

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


답변

이벤트 로그 → 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그룹 이 해당 폴더대한 읽기 권한 을 부여하여 제대로 작동하게해야했습니다.


답변