Estoy encontrando información contradictoria sobre cómo formatear exactamente los SPN (nombres principales de servicio) para obtener las conexiones Kerberos adecuadas, y cuántos necesito para cada instancia de SQL.
Este documento de MS 2017 contiene lo siguiente:
A partir de SQL Server 2008, el formato SPN se cambia para admitir la autenticación Kerberos en TCP / IP, canalizaciones con nombre y memoria compartida. Los formatos SPN compatibles para instancias con nombre y predeterminadas son los siguientes.
- Instancia nombrada:
MSSQLSvc/FQDN:[port|instancename]
- Instancia predeterminada:
MSSQLSvc/FQDN:port|MSSQLSvc/FQDN
El nuevo formato SPN no requiere un número de puerto . Esto significa que un servidor de múltiples puertos o un protocolo que no usa números de puerto puede usar la autenticación Kerberos.
Tomé este último párrafo para significar que solo necesito una sola entrada, una de las siguientes:
- Instancia nombrada:
MSSQLSvc/sqlbox1.mydomain.org/instance2
- Instancia predeterminada:
MSSQLSvc/sqlbox1.mydomain.org
Eso parece contradecir este documento antiguo de MS (2011) , no solo sobre el número de puerto, sino también sobre qué nombre usar:
Para crear el SPN, puede usar el nombre NetBIOS o el Nombre de dominio completo (FQDN) del Servidor SQL. Sin embargo, debe crear un SPN para el nombre NetBIOS y el FQDN .
Cuando miro los SPN que ya existen en mi entorno, veo una gran variedad de combinaciones, algunos servidores tienen hasta 4 entradas:
MSSQLSvc/sqlbox1
MSSQLSvc/sqlbox1:1433
MSSQLSvc/sqlbox1.mydomain.org
MSSQLSvc/sqlbox1.mydomain.org:1433
Incluso el propio administrador de configuración Kerberos de MS parece querer generar las dos últimas versiones (con la ofuscación adecuada):
De manera similar para instancias con nombre existentes, veo una mezcla extraña, algunas de ellas casi seguramente inválidas:
MSSQLSvc/sqlbox1:1522
MSSQLSvc/sqlbox1:instance2
MSSQLSvc/sqlbox1.mydomain.org:1522
MSSQLSvc/sqlbox1.mydomain.org:instance2
MSSQLSvc/sqlbox1.mydomain.org/instance2
MSSQLSvc/sqlbox1.mydomain.org:1522:instance2
Entonces, ¿cómo deberían ser realmente mis DSN, tanto para instancias predeterminadas como con nombre, si solo uso TCP en mi entorno?
¿Debo incluir el puerto o no? ¿O incluir uno con el puerto y otro sin él?
Utilice el FQDN solamente, ¿o necesito las entradas solo con el nombre de Netbios? ¿O eso solo sería si estuviéramos usando tuberías con nombre (que no somos)?
(Para el contexto, ejecutamos SQL 2005 hasta 2014, algunos agrupados, otros independientes. La conectividad es solo a través de TCP, las canalizaciones con nombre están deshabilitadas en el administrador de configuración. Las repararemos / crearemos manualmente en lugar de permitir que la cuenta del servicio SQL las cree en inicio del servidor).