GuilleSQL :: Microsoft SQL Server, SSIS, y más !!

Configurar Analysis Services, MOSS y Kerberos


Una tarea que nos puede hacer falta, especialmente en Proyectos de Business Intelligence y Data Warehousing con MOSS y Analysis Services, es la configuración de Autenticación y Delegación de Kerberos, de tal modo que el servidor MOSS sea capaz de obtener las credenciales de los usuarios, y realizar las peticiones a Analysis Services con las credenciales de los mismos (Double Hop), algo que podemos necesitar en situaciones diversas, como para hacer funcionar Indicadores KPI de MOSS desde KPIs definidas en Analysis Services. Así, evitaremos el error The connection either timed out or was lost y el error Autentication failed.

Descripción del Escenario del Problema

Partimos de un escenario formado por un dominio de Directorio Activo con Controladores de Dominio Windows Server 2003 R2. Sobre este dominio, tenemos una máquina corriendo MOSS 2007 SP2 (denominada VMOSS01Mob) y otra máquina corriendo Analysis Services 2005 (denominada VSQL01Mob), con una única instancia de Analysis Services corriendo como instancia por defecto.

Directorio Activo se encuentra configurado a un nivel funcional de dominio de Windows Server 2003, y a un nivel funcional del bosque de Windows 2000, como se puede apreciar a continuación.

El Nivel Funcional de Directorio Activo, puede impactar en como habilitar Kerberos en las cuentas de equipo y de usuario.

La máquina que ejecuta MOSS 2007, tiene configurado los Application Pool de MOSS para ejecutarse utilizando una cuenta de Directorio Activo (en particular, la cuenta MOSSSvc), actuando dicho usuario como una cuenta de servicio. Esta misma cuenta (MOSSSvc), ha sido utilizada para el resto de servicios de MOSS.

En este escenario, intentamos crear un Indicador KPI utilizando datos de Analysis Services 2005, sin embargo, al intentar crear el Indicador KPI, justo después de especificar el fichero de conexión de datos (ODC - Office Data Connection), se muestra el error The connection either timed out or was lost, como se muestra en la siguiente pantalla capturada.

El error The connection either timed out or was lost

También, puede ocurrir que se muestre el error Authentication failed, como se muestra a continuación, dependiendo de si utilizamos el nombre corto del servidor de Analysis Services 2005, o si por el contrario utilizamos el nombre largo FQDN (al menos es lo que he observado durante las pruebas, quizás este error se produzca también en otros escenarios).

El error Authentication failed

En ambos casos, el problema es el mismo: MOSS no es capaz de entregarle a Analysis Services las credenciales del usuario, realizando en su lugar un acceso anónimo, como se muestra en la siguiente captura de traza de Analysis Services.

El problema: Anonymous Logon en Analysis Services

Anteriormente, ya me había pegado con configuraciones similares de Kerberos, como por ejemplo al configurar la autenticación integrada y delegación de Kerberos en IIS6, configurar la autenticación de Kerberos en SQL Server (error Cannot Generate SSPI context), al configurar la autenticación de Kerberos en el CSS de ISA Server 2006 (ISA Server cannot connect to the Configuration Storage Server), al configurar MOSS 2007 para invocar un Web Service desde un Formulario InfoPath en NLB, y en alguna otra ocasión más.

Esto hacía que tuviese cierta idea de cómo poder solucionar este problema de conexión a Analysis Server 2005 desde MOSS 2007 (el problema del doble salto, o Double Hop), pero no, me costó un Web !!

Sin embargo, al final conseguí hacer funcionar el invento, y conseguí que un usuario desde su PC, pudiese autenticarse ante MOSS con sus credenciales, y acceder a un servidor remoto de Analysis Services a través de MOSS, utilizando las credenciales del usuario (ni acceso anónimo, ni el usuario del Application Pool). Para ello, realicé principalmente dos tareas:

  • Configurar la autenticación y delegación de Kerberos en MOSS.
  • Configurar la autenticación y delegación de Kerberos en Analysis Services.
  • Configurar el fichero de conexión a Analysis Services (ODC - Office Data Connection) utilizando el nombre completo FQDN.

A continuación, entramos en detalles.

Configuración de Autenticación y Delegación de Kerberos en MOSS

Para la configuración de Autenticación y Delegación de Kerberos en MOSS, tuve que realizar varios pasos de configuración. Al final, debo admitir que me quedó un poco la duda, de si habría funcionado también si no hubiese realizado todos los pasos, pero entre pruebas y reinicios se me fue el tiempo sin conseguir determinarlo, por lo que a continuación se detallan todas las configuraciones que tuve que realizar para conseguir hacer funcionar la Autenticación y Delegación de Kerberos en MOSS.

Paso 1) Configurar SPN (Service Principle Names) de Cuentas de Equipo

Esta configuración no suele ser habitual, ya que se utiliza sólo en aquellos casos en que el servicio que se desea configurar (o el Application Pool) no utiliza una cuenta de usuario, por ejemplo, al utilizar la cuenta Network Service.

En nuestro caso, no aplica, ya que utilizamos en todos los casos una cuenta de usuario. Si fuese al contrario, deberían ejecutarse comandos setspn similares a los que se describen en el paso 2, con la diferencia de que en vez de especificar una cuenta de usuario, se debería de especificar la cuenta de equipo del servidor MOSS.

Paso 2) Configurar SPN (Service Principle Names) de Cuenta de Servicio para HTTP

Antes de ejecutar esta configuración, es necesario determinar los nombres que se desean utilizar para acceder a MOSS (es decir, las URLs) y las cuentas de servicio utilizadas (incluyendo las cuentas utilizadas en los Application Pool de IIS).

En nuestro escenario, utilizamos el nombre NetBIOS del servidor (VMOSS01Mob) para acceder a MOSS (un caso extraño, quiero decir, en producción es típico utilizar nombres DNS y entornos NLB, pero nuestro caso de ejemplo se basa en un pequeño entorno de laboratorio). Adicionalmente, utilizamos una única cuenta de usuario (la cuenta MOSSSvc) para ejecutar todos los servicios de MOSS y también para los Application Pool (tampoco recomendable para entornos productivos, pero en entornos de laboratorio, simplifica bastante la configuración y mantenimiento).

Bajo estas premisas, tan sólo es necesario ejecutar un par de comandos setspn.exe, uno para el nombre largo (FQDN) y otro para el nombre corto, como se muestra en la siguiente pantalla capturada.

Configurar los SPN (Service Principal Name) de HTTP para MOSS, con el comando setspn

Paso 3) Habilitar la Delegación (Trust for Delegation) en las Cuentas de Equipo

La ejecución de este paso, consiste en habilitar la Delegación (Trust computer for Delegation) en las cuentas de equipo de los Frontales de MOSS. Al menos, en mi caso lo he realizado sólo sobre las cuentas de los Frontales de MOSS, en vez de sobre todos los servidores MOSS (ej: Index Server, Excel Services, etc.), y en las pruebas que he realizado el resultado ha sido satisfactorio (igual en un tiempo, resulta que me hacía falta configurarlo sobre el resto de cuentas de equipo, no lo descarto ;-).

Para realizar esta configuración, desde la herramienta administrativa ADUC (Active Directory Users and Computers), mostrar las propiedades de la cuenta de equipo que se desea configurar. Seguidamente, seleccionar la pestaña Delegation, y sobre la misma, seleccionar la opción Trust this computer for delegation to any service (Kerberos Orly), como se aprecia en la siguiente pantalla capturada.

Configurar la opción Trust this computer for delegation.

Téngase en cuenta, que la configuración de esta opción, varía en función del nivel funcional de Directorio Activo. Podría ocurrir que no apareciese la pestaña Delegation, en cuyo caso, se debería activar la opción Trust computer for delegation, que en este caso, se mostrará en la pestaña General. Esto puede generar algo de confusión, pero francamente, no tiene mayor misterio.

Paso 4) Habilitar la Delegación (Trust for Delegation) en las Cuentas de Servicio

Este paso es similar al paso anterior, con la diferencia de que debe aplicarse sobre las cuentas de usuario utilizadas en los servicios y Application Pool de MOSS, en lugar de sobre cuentas de equipo.

En consecuencia, para realizar esta configuración, desde la herramienta administrativa ADUC (Active Directory Users and Computers), mostrar las propiedades de la cuenta de usuario que se desea configurar, seleccionar la pestaña Delegation, y sobre la misma, seleccionar la opción Trust this user for delegation to any service (Kerberos Orly), como se aprecia en la siguiente pantalla capturada.

Configurar la opción Trust this user for delegation.

Si no se muestra la pestaña Delegation sobre la cuenta de usuario, podría ser porque no se configuró previamente el SPN. Otro motivo, el nivel funcional de Directorio Activo (comprobar si aparece la opción Account is trusted for delegation en la pestaña Account).

Paso 5) Modificar la MetaBase de IIS

Esta configuración se realiza ejecutando en cada Frontal de MOSS, un comando para cada Sitio Web de IIS que se desee configurar. En este caso de ejemplo, tenemos un único Frontal de MOSS (VMOSS01Mob) y dos Sitios Web de IIS. Es necesario identificar previamente el ID de cada Sitio Web, algo que podemos obtener desde la herramienta administrativa IIS Manager, como se muestra en la siguiente pantalla capturada.

Como averiguar el Site ID de los Sitios Web de IIS

Los comandos a utilizar, se basan en el script adsutil.vbs, ubicado por defecto en c:\Inetpub\AdminScripts. A continuación se muestra una pantalla capturada con los comandos ejecutados (recordar realizarlo en cada Frontal MOSS).

Configurar Metabase IIS

De forma previa, para quién lo desee, es posible realizar un Backup de la Metabase de IIS6

Paso 6) Habilitar Autenticación Kerberos en las Aplicaciones Web de MOSS

Esta configuración debe realizarse para la Aplicación Web que deseamos configurar. En mi caso, lo configuré también en la Aplicación Web correspondiente a la Administración de los Servicios Compartidos.

Los pasos a seguir son los siguientes. En la Consola de Administración Central de MOSS, seleccionar la pestaña Application Management, y seguidamente seleccionar la opción Authentication Providers de la sección Application Security. En la pantalla Authentication Providers, seleccionar la aplicación que se desea configurar en el desplegable Web Application. Seguidamente, click sobre la zona que se desea configurar (habitualmente, se tratará de la zona Default, que será la única zona existente).

Configurar la Autenticación de la Aplicación MOSS

En la pantalla Edit Authentication, en el apartado IIS Authentication Settings, seleccionar la opción Negotiate (Kerberos), como se muestra en la siguiente pantalla captura.

Configurar la Autenticación de la Aplicación MOSS

Guardar los cambios, y repetir el proceso para el resto de Aplicaciones Web de MOSS que se deseen configurar.

Paso 7) Habilitar Kerberos en los Servicios Compartidos (SSP) de MOSS

Consiste en ejecutar un comando STSADM desde uno de los frontales de MOSS, en particular: STSADM.exe -o SetSharedWebServiceAuthn -negotiate

A continuación se muestra una pantalla capturada.

Habilitar Kerberos en los Servicios Compartidos (SSP)

Paso 8) Habilitar la Delegación en Excel Services

Similar al paso anterior, consiste en ejecutar un par de comandos STSADM desde uno de los frontales de MOSS. Téngase en cuenta, que en el primero de los comandos a ejecutar es necesario especificar el nombre de los Servicios Compartidos sobre los que se desea habilitar Kerberos.

El primer comando a ejecutar es: stsadm.exe -o set-ecssecurity -ssp SSP_NAME -accessmodel delegation

El segundo comando a ejecutar es: stsadm.exe -o execadmsvcjobs

A continuación se muestra una pantalla capturada a modo de ejemplo.

Habilitar la Delegación en Excel Services

Paso 9) Habilitar la Delegación en los Servidores de MOSS (Component Services)

Esta configuración debe realizarse en cada uno de los Frontales de MOSS. Es decir, si tenemos una Granja MOSS con dos Frontales formando un Cluster NLB, será necesario realizar esta configuración en cada uno de los dos Frontales.

La tarea a realizar es muy sencilla. Abrir la herramienta administrativa Component Services, y seleccionar la opción Properties de My Computer, como se muestra en la siguiente pantalla capturada.

Propiedades de My Computer en Component Services

En la pestaña Default Properties, seleccionar el valor Delegate para la opción Default Impersonation Level, como se muestra en la siguiente pantalla capturada.

Configurar Default Impersonation Level en Component Services

Aplicamos los cambios, y hemos terminado (excepto que tengamos que repetirlo en algún otro Frontal de MOSS).

Paso 10) Reiniciar los Frontales de MOSS

Lo de siempre. Si tenemos varios frontales, los reiniciamos de forma ordenada. Sin mucho misterio.

Configurar la autenticación y delegación de Kerberos en Analysis Services

Paso 1) Configurar SPN (Service Principle Names) de Cuentas de Equipo

Esta configuración no suele ser habitual, ya que se utiliza sólo en aquellos casos en que el servicio de Analysis Services no utiliza una cuenta de usuario, por ejemplo, al utilizar la cuenta Network Service.

En nuestro caso, no aplica, ya que utilizamos una cuenta de usuario, en particular la cuenta de dominio SQLSvc. Si fuese al contrario, deberían ejecutarse comandos setspn similares a los que se describen en el paso 2, con la diferencia de que en vez de especificar una cuenta de usuario, se debería de especificar la cuenta de equipo que ejecuta Analysis Services.

Paso 2) Configurar SPN (Service Principle Names) de Cuenta de Servicio para Analysis Services

Tan sólo es necesario ejecutar un par de comandos setspn.exe, uno para el nombre largo (FQDN) y otro para el nombre corto, como se muestra en la siguiente pantalla capturada (damos por hecho, que estos dos nombres, son los únicos que se utilizarán para acceder a Analysis Services).

Configurar el SPN (Service Principal Name) MSOLAPSvc.3 para Analysis Services con setspn

Paso 3) Habilitar la Delegación (Trust for Delegation) en las Cuentas de Equipo

Desde la herramienta administrativa ADUC (Active Directory Users and Computers), mostrar las propiedades de la cuenta de equipo que se desea configurar (en nuestro caso, VSQL01Mob). Seguidamente, seleccionar la pestaña Delegation, y sobre la misma, seleccionar la opción Trust this computer for delegation to any service (Kerberos Orly). Este paso es similar al que se comentó anteriormente para el caso de las cuentas de equipo de MOSS.

Cómo ya se dijo, debe tenerse en cuenta, que la configuración de esta opción, varía en función del nivel funcional de Directorio Activo. Podría ocurrir que no apareciese la pestaña Delegation, en cuyo caso, se debería activar la opción Trust computer for delegation, que en este caso, se mostrará en la pestaña General. Esto puede generar algo de confusión, pero francamente, no tiene mayor misterio.

Paso 4) Habilitar la Delegación (Trust for Delegation) en las Cuentas de Servicio

Este paso es similar al paso anterior, y sobre todo, similar al paso que se comentó anteriormente para el caso de las cuentas de usuario de MOSS, aunque ahora se limita a la cuenta de usuario utilizada para iniciar el servicio de Analysis Services.

En consecuencia, para realizar esta configuración, desde la herramienta administrativa ADUC (Active Directory Users and Computers), mostrar las propiedades de la cuenta de usuario que se desea configurar (en nuestro caso, la cuenta SQLSvc), seleccionar la pestaña Delegation, y sobre la misma, seleccionar la opción Trust this user for delegation to any service (Kerberos Orly).

Si no se muestra la pestaña Delegation sobre la cuenta de usuario, podría ser porque no se configuró previamente el SPN. Otro motivo, el nivel funcional de Directorio Activo (comprobar si aparece la opción Account is trusted for delegation en la pestaña Account).

Paso 5) Reiniciar el servidor de Analysis Services

Sin mayor misterio.

Configurar el fichero de conexión (ODC - Office Data Connection) a Analysis Services

Partimos de un equipo de escritorio (en nuestro caso, un Windows XP) con Office 2007 instalado. Desde el Explorador de Windows, nos ubicamos en My Documents, y hacemos doble-click sobre la opción Connect to New Data Source.odc, como se muestra en la siguiente pantalla capturada.

Crear nuevo fichero de conexión ODC (Office Data Connection)

Esto producirá que se inicie Microsoft Excel. Es probable que se muestre un mensaje de seguridad, como se muestra a continuación. En este caso, click Enable para continuar.

Mensaje de Seguridad de Excel (click Enable)

Se inicia el asistente para la creación de una nueva conexión de datos. Seleccionamos Microsoft SQL Server Analysis Services, y click en Next para continuar.

Seleccionar Microsoft SQL Server Analysis Services en el Data Connection Wizard

Especificamos el nombre de la instancia a la que nos deseamos conectar. En nuestro caso, se trata de una instancia por defecto. Es recomendable utilizar el nombre completo de la máquina (FQDN). Seleccionamos la autenticación de Windows (Use Windows Authentication). Click Next para continuar.

Especificar el nombre del servidor de Analysis Services en el diálogo Connect to Database Server del Data Connection Wizard

Seleccionamos el Cubo al que nos deseamos conectar. Click Next para continuar.

Seleccionar el Cubo de Analysis Services al que nos deseamos conectar

Especificamos el nombre del fichero ODC que deseamos crear, la descripción y el nombre amigable que deseemos. Click Finish para continuar.

Especificar el nombre del fichero de conexión ODC y otras propiedades.

Llegados a este punto, se habrá creado el fichero ODC (Office Data Connection) correspondiente a nuestra conexión a Analysis Services.

El fichero ODC (Office Data Connection) ya está creado

Ahora sólo queda subir el fichero ODC a la correspondiente librería de MOSS, bien manualmente (haciendo un upload, como se hace con cualquier otro tipo de documentos), o bien desde Excel. En este último caso, seleccionaremos la opción Connections de la pestaña Data.

Botón Connections de Excel 2007

En el diálogo Workbook Connections, seleccionamos la conexión deseada, y click Properties.

Diálogo Workbook connections de Excel 2007

En el diálogo Connection Properties, seleccionaremos la pestaña Definition, y click en el botón Export Connection File.

Propiedades de la conexión en Excel

En el diálogo File Save, escribimos en la caja File Name la URL sobre la que deseamos almacenar el fichero de conexión ODC, y click Save.

Exportar el fichero de conexión desde Excel 2007

Si se muestra el diálogo Web File Properties, ajustamos el valor de los campos mostrados, y click OK para continuar.

Espeficar los datos que MOSS nos solicite al guardar el fichero

Y ya está. Por fin, hemos creado nuestro fichero de conexión ODC a Analysis Services, y lo hemos subido a MOSS, para poder empezar a utilizarlo.

Comprobar el funcionamiento de la nueva configuración realizada

Finalmente, no hay nada como comprobar que todo funciona correctamente. En nuestro caso, es suficiente con intentar crear en MOSS un nuevo Indicador KPI desde Analysis Services, y al especificar el fichero de conexión apropiado (ODC - Office Data Connection file), comprobar que se consigue acceder a Analysis Services y se muestran las KPIs disponibles. A continuación, se muestra una pantalla capturada.

Comprobar que funciona correctamente la conexión a Analysis Servides desde MOSS 2007. Kerberos funciona.

Uff. Qué alivio.

Conclusiones finales y enlaces de interés

Tras ejecutar la configuración descrita en este artículo, se pueden sacar algunas conclusiones.

Por ejemplo, para conseguir poner en funcionamiento la Autenticación y Delegación de Kerberos ha sido necesario ejecutar algunos comandos y configuraciones propias de MOSS, a través de STSADM y de la Consola de Administración Central. Estas son configuraciones específicas de MOSS 2007.

Del mismo modo, también ha sido necesario realizar configuraciones comunes, que suelen realizarse al configurar la Autenticación y Delegación de Kerberos en otros entornos distintos a MOSS. Véase el caso de la configuración de los SPN (Service Principal Name), y de habilitar la Delegación de Kerberos (Trust for Delegation) en cuentas de equipo y de servicio.

Una configuración que me ha llamado la atención, es la correspondiente al Paso 9, Habilitar la Delegación en los Servidores de MOSS (Component Services). El motivo, es que nunca anteriormente había tenido que tocar esta propiedad, por lo que no descarto que en alguna otra configuración de Kerberos (ajena a MOSS) que pueda encontrarme en un futuro, me resulte necesario.

Por último, aprovecho para colgar algunos enlaces de interés, de los cuales quiero destacar los correspondientes al sitio A Marvellous Point, de Martin Kearn (buenísimo).

Martin Kearn, ha dejado de dar continuidad al sitio A Marvellous Point, y ahora escribe en el Blog de la MDSN UK SharePoint Team, para quien quiera darle un vistazo.

Actualizado 26/02/2010. Aprovecho para incluir un par de enlaces de interés:

Poco más. Como siempre, espero que os resulte de utilidad.


Miembros de
Miembros de GITCA (Global IT Community Association)

Menu de Usuario
  Iniciar Sesión
  Registrarse
  Restablecer Contraseña
  Ventajas de Registrarse

Acerca de
  Contigo desde Oct 2007
  771 usuarios registrados
  86146 pageloads/mes
  Ranking Alexa 498160

Social Networks
Sigue a Portal GuilleSQL en Linkedin !!
Sigue a Portal GuilleSQL en Twitter !!



Archivo

Julio de 2018 (1)
Junio de 2018 (4)
Mayo de 2018 (5)
Abril de 2018 (3)
Marzo de 2018 (2)
Febrero de 2018 (7)
Enero de 2018 (1)
Diciembre de 2017 (15)
Noviembre de 2017 (7)
Junio de 2017 (3)
Mayo de 2017 (1)
Marzo de 2017 (3)
Enero de 2017 (4)
Junio de 2016 (1)
Mayo de 2016 (2)
Abril de 2016 (2)
Septiembre de 2015 (2)
Agosto de 2015 (2)
Junio de 2015 (10)
Mayo de 2015 (4)
Abril de 2015 (8)
Marzo de 2015 (11)
Octubre de 2014 (3)
Septiembre de 2014 (7)
Agosto de 2014 (5)
Julio de 2014 (2)
Mayo de 2014 (4)
Abril de 2014 (4)
Marzo de 2014 (4)
Febrero de 2014 (1)
Enero de 2014 (5)
Diciembre de 2013 (8)
Noviembre de 2013 (2)
Octubre de 2013 (7)
Septiembre de 2013 (6)
Agosto de 2013 (1)
Julio de 2013 (6)
Junio de 2013 (11)
Mayo de 2013 (7)
Abril de 2013 (6)
Febrero de 2013 (5)
Enero de 2013 (7)
Diciembre de 2012 (12)
Noviembre de 2012 (13)
Octubre de 2012 (5)
Septiembre de 2012 (3)
Agosto de 2012 (6)
Julio de 2012 (4)
Junio de 2012 (1)
Mayo de 2012 (2)
Abril de 2012 (7)
Marzo de 2012 (16)
Febrero de 2012 (9)
Enero de 2012 (5)
Diciembre de 2011 (10)
Noviembre de 2011 (10)
Octubre de 2011 (4)
Septiembre de 2011 (5)
Agosto de 2011 (2)
Julio de 2011 (2)
Junio de 2011 (4)
Mayo de 2011 (2)
Abril de 2011 (6)
Marzo de 2011 (4)
Febrero de 2011 (10)
Enero de 2011 (5)
Diciembre de 2010 (6)
Noviembre de 2010 (4)
Octubre de 2010 (8)
Septiembre de 2010 (4)
Agosto de 2010 (1)
Julio de 2010 (3)
Mayo de 2010 (5)
Abril de 2010 (6)
Marzo de 2010 (8)
Febrero de 2010 (3)
Enero de 2010 (1)
Diciembre de 2009 (9)
Noviembre de 2009 (14)
Octubre de 2009 (2)
Septiembre de 2009 (8)
Agosto de 2009 (2)
Julio de 2009 (10)
Junio de 2009 (9)
Mayo de 2009 (10)
Abril de 2009 (9)
Marzo de 2009 (3)
Febrero de 2009 (2)
Enero de 2009 (3)
Noviembre de 2008 (2)
Octubre de 2008 (2)
Septiembre de 2008 (2)
Agosto de 2008 (5)
Julio de 2008 (5)
Junio de 2008 (1)
Mayo de 2008 (3)
Abril de 2008 (2)
Marzo de 2008 (2)
Febrero de 2008 (2)
Enero de 2008 (5)
Noviembre de 2007 (2)
Octubre de 2007 (2)






Copyright © 2007 GuilleSQL, todos los derechos reservados.