Instalé una aplicación web .net en un servidor IIS de Windows Server 2003, ejecutándola en un grupo de aplicaciones NETWORK SERVICE
y 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 SYSTEM
y, 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:
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 Service
funciona porque cuando el SPN no está allí, aún puede recurrir a la autenticación NTLM.
Local System
no 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
.