NETWORK SERVICE로 실행되는 웹앱은 SQL Server에 연결할 수 있지만 LOCAL SYSTEM으로 실행되는 Windows 서비스는 연결할 수 없습니다.

NETWORK SERVICE로 실행되는 웹앱은 SQL Server에 연결할 수 있지만 LOCAL SYSTEM으로 실행되는 Windows 서비스는 연결할 수 없습니다.

Windows Server 2003 IIS 서버에 .net 웹 응용 프로그램을 설치하여 응용 프로그램 풀에서 실행하고 NETWORK SERVICE통합 보안을 사용하여 다른 컴퓨터의 SQL Server에 연결했습니다. SQL Server 컴퓨터는 Windows Server 2003도 실행하고 있습니다. 따라서 웹앱은 ID로 연결됩니다.DOMAIN\COMPUTER$해당 계정에는 SQL Server에 로그인 및 사용자가 있으므로 모든 것이 잘 작동합니다.

또한 동일한 SQL Server 시스템에 연결되는 동일한 IIS 서버에 .net Windows 서비스를 설치했습니다. Windows 서비스는 다음으로 실행되므로 LOCAL SYSTEMID로도 연결되어야 합니다.DOMAIN\COMPUTER$. 나는 12개가 넘는 회사에 이 동일한 제품을 설치했으며 일반적으로 모두 예상대로 작동하지만 최근의 한 사례에서는 Windows 서비스가 데이터베이스에 연결할 수 없어 오류가 발생했습니다.

Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'

왜 이것이 네트워크 서비스가 아닌 로컬 시스템의 경우인지 아십니까? 단기적으로 이 문제를 해결하려면 SQL Server 로그인을 사용하도록 전환해야 했지만 쉬운 해결책이 있다면 통합 보안을 사용하는 것을 선호합니다. 추가 로깅을 활성화하기 위해 아무 작업도 수행하지 않았지만 보안 또는 시스템 이벤트 로그에는 오류 메시지가 없었습니다.

일반적으로 나는 이것이 일종의 Kerberos/AD 유형 문제라고 가정하고 다음과 같은 기사를 따릅니다.이것그리고이것도움이 될 것이다. 그러나 이것이 NETWORK SERVICE에서 작동한다는 사실은 제가 확인하는 일반적인 사항이 이미 정상임을 나타냅니다(예: SPN이 올바르게 설정되었고 컴퓨터 도메인 계정이 위임을 위해 활성화되어 있습니까?). 그럼 어떤 설정이 잘못됐나요?

클라이언트 IT 팀의 도움 없이는 서버에 액세스할 수 없으며 서버에 중단되지 않도록 주의해야 하는 다른 응용 프로그램이 설치되어 있어 문제 해결이 좀 더 섬세해집니다. 문제 해결을 위한 제안을 보내주시면 감사하겠습니다!

답변1

보안 연결이 NTLM인지 Kerberos인지 확인할 수 있습니다. NTLM으로 되돌리는 경우 연결은 익명이 됩니다.

NTLM을 사용할 때 컴퓨터 ID를 사용할 수 있도록 하는 그룹 정책이 있습니다.

네트워크 보안: 로컬 시스템이 NTLM에 컴퓨터 ID를 사용하도록 허용
http://technet.microsoft.com/en-us/library/jj852275%28v=ws.10%29.aspx


SQL Server에 대한 Kerberos 인증을 용이하게 하기 위해 SPN을 구성하는 방법에 대한 자세한 내용은 다음을 참조하세요.

http://blogs.msdn.com/b/sql_protocols/archive/2006/12/02/understanding-kerberos-and-ntlm-authentication-in-sql-server-connections.aspx

특히 다음 사항에 유의하세요.

SQL Server용 SPN은 다음 요소로 구성됩니다.

  • ServiceClass: 일반적인 서비스 클래스를 식별합니다. 이는 항상 SQL Server용 MSSQLSvc입니다.
  • 호스트: SQL Server를 실행하는 컴퓨터의 정규화된 도메인 이름 DNS입니다.
  • 포트: 서비스가 수신 대기 중인 포트 번호입니다.

    예: MSSQLSvc/myserver.corp.mycomany.com:1433

답변2

나는 여전히 SPN 문제에 베팅하고 있습니다. 그들이 거기에 있다고 단지 가정하지 마십시오. SQL Server에 대한 SPN이 올바르게 등록되었는지 확인하세요. 또한 중복( setspn -x)이 있는지 확인하세요.

Network ServiceSPN이 없어도 여전히 NTLM 인증으로 대체될 수 있기 때문에 작동합니다.

Local SystemDOMAIN\Computer$Kerberos를 사용할 수 있는 것처럼 네트워크 리소스에만 액세스하기 때문에 작동하지 않습니다 . 그렇지 않으면 null 세션으로 대체되므로 가 표시됩니다 Anonymous Logon.

관련 정보