IIS7 권한 개요-ApplicationPoolIdentity


356

최근 핵심 웹 서버로 IIS7로 업그레이드했으며 권한 측면에서 개요가 필요합니다. 이전에는 파일 시스템에 쓸 필요가있을 때 AppPool 사용자 (네트워크 서비스)에게 디렉토리 또는 파일에 대한 액세스 권한을 부여했을 것입니다.

IIS7에서는 기본적으로 AppPool 사용자가로 설정되어 ApplicationPoolIdentity있습니다. 따라서 작업 관리자를 확인하면 'WebSite.com'이라는 사용자 계정이 IIS 프로세스 (IIS의 웹 사이트 이름 인 'Website.com')가 실행되고 있음을 알 수 있습니다.

그러나이 사용자 계정을 사용하여 권한을 부여하려고하면이 사용자 계정이 존재하지 않습니다. 그렇다면 어떤 사용자에게 권한을 부여 할 것인지 어떻게 결정합니까?

편집 ==================================================== ===============================

스크린 샷의 문제는 아래를 참조하십시오. 저희 웹 사이트 (www.silverchip.co.uk)는 사용자 이름 SilverChip.co.uk에서 실행됩니다. 그러나 내가 pemissions를 추가하면이 사용자가 존재합니다!

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

================================= AppPool 이미지보기

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


2
실제로이 문제에 대한 Microsoft 정보는 매우 훌륭한 응용 프로그램 풀 ID입니다.
DanielV

답변:


679

ApplicationPoolIdentity는 실제로 IIS7 +에서 사용하는 가장 좋은 방법입니다. 동적으로 생성되고 권한이없는 계정입니다. 특정 응용 프로그램 풀에 대한 파일 시스템 보안을 추가하려면 IIS.net의 "응용 프로그램 풀 ID"를 참조하십시오 . 빠른 버전 :

응용 프로그램 풀의 이름이 "DefaultAppPool"인 경우 (이름이 다른 경우 아래의 텍스트 만 바꾸십시오)

  1. Windows 탐색기를 엽니 다
  2. 파일 또는 디렉토리를 선택하십시오.
  3. 파일을 마우스 오른쪽 버튼으로 클릭하고 "속성"을 선택하십시오
  4. "보안"탭을 선택하십시오
  5. "편집"을 클릭 한 다음 "추가"버튼을 클릭하십시오
  6. "위치"버튼을 클릭하고 로컬 컴퓨터 를 선택했는지 확인하십시오 . ( 서버가 하나 인 경우 Windows 도메인이 아닙니다 .)
  7. " 선택할 개체 이름을 입력하십시오 :"텍스트 상자에 " IIS AppPool \ DefaultAppPool "을 입력하십시오. 여기에서 "DefaultAppPool"을 응용 프로그램 풀의 이름으로 변경하는 것을 잊지 마십시오.
  8. "이름 확인"버튼을 클릭하고 "확인"을 클릭하십시오.

11
@Pino : 아니요. 웹 사이트 이름이 아닙니다. 응용 프로그램 풀 이름을 사용하십시오 . 각 웹 사이트는 응용 프로그램 풀에 할당됩니다. 웹 사이트의 속성 기본 설정 대화 상자 (IIS7)에서 어느 것을 알 수 있습니다.
Jon Adams

2
@Pino :이 경우 사용해야하는 보안 역할은 IIS AppPool\silverchip.co.uk입니다. 보안 이름으로 마침표를 시도하지 않았습니다. 구두점없이 다른 이름으로 변경하고 싶을 수 있습니다.
Jon Adams

7
당신이 말한대로 지시를 따랐습니다. 그러나 하나의 해킹이 있습니다. 응용 프로그램 풀 설정에서 속성 enable load user profiletrue로 설정해야합니다. 그리고이 설정 후에 만 ​​응용 프로그램을 실행할 수있었습니다. 따라서 지침을 업데이트하고 9 포인트를 추가하십시오.
Johnny_D

19
익명 인증에 대한 서버 설정도 응용 프로그램 풀 ID를 사용하고 있는지 확인하십시오. 이 솔루션은 IUSR에서 다시 전환하자마자 저에게 효과적이었습니다.
bblue

11
여기에주의하십시오! 사용자 인터페이스를 사용하여 사용자를 찾을 수는 없지만 입력해야합니다. 이름을 확인하는 것이 유일한 방법입니다.
Remco

87

이름을 확인할 때 도메인 이름이 아닌 서버의 로컬 이름을 사용해야합니다.

IIS AppPool\DefaultAppPool

(이것이 나를 약간 넘어 뜨 렸기 때문에 단지 알림) :여기에 이미지 설명을 입력하십시오


네, 제임스 투미를 상기시켜 주셔서 감사합니다!
tjans

30

IIS 기본 구성 으로는 IIS AppPool \ YourAppPoolName 사용자 에게 액세스 권한이 충분하지 않을 수 있습니다 .

제 경우에는 여전히 AppPool 사용자를 추가 한 후 HTTP 오류 401.3-권한이 없음 오류 가 발생 했으며 IUSR 사용자 에게 권한을 추가 한 후에 만 ​​수정되었습니다 .

기본적으로 익명 액세스는 IUSR을 사용하여 수행되기 때문에이 작업이 필요합니다 . 다른 특정 사용자 인 응용 프로그램 풀을 설정하거나 IUSR을 계속 사용할 수 있지만 적절한 권한을 설정하는 것을 잊지 마십시오.

인증 탭

이 답변의 크레딧 : HTTP Error 401.3-Unauthorized


3
이것은 중요하다 !!! 보안을 위해 "익명 인증"을 "애플리케이션 풀 ID"로 변경해야합니다! 나는 그것이 IUSR로 설정 된 좋은 이유가 있다고 확신하지만, 하나를 생각할 수는 없습니다. 감사!!!
Dan B

이것은 나를 위해 문제를 해결했습니다. Windows Server 2012 R2에서 IIS의 버전이 8이기 때문일 수 있습니다.
myroslav

2
이는 승인 된 답변에 추가해야하는 중요한 단계입니다. 또한 가장 간단한 방법은 라디오 상자를 응용 프로그램 풀 ID로 변경하는 것입니다
Sourcery

1
이것은 내 문제였다! 감사합니다!!
슬론 레이놀즈

28

Windows Server 2008 (r2)에서는 속성-> 보안을 통해 폴더에 응용 프로그램 풀 ID를 할당 할 수 없습니다. 다음을 사용하여 관리자 명령 프롬프트를 통해 수행 할 수 있습니다.

icacls "c:\yourdirectory" /t /grant "IIS AppPool\DefaultAppPool":(R)

1
이것을 조금 설명해 주시겠습니까? (R)은 무슨 뜻입니까? 이 명령에서 실제로 꺾쇠 괄호를 입력합니까?
Kate Gregory

3
안녕하세요 Kate, <>를 사용하여 "여기에 apppool 이름"을 표시하고 있지만 합법적 인 apppool 이름으로 남겨 두었습니다. IIS 관리자-> 응용 프로그램 풀에서 이름과 공백이 일치해야합니다. 마지막으로 한 것은 "IIS AppPool \ ClientName_CompanyName-인트라넷"이었습니다. 이 경우 : (R)은 읽기 액세스 권한을 부여합니다. F (전체), M (수정), RX (읽기 + 실행) 및 W (쓰기 전용)를 사용할 수도 있습니다.
Chris

9
실제로 Windows Server 2008 R2의 속성에서 보안 탭을 통해 할당 할 수 있으므로이 해결 방법이 필요하지 않습니다. 개체 유형 및 위치에서 기본 제공 보안 주체를 선택했는지 확인하십시오.
rism

이 답변은 저에게 효과적이며 선택한 답변은 저에게 적합하지 않습니다.
Tuyen Nguyen

3
[link] serverfault.com/questions/81165/의 정답에 대한 원문도 참조하십시오. 일반 Windows Server 2008 (또는 Datacenter Edition)의 경우 명령 줄을 사용하여 앱 풀 계정을 보안으로 가져와야합니다. 대화. 일단 거기에 있으면, 그것을 관리하고, 권한 레벨을 변경하고, 서브 디렉토리 등을 변경할 수 있습니다. "icacls"c : \ yourdirectory "/ t / grant"IIS AppPool \ DefaultAppPool ":( OI) (CI) (R)"OI 개체 상속, CI 컨테이너 상속
secretwep

7

파트 A : 응용 프로그램 풀 구성

응용 프로그램 풀의 이름이 'MyPool'이라고 가정하고 IIS 관리자에서 응용 프로그램 풀의 '고급 설정'으로 이동

  1. 'ID'로 스크롤하십시오. 값을 편집하려고하면 대화 상자가 나타납니다. '내장 계정'을 선택하고 그 아래에서 'ApplicationPoolIdentity'를 선택하십시오.

  2. 'Identity'아래의 몇 줄에 'Load User Profile'이 있습니다. 이 값은 'True'로 설정해야합니다.

파트 B : 웹 사이트 구성

  1. 웹 사이트 이름 : SiteName (예제)
  2. 물리적 경로 : C : \ Whatever (예제)
  3. Connect as ... : 응용 프로그램 사용자 (통과 인증) (위의 설정은 IIS 관리자 사이트의 '기본 설정'에서 찾을 수 있습니다)
  4. 기본 설정을 구성한 후 사이트 기본 콘솔의 'IIS'에서 '인증'구성을 찾으십시오. 열어 봐. '익명 인증'에 대한 옵션이 표시되어야합니다. 활성화되어 있는지 확인하십시오. 그런 다음 마우스 오른쪽 버튼을 클릭하고 '편집 ...'을 클릭하십시오. '응용 프로그램 풀 ID'를 선택하십시오.

파트 C : 폴더 구성

해당 폴더는 C : \ Whatever입니다.

  1. 속성-공유-고급 공유-권한으로 이동하여 '이 폴더 공유'를 선택하십시오.
  2. 같은 대화 상자에 '권한'버튼이 있습니다. 클릭하세요.
  3. 새로운 대화 상자가 열립니다. '추가'를 클릭하십시오.
  4. 새로운 대화 상자 '사용자 또는 그룹 선택'이 열립니다. '이 위치에서'에서 이름이 로컬 호스트 컴퓨터와 동일한 지 확인하십시오. 그런 다음 '개체 이름 입력'에서 'IIS AppPool \ MyPool'을 입력하고 '이름 확인'을 클릭 한 다음 '확인'을 클릭하십시오.
  5. 'MyPool'사용자에게 전체 공유 권한을 부여하십시오. 적용하고 폴더 속성을 닫습니다
  6. 폴더 속성을 다시여십시오. 이번에는 보안-고급-권한으로 이동하여 추가를 클릭하십시오. 상단에 '주체 선택'옵션이 있거나 사용자를 선택할 수있는 다른 옵션이 있습니다. 클릭하세요.
  7. '사용자 또는 그룹 선택'대화 상자가 다시 열립니다. 4 단계를 반복하십시오.
  8. 'MyPool'사용자에게 필요한 전부 또는 많은 권한을 부여하십시오.
  9. '모든 하위 개체 권한 바꾸기 ...'를 선택하고 적용하고 닫습니다.

이제 웹 사이트 탐색을 사용할 수 있습니다


당신은 정글의 왕입니다! 감사합니다
tno2007

5

Jon Adams의 최고 답변

PowerShell 사람들을 위해 이것을 구현하는 방법은 다음과 같습니다.

$IncommingPath = "F:\WebContent"
$Acl = Get-Acl $IncommingPath
$Ar = New-Object  system.security.accesscontrol.filesystemaccessrule("IIS AppPool\DefaultAppPool","FullControl","ContainerInherit, ObjectInherit", "None", "Allow")
$Acl.SetAccessRule($Ar)
Set-Acl $IncommingPath $Acl

1

혼란에 추가하기 위해 이러한 로그인에 대해 (Windows 탐색기) 유효 권한 대화 상자가 작동하지 않습니다. 통과 인증을 사용하는 사이트 "Umbo4"가 있고 사이트 루트 폴더에서 사용자의 유효 권한을 확인했습니다. 이름 확인 테스트는 "IIS AppPool \ Umbo4"라는 이름을 확인했지만 유효 권한은 사용자에게 폴더에 대한 권한이 없음을 나타냅니다 (모든 확인란의 선택을 취소 함).

그런 다음 탐색기 보안 탭을 사용하여이 사용자를 폴더에서 명시 적으로 제외했습니다. 이로 인해 사이트가 예상대로 HTTP 500.19 오류와 함께 실패했습니다. 그러나 유효 권한은 이전과 동일하게 보입니다.


1

암호를 사용하여 IUSER라는 새 사용자를 만들어 모든 asp.net 문제를 간단히 수정하고 네트워크 서비스 및 사용자 그룹에 추가했습니다. 그런 다음 모든 가상 사이트 및 응용 프로그램을 만들고 암호를 사용하여 인증을 IUSER로 설정하십시오. IUSER 및 BAM을 포함하도록 높은 수준의 파일 액세스를 설정하여이 사이트를 포함하여 3-4 개 이상의 문제를 해결하십시오.

데이브

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