programing

애플리케이션 풀 ID를 사용하는 IIS 애플리케이션에서 기본 토큰을 손실하시겠습니까?

magicmemo 2023. 8. 19. 10:06
반응형

애플리케이션 풀 ID를 사용하는 IIS 애플리케이션에서 기본 토큰을 손실하시겠습니까?

(이것은 모호한 문제에 대한 질문입니다.누군가 도움이 되는 정보를 얻기를 바라며 모든 관련 데이터를 제시하려고 합니다. 긴 설명에 대해 사과드립니다.)

우리 웹 앱

저희가.IIS 7.5에서 실행되는 NET 4 웹 응용 프로그램이 Active Directory 및 SQL Server 데이터베이스에 액세스합니다.

이 웹 애플리케이션은 애플리케이션의 애플리케이션 풀 ID를 ApplicationPoolIdentity로 설정하여 가상 '앱 풀 ID'로 실행되고 있습니다.가상 ID에 대한 간결한 설명은 StackOverflow 답변에서 찾을 수 있으며 블로그 게시물에서 참조하는 앱 풀 ID는 '네트워크 서비스'로 실행 중인 웹 애플리케이션의 작업자 프로세스에 추가되는 추가 그룹일 뿐입니다.그러나 한 소식통은 "Network Service와 ApplicationPoolIdentity에는 IIS.net 사이트 문서가 게시하지 않는 차이점이 있습니다."라고 모호하게 제안합니다.따라서 가상 ID는 단순한 추가 그룹이 아닙니다.

IIS 7.5(예: 여기 참조)에서 기본값이 되었기 때문에 NetworkService가 아닌 ApplicationPoolIdentity를 사용하기로 선택했습니다. Microsoft의 권장 사항에 따라 "관리자는 이 ID를 사용하여 애플리케이션 풀이 실행 중인 ID에만 관련된 권한을 지정할 수 있으므로 서버 보안이 강화됩니다.(processModelElement for applicationPools [IIS 7 Settings Schema]에서) "Application PoolIdentity는 실행 중인 IIS 응용 프로그램을 더욱 안전하고 안정적으로 만드는 강력한 새로운 격리 기능입니다.(IIS.net 의 "애플리케이션ID" 기사 참조)

애플리케이션은 통합 윈도우즈 인증을 사용하지만 를 사용하여 최종 사용자의 ID가 아닌 가상 앱 풀 ID를 사용하여 코드를 실행합니다.

이 응용 프로그램은 시스템을 사용하여 Active Directory를 쿼리합니다.디렉터리 서비스 클래스, 즉 ADSI API입니다.대부분의 경우 추가 사용자 이름/암호 또는 기타 자격 증명을 지정하지 않고 이 작업을 수행합니다.

이 프로그램은 SQL Server 할 때 SQL 데이터베이스에 연결합니다.Integrated Security=true연결 문자열에 있습니다.데이터베이스가 로컬인 경우 다음과 같이 확인할 수 있습니다.IIS APPPOOL\OurAppPoolName데되며, 계정 " " " " " 이 됩니다. 데이터베이스가 원격인 경우 시스템 계정OURDOMAIN\ourwebserver$사용됩니다.

우리의 문제들

다음과 같은 방법으로 작업 설치가 실패하기 시작하는 문제가 정기적으로 발생합니다.

  • 데이터베이스가 원격 시스템에 있는 경우 데이터베이스 연결이 실패하기 시작합니다. "'NT AUTHORITY\ANNIMING LOGON' 사용자에 대해 로그인하지 못했습니다. 파일: 오류로 토큰 검사에 했습니다.인프라 오류로 인해 토큰 기반 서버 액세스 유효성 검사에 실패했습니다.이전 오류를 확인합니다." State: 11"입니다. 지금은 "Error: 18456, State: 14, State: 11"인 것 . 그래서 지금은 그렇게 보입니다.OURDOMAIN\ourwebserver$더 이상 사용되지 않고 익명 액세스가 시도됩니다.(UAC가 꺼졌을 때 이 문제가 발생했으며 UAC를 켠 후 사라졌다는 일화적인 증거가 있습니다.그러나 UAC를 변경하려면 재부팅이 필요합니다...) 유사한 문제가 IIS.net 스레드 "applicationPoolIdentity를 사용하여 SQL에 연결"에 보고되었습니다. 구체적으로 한 번의 응답에서 볼 수 있습니다.

  • ADSI(시스템)를 통한 Active Directory 작업디렉토리 서비스)가 실패하기 시작하고 오류 0x8000500C("알 수 없는 오류"), 0x80072020("작업 오류가 발생했습니다.") 또는 0x200B("지정한 디렉토리 서비스 특성 또는 값이 없습니다.")가 발생합니다.

  • Internet Explorer에서 응용 프로그램에 로그인하면 실패하고 HTTP 401 오류가 발생합니다.그러나 IIS에서 Negotiate보다 NTLM을 먼저 지정하면 다시 작동합니다.(Kerberos의 경우 AD에 액세스해야 하지만 NTLM의 경우에는 액세스할 수 없습니다.) 비슷한 문제가 IIS.net 스레드 "Windows Authentication Failed with AppPool Identity"에 보고되었습니다.

우리의 가설과 해결책

애플리케이션 풀을 ApplicationPoolIdentity에서 NetworkService로 전환할 때 적어도 AD 및 로그인 문제는 항상 해결되는 것 같습니다.(이를 확인하는 보고서가 하나 발견되었습니다.)

"ASP 페이지의 인증 문제 문제 해결" 페이지에는 기본 토큰과 보조 토큰과 관련된 몇 가지 제안이 있으며, 제가 고무적인 것은 오류 중 처음 두 개를 연결한다는 것입니다.NT AUTHORITY\ANONYMOUS LOGON액세스 및 AD 오류 0x8000500C 및 "지정한 디렉터리 서비스 특성 또는 값이 없습니다."

(같은 페이지에서 ADSI 스키마 캐시 문제도 언급되지만 해당 항목에서 찾을 수 있는 모든 내용은 오래된 것입니다.현재로서는 관련이 없는 것으로 간주합니다.)

위의 내용을 바탕으로 현재의 작업 가설은 가상 애플리케이션 풀 ID로 실행되는 경우에만 애플리케이션(IIS?worker process?)이 기본 토큰을 갑자기 손실하여 IIS가 보조 토큰만 가지고 Active Directory 및 SQL Server에 대한 모든 액세스가 익명으로 수행되므로 위의 모든 오류가 발생한다는 것입니다.

지금은 ApplicationPoolIdentity에서 NetworkService로 전환하려고 합니다.이것이 위의 모든 문제를 해결하기를 바랍니다.그러나 우리는 확실하지 않습니다. 그리고 가능하다면 다시 바꾸고 싶습니다.

우리의 질문

위의 가설이 맞습니까? 그렇다면 IIS/Windows/의 버그입니까?NET? 어떤 상황에서 이러한 주요 토큰 손실이 발생합니까?

Microsoft 지원을 통해 Microsoft 기술 자료 문서 KB2545850에 설명된 문제가 발생했음을 알게 되었습니다.이 문제는 ApplicationPoolIdentity가 사용되는 경우에만 발생합니다.시스템 계정 암호가 변경된 후(기본적으로 30일마다 자동으로 실행됨) IIS가 다시 시작된 후(예: 를 통해) 매우 쉽게 실행됩니다.iisresetMicrosoft와 당사의 관찰에 따르면 재부팅 후 문제가 해결됩니다.

Microsoft에 따르면 Windows/서버/서버를 확인할 수 없습니다.IIS가 이 상태가 되었습니다.

Microsoft에는 이 KB 문서에 핫픽스가 첨부되어 있습니다.핫픽스가 언제 정식 배송될 것인지는 알 수 없으며 핫픽스는 이미 10개월이 지났습니다.특정한 경우에는 네트워크 서비스로 전환하기로 결정했습니다.

동일한 문제/문제에 대한 제 의견은 https://serverfault.com/a/403534/126432 를 참조하십시오.

당신이 링크한 핫픽스를 사용하면 문서에서 말하는 대로 ApplicationPoolIdentity가 작동할 수 있습니다.이 핫픽스는 NT AUTHORITY\Anonymous LOGON으로 네트워크 리소스에 액세스하기 위한 솔루션을 구체적으로 설명하지는 않지만 컴퓨터 암호 변경과 관련이 있습니다.결론은 적어도 지금까지는 효과가 있었다는 것입니다.

이는 Active Directory 인증을 사용하는 Umbraco와도 관련이 있습니다.때때로 다음과 같은 예외가 발생할 수 있습니다.

구성 오류

지정한 디렉토리 서비스 특성 또는 값이 없습니다.

이것은 분명히 여기에 설명된 문제 때문에 발생한 것입니다.재부팅하면 문제가 해결됩니다.

언급URL : https://stackoverflow.com/questions/9686186/iis-application-using-application-pool-identity-loses-primary-token

반응형