Por: Tomas Restrepo
Este corto
artículo presenta una introducción a uno de las facilidades más importantes,
pero tal vez menos visibles desde el exterior, que componen a BizTalk Server
2004: El Servicio de Enterprise Single Sign-on (SSO). Esta introducción se presenta desde el punto de vista de
funcionalidad ofrecida y de la arquitectura del servicio de SSO.
Mucha parte de
este artículo aplica también para la implementación de SSO disponible con Host
Integration Server 2004.
El Enterprise Single
Sign-on es un servicio que permite el mapeo de credenciales de seguridad entre
Windows y otros sistemas heterogéneos, permitiendo que los usuarios puedan
acceder diferentes aplicaciones con un solo conjunto de credenciales,
particularmente en escenarios de Enterprise Application
Integration (EAI).
El SSO funciona
con base a la definición de mapeos entre diferentes entornos que manejan
diferentes mecanismos de seguridad, de forma tal que los aplicativos de EAI
puedan hasta cierto punto "fluir" las credenciales de seguridad a través de
toda la infraestructura tecnológica de la organización, sin importar que
diferentes sistemas utilicen diferentes conjuntos de credenciales de seguridad.
Un ejemplo de un
escenario donde el SSO puede resultar valioso es el siguiente:
La compañía Contoso usa el Directorio Activo de Windows como su sistema primario de autenticación de usuarios. Sin embargo, todos los usuarios requieren adicionalmente de acceso a la instalación del ERP de la compañía, pero este no está integrado con AD, sino que maneja sus propias listas de usuarios. Adicionalmente, los nombres de los usuarios no son iguales entre AD y el ERP.
Contoso quiere implementar un proceso de negocio automatizado en la que un usuario Pepe envía una solicitud que es recibida por BizTalk Server, que ejecuta una orquestación. Dicha orquestación debe, en un momento dado, ejecutar una tarea en el ERP, pero debe hacerlo autenticándose frente a dicho sistema como si fuera Pepe mismo quien realizó la operación, usando su nombre de usuario correspondiente en el ERP (Usuario PepeERP).
Este es un caso
protópico donde la funcionalidad de SSO podría usarse para permitir a BizTalk
Server mapear las credenciales de AD del usuario Z al nombre de usuario y
password correspondientes en el ERP, permitiendo que BizTalk pueda así autenticarse
con las credenciales correctas frente al mismo.
Una pregunta que
puede surgir frente a SSO es cual es su relación y sus diferencias con el
Microsoft Identity Integration Server 2003 (MIIS), otro de los productos de
servidores de Microsoft.
Aunque en primera
instancia ambos productos podrían parecer similares, realmente se enfocan a
necesidades diferentes del tema de integración de identidades. El problema que
realmente resuelve MIIS en este punto es el de mantener sincronizadas las diferentes
identidades que se han definido en diferentes sistemas de autenticación; es
decir, que cuando se crea una nueva identidad en Windows se asegure que se cree
en otros sistemas asociados, que cuando se modifique o se cambie el password de
una identidad, se repliquen dichos cambios a los demás sistemas, etc. MIIS
trata es de disminuir el costo administrativo y operacional de tener múltiples
aplicativos y sistemas operativos que manejan listas de usuarios diferentes.
SSO por el otro
lado, intenta es proporcionar una infraestructura para simular un login único
para el usuario corporativo frente a una plataforma tecnológica heterogónea,
dentro del ambiente de aplicativos de integración.
Desde este punto
de vista, realmente podría decirse que MIIS y SSO son productos
complementarios. Sin embargo, hasta el momento Microsoft no ha anunciado
ninguna facilidad o herramienta que permita integrar ambos aplicativos.
La arquitectura
básica del Enterprise Single Sign-on es compuesta por 5 módulos principales:
La arquitectura
del SSO es una arquitectura esencialmente distribuida, compuesta por un Master
Secret Server (único en la estructura del dominio de SSO), un conjunto de uno o
más Single Sign-on Servers, y el Credential Store (una DB de SQL Server). La diferencia
entre el MSS y el SSO es que solo el MSS corre el Secret Subservice. En una
arquitectura pequeña, el Master Secret Server y el SSO Server pueden ser uno
solo.
Lo que hasta aquí
probablemente no es claro es cual es la importancia del Secret Subservice, y porque es el elemento diferenciador entre
ambas clases de servidores.
El Credentials
Store de SSO es no solo responsable de almacenar la configuración del SSO
misma, sino que es además responsable de almacenar los diferentes usuarios y
grupos asociados a cada aplicación o sistema contra el que se desea mapear
credenciales. Como estos mapeos pueden incluir tanto nombres de usuarios como
de grupos, y adicionalmente contraseñas u otros tokens de autenticación
(conocidos como "secretos"), es crítico que la información allí almacenada este
completamente encriptada para que este segura.
Este precisamente
es el papel del Master Secret Server (MSS). Lo que tiene el MSS que lo diferencia
de los demás servidores en la infraestructura de SSO es precisamente la clave
primaria con que se encriptan los contenidos en el Credentials Store; el MSS es el único servidor autorizado en la
infraestructura para encriptar los datos que se van a almacenar allí.
Los demás
servidores en la infraestructura solo pueden acceder el Credentials Store para
leer de allí las credenciales almacenadas, ya que solo pueden realizar la
desencripción de sus contenidos (solo conocen la clave de decodificación).
Ya aquí se pueden
visualizar varios elementos claves para que esta arquitectura sea realmente
funcional. El punto quizá más importante es que la clave maestra debe
mantenerse segura a toda costa, por varias razones:
La segunda de
estas razones es clave para entender el segundo requerimiento de esta
arquitectura: Si cambia la clave maestra, manejada por el Master Secret Server, este cambio debe notificarse a los demás
servidores en la infraestructura de SSO; en caso contrario estos no podrían
acceder la información de mapeos almacenada y la estructura colapsaría.
Para resolver
este detalle, el Enteprise Single Sign-on tiene un mecanismo interno de
replicación de esta información, que se hace en forma automática cada 30
segundos sobre protocolos de RPC seguros (canales encriptados).
El tercer punto crítico de esta
arquitectura es que aunque el Master Secret Server es crítico para la administración y encripción de la
información en el Credentials Store, no es crítico para la operación de la
infraestructura de SSO en tiempo de ejecución. Es decir, que si por alguna
razón el Master Secret Server saliera
de línea, la infraestructura restante de SSO seguiría operando pues tendría
acceso al Credentials Store (siempre
y cuando esta base de datos de SQL Server no está desplegada en la misma
maquina que el MSS) y podría seguir accediendo y desencriptando los mapeos allí
almacenados, que es la operación más común en una infraestructura de SSO.
Dentro de una
estructura de SSO, aparece el concepto de Aplicación Afiliada. Una aplicación
afiliada es definida por el administrador del SSO como una entidad lógica que
representa un sistema o aplicación que va a hacer uso del SSO para aceptar
conexiones o conectarse a otros sistemas.
Cada Aplicación
Afiliada tiene uno o más mapeos de credenciales, como por ejemplo mapear entre
usuarios del Directorio Activo y cuentas en un Mainframe.
Normalmente,
cuando se configura una Aplicación Afiliada, se definen las siguientes
propiedades básicas:
Propiedad |
Descripción |
Nombre |
Nombre asignado
a la aplicación. Ej: SAP |
Descripción |
Descripción de
la aplicación |
Contacto |
Dirección EMail
del contacto administrativo para esta aplicación |
Administrador |
Se designa un
usuario del dominio para administrar la configuración de esta aplicación |
Usuarios |
Usuarios del directorio
activo que pueden acceder esta aplicación. Para esto se define un grupo del
directorio activo que representará los usuarios que tendrán acceso a esta
aplicación afiliada (es decir, acceso a los mapeos definidos en la
aplicación). |
Banderas |
Conjunto de
banderas de control de la aplicación. |
Un punto crítico
al diseñar la Aplicación Afiliada son los valores a asignar a las propiedades
Group Application y Configuration Store Application.
La propiedad
Group Application indica que va a usar Grupos para el mapeo de credenciales. En
caso contrario, usa credenciales de usuarios individuales. En una aplicación
con Group Application = falso, un usuario del directorio activo se mapea a otra
cuenta de usuario individual de la aplicación afiliada (es decir, el mapeo es
normalmente 1 a 1). En una aplicación con Group Application = verdadero, todos
los usuarios de un grupo de Windows se mapean a un solo usuario en la
aplicación afiliada (es decir, el mapeo es muchos a uno).
La propiedad
Configuration Store Application se fija a verdadero, entonces esta Aplicación
Afiliada se usará para guardar en forma segura información de configuración. No
es una opción muy común, pero un ejemplo de esto es que BizTalk Server utiliza
aplicaciones de este tipo para almacenar configuración de los puertos de envío
y recepción
El uso del SSO
tiene varias ventajas y desventajas básicas que son importantes a tener en
cuenta a la hora de decidir si usar o no la funcionalidad provista por el SSO.
La ventaja más
importante es que es una infraestructura ya provista por BizTalk y HIS mismos,
con lo que tenemos la seguridad de que es una infraestructura robusta,
escalable y segura; probablemente más de lo que podría desarrollarse a mano
para casos puntuales en cada proyecto. Adicionalmente, hay buena integración
con ambos productos, por lo que existen facilidades en los mismos para tomar
ventaja del SSO fácilmente sin requerir de mucho desarrollo adicional (quizá en
un artículo más adelante veremos como hacer uso de estos mecanismos).
Quizá la
desventaja más grande en el uso del SSO es que la documentación es
relativamente poca, y es algo confusa. Adicionalmente, actualmente el servicio
de Enterprise Single Sign-on cuenta con muy pocas herramientas administrativas,
y estas no son precisamente muy fáciles de usar o intuitivas (consisten
solamente de un par de herramientas de línea de comando que toman archivos XML
como entrada). Finalmente, actualmente el implementar una infraestructura de
SSO puede ser administrativamente costoso, puesto que es necesario hacer las
labores de sincronización de las cuentas de usuarios entre los sistemas
manualmente (es decir, actualizar los mapeos de SSO cada vez que hay cambios en
las cuentas o contraseñas).
Con esto concluye
esta corta introducción al algo misterioso mundo del servicio de Enterprise
Single Sign-on, parte de la nueva generación de productos de Integración de
Microsoft. Espero que con esto puedan entender más claramente cual es el rol de
SSO dentro de la arquitectura de estos productos, y los posibles beneficios que
puede tener en la implementación de soluciones de EAI.