Recientemente he estado pegándome con una configuración de Autenticación de Kerberos sobre una instalación SQL Server 2008 R2 y Analysis Services sobre un Failover Cluster de SQL Server 2008 R2, con el objetivo de ser utilizado por una instalación de MOSS 2010. Inicialmente, estuve siguiendo la Guía de configuración de Kerberos para MOSS 2010, sin embargo, la Autenticación de Kerberos no acababa de funcionar. Finalmente, tras varias pruebas, parece que encontré un Workaround para hacer funcionar la Autenticación de Kerberos en este escenario: Habilitar la Delegación de Kerberos en las cuentas de servicio y cuentas de equipo del Cluster. Realizado esto y tras reiniciar las máquinas, la Autenticación de Kerberos empezó a funcionar.
Descripción del Entorno
Partimos de un entorno de Directorio Activo formado por un Controlador de Dominio Windows Server 2003 R2, con el Dominio en Modo Funcional (Domain Functional Mode) Windows Server 2003 y el Bosque en Modo Funcional (Forest Funtional Mode) Windows 2000.
Tenemos un Failover Cluster de Windows Server 2008 R2 formado por dos Nodos (VSQL11 y VSQL12), sobre el que hemos configurado el MSDTC en Cluster, así como hemos instalado también una instancia con nombre de SQL Server 2008 R2 y Analysis Services (también en Cluster). El nombre de la instancia es MSSQLSERVER01 y el nombre virtual utilizado por SQL Server y Analysis Services es también MSSQLSERVER01 (con FQDN de MSSQLSERVER01.guillesql.local). La resolución de nombres directa e inversa funciona correctamente.
La cuenta de servicio utiliza por SQL Server y Analysis Services es GUILLESQL\SERVICE_SQL, una cuenta de usuario sin privilegios elevados ni permisos especiales. El SQL Browser se ejecuta como LocalSystem.
Configuración de la Autenticación de Kerberos, según la guía de configuración de MOSS 2010
Según la Guía de configuración de Kerberos para MOSS 2010, tan sólo tenemos que configurar los Service Principal Names (SPNs) utilizando la herramienta SetSPN.exe, tras lo cual, la Autenticación de Kerberos debería empezar a funcionar (o no ;-). Por lo tanto, ejecutamos los siguientes comandos SetSPN:
SetSPN -S MSOLAPSvc.3/MSSQLSERVER01:MSSQLSERVER01 GUILLESQL\SERVICE_SQL
SetSPN -S MSOLAPSvc.3/MSSQLSERVER01.guillesql.local:MSSQLSERVER01 GUILLESQL\SERVICE_SQL
SetSPN -S MSSQLSvc/MSSQLSERVER01:50326 GUILLESQL\SERVICE_SQL
SetSPN -S MSSQLSvc/MSSQLSERVER01.guillesql.local:50326 GUILLESQL\SERVICE_SQL
Debe tenerse en cuenta que dado que estamos configurando los Service Principal Names (SPNs) para una instancia con nombre de SQL Server y de Analysis Services, para SQL Server deberemos especificar el Puerto TCP utilizado por la instancia de SQL Server, mientras que para Analysis Services deberemos especificar el nombre de la instancia, tal como se muestra en los anteriores comandos SPNs y en la pantalla capturada que se muestra a continuación.
Sin embargo, tras realizar esta configuración, la Autenticación de Kerberos seguía sin funcionar. O al menos, en mi entorno no llegó a funcionar.
Configuración de la Autenticación de Kerberos: posibles pasos adicionales
Tras varias pruebas, y por mi experiencia en otras configuración de Kerberos con las que tenido que enfrentarme en veces anteriores, finalmente probé a habilitar la Delegación de Kerberos en las cuentas de equipo del Cluster (VSQL11, VSQL12 and MSSQLSERVER01) utilizando la herramienta administrativa Active Directory Users and Computers (ADUC). Me refiero a las opciones “Trust this computer for delegation to any service (Kerberos only)” o “Trust this computer for delegation”, dependiendo del modo funcional del dominio.
Reinicié el Cluster y probé de nuevo, sin embargo, la Autenticación de Kerberos seguía sin funcionar.
Tras esto probé a habilitar la Delegación de Kerberos en la cuenta de servicio de SQL Server y Analysis Services (GUILLESQL\SERVICE_SQL) utilizando de nuevo utilizando la herramienta administrativa Active Directory Users and Computers (ADUC). En esta ocasión me refiero a la opción “Trust this user for delegation to any service (Kerberos only)” o “Account is trusted for delegation”, dependiendo del modo functional del dominio. Téngase en cuenta que la pestaña Delegation sólo estará disponible sobre una cuenta de usuario si dicha cuenta de usuario tiene registrado algún Service Principal Name (SPN), pues en caso contrario la pestaña Delegation no estará visible (nosotros los registramos correctamente, como se describe un poco más arriba en este mismo artículo).
Tras esto, reinicié el Cluster, y al probar de nuevo la Autenticación de Kerberos, esta empezó a funcionar.
Poco más por hoy. Como siempre, confío que la lectura resulte de interés.