La aplicación web que se ejecuta como SERVICIO DE RED puede conectarse a SQL Server, pero el servicio de Windows que se ejecuta como SISTEMA LOCAL no puede

La aplicación web que se ejecuta como SERVICIO DE RED puede conectarse a SQL Server, pero el servicio de Windows que se ejecuta como SISTEMA LOCAL no puede

Instalé una aplicación web .net en un servidor IIS de Windows Server 2003, ejecutándola en un grupo de aplicaciones NETWORK SERVICEy conectándome a SQL Server en una máquina diferente usando Seguridad Integrada. La máquina SQL Server también ejecuta Windows Server 2003. Por lo tanto, la aplicación web se conecta como identidadDOMAIN\COMPUTER$y esa cuenta tiene un inicio de sesión y un usuario en SQL Server para que todo funcione bien.

También instalé un servicio .net de Windows en el mismo servidor IIS que se conecta a esa misma máquina con SQL Server. El servicio de Windows se ejecuta como identidad LOCAL SYSTEMy, por lo tanto, también debería conectarse como identidad.DOMAIN\COMPUTER$. He instalado este mismo producto en más de una docena de empresas diferentes, normalmente todo funciona como esperaba, pero en un caso reciente el servicio de Windows no pudo conectarse a la base de datos y apareció el error:

Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'

¿Alguna idea de por qué este sería el caso del SISTEMA LOCAL y no del SERVICIO DE RED? Para solucionar este problema a corto plazo, tuve que cambiar para usar un inicio de sesión de SQL Server, pero preferiría usar Seguridad Integrada si hay una solución fácil. No hubo mensajes de error en el registro de eventos del sistema o de seguridad, aunque no hice nada para habilitar el registro adicional.

Normalmente asumiría que se trata de algún tipo de problema de tipo Kerberos/AD, y los siguientes artículos comoesteyesteayudaría. Pero el hecho de que funcione desde el SERVICIO DE RED sugiere que las cosas normales que verificaría ya están bien (por ejemplo, ¿los SPN se configuraron correctamente y la cuenta del dominio de la máquina está habilitada para la delegación?). Entonces, ¿qué configuración es la que está fallando?

No tengo acceso a los servidores sin la ayuda del equipo de TI de mi cliente y hay otras aplicaciones instaladas en el servidor que debo tener en cuenta para no interrumpir, lo que hace que la resolución de problemas sea un poco más delicada. ¡Cualquier sugerencia para solucionar problemas será muy apreciada!

Respuesta1

Es posible que desees confirmar si la conexión de seguridad es NTLM o Kerberos. Si vuelve a NTLM, la conexión será anónima.

Existe una política de grupo que permite usar la identidad de la computadora cuando se usa NTLM.

Seguridad de la red: permitir que el sistema local use la identidad de la computadora para NTLM
http://technet.microsoft.com/en-us/library/jj852275%28v=ws.10%29.aspx


Para obtener más información sobre cómo configurar el SPN para facilitar la autenticación Kerberos para su servidor SQL:

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

En particular, tenga en cuenta lo siguiente:

Un SPN para SQL Server se compone de los siguientes elementos:

  • ServiceClass: Identifica la clase general de servicio. Siempre es MSSQLSvc para SQL Server.
  • Host: este es el nombre de dominio completo DNS de la computadora que ejecuta SQL Server.
  • Puerto: este es el número de puerto en el que escucha el servicio.

    por ejemplo: MSSQLSvc/myserver.corp.mycomany.com:1433

Respuesta2

Sigo apostando al problema del SPN. No asumas simplemente que están ahí. Verifique el registro adecuado de los SPN para SQL Server. También verifique si hay duplicados ( setspn -x).

Network Servicefunciona porque cuando el SPN no está allí, aún puede recurrir a la autenticación NTLM.

Local Systemno funciona porque solo accede a los recursos de la red como DOMAIN\Computer$si pudiera usar Kerberos. De lo contrario, vuelve a una sesión nula, por lo que verá Anonymous Logon.

información relacionada