Archivo de la etiqueta: fim

Borrado de objetos fantasma del metaverso

Como ya hemos visto en una introducción a FIM/MIM, este producto es un poderoso sistema de sincronización de identidades. Para hacer su misión, guarda información de objetos de diversos tipos en el Metaverso, que actúa a la vez como origen y destino de información.

Para traer la información al Connector Space de un Management Agent (MA), se dispone de dos operaciones: full import y delta import. Estas operaciones, como su nombre indica, están pensadas para jugar dos roles en el proceso: En primer lugar traer todos los objetos, y luego detectar cambios en los mismos. Una vez finaliza cualquiera de estas operaciones, se hace una operación de sincronización (full sync/delta sync) y los cambios se escriben en el metaverso al tiempo que se reciben actualizaciones desde el metaverso, que luego haya que exportar.

En la mayoría de ocasiones, los MA que se configuran, disponen para la operación delta import de mecanismos que permiten detectar no sólo los cambios en el valor de los atributos, sino también si algún objeto se ha eliminado. Por otro lado, dada la naturaleza de los sistemas a los que se conectan los Management Agents, hay ocasiones en las que la eliminación de un objeto no se puede detectar porque el objeto ha desaparecido por completo del sistema origen, lo que impide la trazabilidad del evento. Esto implica, que existe un objeto en el metaverso que no debería existir : Un objeto fantasma.

Happy-Haunting-Ghost-Banner

Una forma de solucionar esta situación consiste en ejecutar una operación Full Import, lo que permite al Connector Space detectar todas las eliminaciones “fantasma”, y propagar los cambios al metaverso. Sin embargo, es posible encontrarse en una situación en la que el connector space tiene un tamaño de cientos de miles, o millones de registros, y completar una operación de Full import bajo dichas condiciones puede suponer varios días de trabajo. Dependiendo de la situación, esto no es una estrategia viable, ya que requiere una planificación cuidadosa, y una parada de servicio del sistema de sincronización, que durante varios días no va a actualizar la información de los sistemas conectados dentro de los intervalos habituales de tiempo.

Otra forma de resolver esta situación… es actuar de forma proactiva, y prohibir en los sistemas origen que se produzca el borrado físico de objetos, de forma que el problema nunca se produce, y por tanto, no hay que hacer nada más al respecto.

Afortunadamente, aunque ya sea porque no se puede cambiar la forma de trabajo o porque una operación de Full Import se prolongaría demasiado en el tiempo, se dispone de una tercera alternativa. Usar un Management Agent adicional que se encargue de hacer la limpieza. En esencia, lo que se hace es añadir los objetos a eliminar a este management agent, usando algún atributo que los identifique de forma unívoca, se les hace un JOIN, configurar una regla de eliminación, provocar una desconexión, y la desconexión lanzará un delete.

Creación de un Management Agent de CSV: “Delimited Text File”

El conector más sencillo que se puede usar para este propósito es el conector de CSV. Principalmente porque es posible alimentarlo con datos extraídos directamente del metaverso, además de por la sencillez con la que se puede configurar.

Lo primero es determinar qué objetos son los que se desea eliminar. En este caso, se acude a la pestaña “Metaverse Search”, y por motivos didácticos, se ordenan los objetos devueltos por el campo ObjectID para seleccionar algunos de ellos (los primeros). Hay que tener en cuenta que el ObjectID de los objetos existentes en el Metaverso es diferente del ObjectID de los objetos existentes en el Connector Space de cada MA, así que es importante coger el del Metaverso. Es importante en este paso fijarse en el número de objetos que pueblan el Metaverso: 4683.

MVCapture2

Lo más destacable de esta fase, es que se pueden elegir los campos que se desea obtener en la búsqueda del metaverso, seleccionar los objetos con el ratón, y copiarlos con Ctrl+C. Esto genera una copia en CSV en el portapapeles que se puede pegar a voluntad en el archivo de texto que se va a utilizar para el MA.

cleanupCSV

Ahora que ya se tiene el archivo CSV, y está definido el formato de los datos que se van a utilizar, es hora de pasar a crear y configurar el Management Agent de CSV. Como indica el título de esta sección, es el MA “Delimited Text File”. En las siguientes capturas de pantalla se van a especificar las principales opciones que hay que tener en cuenta a la hora de especificar los parámetros del MA, para que pueda ser usado con la finalidad deseada.

En primer lugar, seleccionar un archivo CSV que contiene el formato de los datos que el MA va a importar. Se puede definir el mismo archivo que se ha creado previamente.

template

A continuación, toca configurar algunos parámetros del CSV para asegurarse de que el MA lo lee correctamente: Separadores de atributos, cómo definir los nombres de atributos…

format

En esta pantalla se define el anchor y el tipo de dato de los atributos, además de indicar si son multivaluados (array) o no. El anchor es equivalente a la clave primaria, indentificando de forma inequívoca e irrepetible al objeto. De esta forma todos los atributos de los objetos quedan perfectamente definidos.

attributes

Toca definir las reglas de JOIN. En este caso, el join se hace en base al ObjectID. Este atributo es siempre único para cada objeto creado, tanto en el connector space como en el metaverso. Dado que lo que se desea es unir los objetos del Connector Space del MA de CSV con su equivalente en el metaverso, este ObjectID es el mismo existente en el metaverso. Así, se establece el enlace correcto entre objetos, y no es necesario crear un CSV grande con multitud de campos que permitan hacer el Join.

joinRule

Es de vital importancia especificar que el comportamiento de deprovisionamiento sea “Make them disconnectors”. Esta parte juega un papel importantísimo, a posteriori, porque se especifica en las reglas de borrado de los objetos del metaverso que un elemento se borre cuando uno de sus enlaces en el Connector Space del MA de CSV pase al estado “disconnector”.

DeprovisioningCSV

A continuación, se guarda la configuración del Management Agent, y se procede a modificar la política de eliminación de objetos tipo “Person” del Metaverso. En esta pantalla, hay dos opciones: O se elimina el objeto cuando el último conector se desconecta (ignorando los conectores de ciertos Management Agents), o bien eliminar cuando un conector de alguno de los Management Agents elegidos se desconecta. Se elige esta última opción y se marca el conector de limpieza (llamado CleanUp) en este caso. Se han ocultado los nombres de los otros MAs que hay desplegados en esta implementación de MIM porque no son relevantes para el caso que nos ocupa.

DeletionRule2

Con esto, ya se está listo para empezar el proceso de eliminación. Lo primero que hay que hacer es poblar el Connector Space con los objetos necesarios. Para ello, hay que configurar los perfiles de ejecución de “Full Import” y “Full Sync” para el MA de limpieza. A la hora de configurar el Full Import, se pide la localización física del archivo CSV que contiene los datos a importar. Este CSV debe residir en una carpeta específica, creada dentro de la estructura de carpetas del MIM en el momento de guardar el Management Agent.

ConfigureFullImportCSV

Una vez creados los perfiles de Full Import y Full Sync, toca ejecutarlos:

Se puede observar que como resultado del Full Import, se han añadido 15 objetos, que son los que se habían añadido al CSV originalmente. Esto se puede comprobar haciendo una búsqueda en el Connector Space, o simplemente clicando sobre el enlace “Adds” que aparece en la ventana de resultados.

FullImportCSV2

La consecuencia del Full Sync, con la regla de JOIN especificada anteriormente, es que se ejecuta la operación JOIN sobre los objetos del Connector Space, que pasan a su vez a estar enlazados con los objetos que ya residían en el metaverso y que se desean eliminar.

FullSyncCSV2

Ahora llega la parte interesante. Para eliminar los objetos del metaverso hay que convertir en desconectores los que tenemos en el Connector Space del MA de limpieza. La forma más sencilla de conseguirlo es borrando el Connector Space del MA de limpieza y haciendo un Full Sync. Al hacerlo, automáticamente los objetos desconectados eliminarán los correspondientes objetos del Metaverso, limpiando de forma efectiva los datos basura que no se habían eliminado de forma adecuada.

 

Conclusión

Como se puede ver en la siguiente captura, en el Metaverso quedan 4668 objetos, de los 4683 que había originalmente. Los 15 objetos que han sido gestionados con el MA de CSV para la operación de limpieza han desaparecido por completo del Metaverso, y ya no aparecerán en subsecuentes operaciones de sincronización en los otros MA que habían contribuido estos datos. Una operación sencilla, que ha permitido eliminar objetos que de otra forma no hubiesen desaparecido del Metaverso si no se realizan las operaciones de Full Import/Full Sync en el MA que creó los objetos.

endResult

Bonus

Una alternativa diferente de conseguir la limpieza pasa por utilizar el conector de SQL, esto se puede consultar en la url https://konab.com/using-cleanup-ma-fim-2010/

Envio de correo desde FIM (Conector de WebServices)

Hola a todos, hoy vamos a tratar un tema radicalmente distinto a mi habitual post de PowerShell. En este caso, vamos a hablar del conector de Web Services para FIM, y cómo se puede añadir un flujo para que envíe correo. En primer lugar, y a grosso modo, hablemos de FIM:

 Brevísima introducción a FIM

Forefront Identity Manager, FIM para los amigos,  es un gestor de Identidad. Su última versión ha sido renombrada como Microsoft Identity Manager (MIM), que en el futuro recibirá nuevos artículos en este blog. La parte más importante del producto es el Synchronization Service (FIM Sync), aunque también dispone de una funcionalidad llamada FIM Portal (basado en Sharepoint) que ayuda a simplificar algunas tareas de gestión. Su función consiste en sincronizar la identidad de los usuarios a través de muy diversos entornos. Dicho así suena a que es algo muy fácil, pero en realidad, la gestión de identidad puede suponer un dolor de cabeza muy serio en cuanto tenemos más de una única fuente de datos en la que se encuentre la identidad de los usuarios.

Vamos por partes: Entendemos por identidad como la esencia que identifica de forma inequívoca a una persona. En el caso de Active Directory, la identidad de una persona coincide con su cuenta de usuario. Pero ¿Qué sucede si lo que se tiene de esa persona es una tabla en una base de datos de Recursos Humanos? En muchos casos, lo que se hace es enviar un correo electrónico con los datos de dicha persona (su identidad) al administrador de Active Directory, quien procede al alta de dicha persona. En ocasiones, se ha automatizado el proceso, de forma que dar de alta a una persona en la BBDD de Recursos Humanos automáticamente crea una cuenta en Active Directory.

Ahora bien, ¿Qué sucede si con el paso del tiempo, el usuario notifica al administrador de Active Directory que ha cambiado su domicilio, pero no lo notifica a Recursos Humanos? O bien el administrador se encarga de decirle al responsable de RRHH que hay que cambiar el domicilio, o bien… siempre cabe la posibilidad de que el domicilio se quede sin cambiar.
La situación se complica, si además hay que gestionar la identidad del usuario en más de uno o dos sistemas diferentes. Máxime si uno de los sistemas es además un sistema personalizado propio y exclusivo de la empresa.

Forefront Identity Manager entra para poner un poco de orden en todo este caos de identidad. FIM, como herramienta, posee una base de datos llamada “Metaverso”, en la que va a guardar metadatos de todas las fuentes de identidad configuradas, y se encarga de poner en orden todo ello, asignando los datos correctos a la identidad (única e irrepetible) de una persona. Pero no sólo actúa de repositorio y almacén central de datos, adquiridos mediante conectores de muy diversa naturaleza. Sino que además, actúa como sincronizador, y se encarga de distribuir los cambios que se realicen a la entidad “usuario” a todos los sistemas afectados, de forma que los datos de dicho usuario Siempre estén en sincronía.

Para poder hacer esto, FIM proporciona una serie muy amplia de conectores, llamados Management Agents, que se pueden conectar a infinidad de orígenes de identidad, como puede ser Active Directory, Microsoft SQL Server, tablas en una Base de Datos, líneas en un archivo CSV…. la variedad es inmensa. Pero pese a la gran variedad de conectores disponibles, siempre queda la posibilidad de que una empresa esté usando un sistema de gestión de identidad propio… que debe ser sincronizado con otros sistemas. Un ejemplo, puede ser una aplicación personalizada de gestión de recursos humanos.

Para este tipo de sistemas, FIM proporciona herramientas que permiten la creación/desarrollo de nuevos Management Agent, ya sea el conector ECMA 2.0, o el conector basado en WebServices.

De los dos, a priori, el que parece más sencillo de usar, pero al mismo tiempo aparenta ser el más limitado, es el conector de WebServices. Pero eso es sólo en la superficie. Ya que al profundizar en él, no es tan sencillo de utilizar ni tampoco es tan limitado como parece. Así pues, y tras esta larga introducción ¿qué mejor forma de mostrar su potencia, que mostrando un pequeño snippet que nos permite enviar un correo desde FIM?

 Prerrequisitos

Para poder replicar el contenido de este post, es necesario más trabajo del habitual. La versión de FIM sobre la que se ha trabajado es FIM 2010 R2. Como requisito base, se va a necesitar un Active Directory, así que es necesario tener un laboratorio de AD con al menos un DC. También es necesario tener un Microsoft SQL Server instalado y configurado (aunque puede estar funcionando en la misma máquina donde se despliegue FIM Sync). La buena noticia, es que en ambos casos, tanto SQL Server (2008/2012) como FIM 2010R2 tienen una trial de 180 días, así que es posible desplegarlos sin preocupaciones, que nos van a durar casi 6 meses. Finalmente, y dado que se usa el conector de web services, es buena idea tener una máquina adicional con IIS en la que se despliegue un web service. Y ya puestos a pedir, también viene bien tener un Visual Studio con el que desarrollar el web service (por simplicidad), aunque es perfectamente posible implementar un web Service SOAP que se pueda usar en Apache y PHP.

Pregunta del millón: Si se va a utilizar FIM y el conector de Web Services para enviar correo, ¿realmente es necesario montar un servidor con un webservice (por muy simple que sea) para que todo esto funcione? La respuesta es . FIM va a comprobar que el conector tiene definido un web service y un tipo de objeto que va a leer en sus operaciones. Así que si no existen ni el objeto ni el servidor del que lo va a leer… no se va a poder crear el conector en el cliente de FIM Sync.

EstructuraServidoresEn definitiva, se necesita tener al menos tres máquinas virtuales en un laboratorio de AD: Domain Controller, un Servidor Web, y la máquina de FIM (que simultáneamente hospeda SQL Server). Esta configuración FIM-SQL_Server no es la aconsejada para despliegues físicos, pero en cambio, ésta es la configuración recomendada si se va a desplegar un servicio de FIM Sync en Azure

Conector de WebServices

Este conector está basado en Windows Workflow Foundation (WWF). Bueno, en un subconjunto de WWF, para ser más precisos. Esto de entrada ya parece un limitante, pero con suficientes dosis de creatividad, es posible hacer casi de todo.

Para poder trabajar con este conector, se utiliza un editor llamado “Web Service Configuration Tool“, absolutamente minimalista, pero que cumple con su cometido a la perfección. De entrada, se puede ver que hay tres secciones bien diferenciadas: Discovery, Object Types y Test Connection.

interface

  • Discovery es la sección donde se puede editar y añadir nuevos Web Services, en este caso basados en SOAP, aunque instalando una actualización también es posible usar servicios REST.
  • Object Types es la sección donde se definen los objetos que se van a sincronizar con FIM. Cuando se configura, aparecen las opciones para añadir el código WWF que va a gestionar las operaciones de Full Import, Delta Import, y Export (delete-add-replace) relacionadas con ese objeto. Estos objetos, se proyectan directamente en el metaverso de FIM a la hora de crear el Management Agent, así que es seguro decir que hay total libertad a la hora de definir los Object Type.
  • Finalmente, la sección Test Connection es la que vamos a usar en este post.

Obviamente, las cosas no son tan sencillas como decir “vamos a hacer un test de envío de correo” y listo. En este caso, para poder hacer el test, FIM hace comprobaciones sobre los archivos de configuración creados con la herramienta. Se fija en detalles tan insignificantes como que la herramienta se va a conectar a un Web Service SOAP existente, o que los datos que devuelve el Web Service son compatibles con un Object Type detallado previamente, etc. Por eso es necesario contar con una máquina adicional que

Cómo crear un Web Service en Visual Studio, e instalarlo en un servidor IIS adicional para que FIM pueda leerlo, es un tema aparte que merece un mini-post para detallarlo. Simplemente decir, que para que todo esto pueda funcionar con el Web Service Configuration Tool en modo SOAP, es necesario tener un web service accesible, y que haya sido configurado en la herramienta, de forma que pueda pasar las validaciones de FIM Sync. Para ello, simplemente acudimos a la sección de Discovery, y añadimos un nuevo servicio, con tipo de tipo de credencial none y con modo de seguridad none. Al fin y al cabo, es un servicio de pruebas, y no es necesario complicarse aún más con modelos de autenticación.

nuevoServicioSOAP

A continuación añadimos un objeto, para que las validaciones de FIM no se quejen y nos digan que el conector no es válido. Sumamente sencillo y rápido, que lo importante no es crear el objeto en el configurador

objetoMetaverso

Ahora que ya está todo preparado (Active directory, despliegue de máquinas, servicio web…) vamos a lo importante: cómo enviar correo.

Envío de Correo: Uso de la sección Test Connection

Con todo ya preparado, ¡toca ponerse manos a la obra! Tenemos el Web Service Configuration Tool, así que toca empezar a mover componentes. Como estamos trabajando con Windows Workflow Foundation, todo va a ser bastante visual, y sobre todo, hay que tener en cuenta que el código se incrusta dentro de bloques denominados secuencias.

Lo primero: Definir las variables que necesitamos para desarrollar el proyecto.

vars

El editor de configuración, dispone de tres secciones interesantes en la parte inferior de la ventana de edición de código: Variables, Arguments, Imports. Para el uso que importa en este artículo, sólo se va a hacer uso de la sección “Variables”, en la que definimos las variables que se van a utilizar. Es importante señalar dos apartados de esta sección: Scope que indica el ámbito de la variable, dentro de una secuencia, y Variable Type, que es donde definimos el tipo de las variables. En Variable Type, se muestra una serie de tipos predefinidos aunque, y aquí entra la magia, es posible buscar cualquier clase presente en el .NET framework para utilizarla como tipo de variable.

advancedTypes_WSConnectorEstablecer que las variables estén en el scope “sequence” (el top-level) es el equivalente a definirlas como variables globales que estarán disponibles para todas las secuencias que se creen dentro de la secuencia padre.

A continuación, es necesario definir la estructura de lo que es necesario para enviar un correo. Los pasos básicos. Esto lo vemos en la siguiente captura de pantalla:

overView Tenemos una Secuencia, que es el cuerpo principal del programa en WWF que se va a “escribir” en la sección de “Test Connection”. En esta secuencia, se añade una nueva secuencia, y se la llama “SendMail”. Una secuencia equivale conceptualmente a una función. Es una agrupación de elementos, que se puede plegar y desplegar a voluntad para ocultar sus contenidos. En este caso, la secuencia SendMail tiene tres partes: Una que es el cuerpo del Mensaje, que se define asignando un valor a una variable, otra sección que es “configurar Servidor SMTP”, y una última sección que es “Enviar Mail”. Estas secciones se despliegan a continuación para mostrar sus contenidos.

configurarSMTP

En la secuencia de “Configurar Servidor SMTP”, lo que se hace es configurar el objeto del tipo SMTPClient que se definió al principio del proceso. Para mejorar la claridad de lo que se hace, hemos renombrado las acciones del tipo “assign” para que su descripción muestre la ruta completa de variables que se está asignando. Convenientemente, las credenciales para conectar al servidor SMTP quedan oscurecidas dentro del textbox en el que están escritas, pero para que lo tengamos claro, son un objeto del tipo Net.NetworkCredentials. Para simplificar aún más, indicamos que el cuerpo del mensaje no es HTML.

A continuación, desplegamos la segunda secuencia “Enviar Mail”

enviarMail

 

En este caso, se establece la dirección de envío (mailMessage.From = New System.Net.MailAddress(fromMailAddress)), y aquí viene lo potente: El componente de WWF “InvokeMethod”, que permite ejecutar un método de una clase que haya sido instanciada en un objeto. En este caso, se añade la dirección a la que se quiere enviar a la lista de destinatarios. Es necesario usarlo, ya que internamente es una lista, y los correos destino se deben añadir uno a uno. Se define el Subject del mensaje, se define el Body del mensaje, y se vuelve a usar un InvokeMethod para, esta vez sí, hacer que el objeto SMTPClient (instanciado como smtpService) se encargue de enviar el correo electrónico que hemos definido.

anadirDestinatario

Finalmente, si queremos que FIM se entere de que todo ha terminado con éxito, toca añadir al final de la secuencia la siguiente asignación:

resultTrue

Con esto, hemos definido la configuración del conector de Web Services. Pero todo esto, por sí solo, no hace absolutamente nada. Es necesario Crear un Management Agent del conector de Web Services en FIM Sync, e indicarle que use este archivo de configuración. Para ello, lo más importante es copiar el archivo de configuración a una carpeta muy concreta, de lo contrario, FIM Sync no será consciente de su existencia.

url

 

Finalmente, con el archivo de configuración copiado en la carpeta de Extensiones, se puede proceder a crear el Management Agent. Para ello, se abre el Synchronization Service Manager on FIM, y se acude a la sección “Management Agents”, seleccionamos “Create”, y nos encontramos con esto:

creandoMA

Se selecciona que el Management Agent que se desea crear es el de “Web Service (Microsoft)”, se le pone un nombre, y se pulsa “Next”, esto nos lleva a la pantalla de configuración de conexión del MA.

creandoMA.2

En esta sección, es importante elegir el proyecto del configurador del conector que hemos creado, y el Host y el puerto que hemos definido en el proyecto, así como la misma configuración en el modo de seguridad y el tipo de credencial de cliente. FIM va a validar todo esto, y en caso de que haya algún error no va a dejar que continuemos bajo ningún concepto.

Una vez  todo está validado, FIM pasa a la siguiente pantalla “Global Parameters”, en la que aparece un único checkbox disponible:

creandoMA.3¡¡¡¡ “Test Connection” !!!! Marcando este checkbox, FIM va a ejecutar el código que hemos creado anteriormente en el apartado “Test Connection”, que existe única y específicamente para ser ejecutado en este instante. Esto es muy útil para probar partes del código del conector de Web Services, ya que se pueden ejecutar sin ningún tipo de compromiso, y en caso de que todo haya funcionado bien, lo sabremos gracias a la sección “Result = true” que añadimos al final del código. Para pruebas más complejas, es muy útil no devolver ningún valor de Result (por defecto es false), o cambiarlo a False en caso de que algún tipo de validación no se haya ejecutado como se espera.

Es la hora de la verdad: En cuanto se pulse “Next”, teniendo el checkbox marcado, FIM va a compilar el conector de Web Service, y va a ejecutar la sección de “Test Connection”. En caso de que todo salga bien, se enviará un correo electrónico a la dirección deseada, y el cuadro de diálogo para crear un Management Agent pasará a la siguiente sección “Configure Partitions and Hierarchies”. Pero todo ello ya no pertenece al ámbito de este post.

En cambio, lo que sí pertenece, es la última captura de pantalla…

correoFIM

Finalmente, ¡los correos han llegado a su destino!

 

Conclusión

En este artículo se ha compartido un fragmento de código para el conector de Web Services, que es muy útil a la hora de diagnosticar problemas en casos de importaciones masivas. Por ejemplo, si hay que sincronizar medio millón de usuarios, eso es un proceso que puede tomar varios días de proceso para el conector. En caso de que hubiese algún tipo de problemas, un sistema de alertas por email que indique que algo está pasando es vital para ayudar a actuar de inmediato, corrigiendo la situación que esté dando problemas en el lado servidor antes de vernos forzados a interrumpir el proceso. Cualquier interrupción de una operación de full Import puede suponer días de espera, ya que es una operación que no puede ser reiniciada.

En definitiva, una herramienta útil para desarrollos más complejos utilizando el conector de Web Services.

¡Hasta la próxima!

FIM 2010R2: Pasar de Evaluacion a Version Completa

Hay productos complejos por un lado y hay productos muy complejos como FIM 2010 R2. Y hay ocasiones en las que antes de comprar un software complejo, se decide descargar una versión de evaluación para probarla y ver si se adecúa a las necesidades de la empresa. Por supuesto, una vez montado el piloto, resulta que funciona tan bien, que la empresa decide pasar de la versión de pruebas a una licencia completa… pero invirtiendo la menor cantidad posible de tiempo en el proceso de cambio.

En algunas ocasiones, pasar de versión de pruebas a licencia completa significa escribir un número de serie. En otras ocasiones, el proceso es más complejo y se tienen que seguir otros pasos. ¿Cuáles?

El primer impulso de un administrador de sistemas avispado sería acudir a la ventana de “Acerca de” del servicio de Sincronización de FIM y ver si hay algún lugar en el que introducir una clave de registro… pero nos encontramos en su lugar con una cuenta atrás que nos recuerda que nos quedan sólo 175 días de demostración. Ningún sitio para introducir registros ni botones de activación de licencia por Internet, ni nada similar.

isDemo

Es en éste momento en el que nos toca pasar a la Primera Fase del proceso de actualización:

Primera fase: Exportar clave de cifrado.

Dado que para instalar la versión completa hay que desinstalar la actual versión de FIM, es necesario hacer una copia de seguridad de la clave de cifrado de la Base de Datos. Para ello se tiene que abrir el “Synchronization Service Key Management” y proceder a exportar la clave de cifrado. Tener una copia de esta clave es fundamental, ya que garantiza la seguridad de la Base de Datos del servicio de Sincronización de FIM, y en caso de pérdida, los datos serían irrecuperables.

key-mgmt

Export-keyset

Para exportar la clave de cifrado, necesitamos las credenciales de la cuenta de Servicio de FIM que hemos utilizado durante la instalación.

Export-keyset1

Proseguimos con el asistente, eligiendo dónde guardar la clave, y ¡listo! Ya tenemos la copia de la clave. Ahora se puede pasar a la fase dos.

Segunda Fase: Desinstalación de FIM.

Este paso no tiene ningún misterio: Teniendo a mano el CD de instalación de FIM, se lanza el instalador de “FIM Synchronization Service”, y aparece este diálogo:

ReminderDemo

En resumidas cuentas, esta ventana indica que estamos utilizando una versión de demostración de FIM. Se cierra y ya sí aparecen las típicas opciones de “reparar instalación” y “desinstalar”. En este caso se elige desinstalar, lo que elimina la instalación de FIM y con ella la Clave de cifrado, pero mantiene la Base de Datos en su lugar. Afortunadamente, ya se hizo una copia de seguridad de la clave en la fase uno.

Tercera fase: Instalación.

Se procede a Instalar FIM normalmente, siguiendo el asistente. Es fundamental especificar en el instalador la misma base de datos que se estaba utilizando en la versión de demostración. Una vez completados los pasos de configuración, el programa empieza a instalar y muestra el siguiente diálogo:

useExistingDB

Buenas noticias, en este caso se desea restaurar la configuración con la misma base de datos, así que toca elegir “Yes”. De haber sido descuidados, puede ser que el producto licenciado que estamos instalando tenga un número de versión inferior. En tal caso, el instalador es lo suficientemente inteligente como para detectarlo, y darnos la opción de cancelar el proceso, o en caso de proseguir, recordar que es necesario pasar a la última versión una vez se haya terminado de instalar el producto.

useExistingDB_versionConflict

Si por el contrario, se está instalando exactamente la misma versión de FIM, el siguiente paso es importar la clave de cifrado. Es el mismo archivo que fue exportado durante la fase uno. Se le proporciona el archivo con la clave al instalador, y él se encarga de realizar las operaciones necesarias para que una vez esté todo instalado, FIM pueda desencriptar la Base de Datos y trabajar con total normalidad.

provideEncriptionKeys

 

Conclusión

Una vez se ha terminado de instalar, y para asegurarse de que todo ha funcionado correctamente, se puede volver a abrir el cuadro de diálogo “Acerca de…”, donde se puede comprobar que en efecto, ya no aparece una terrorífica cuenta atrás recordando que la instalación de FIM dejará de funcionar en algún momento del futuro. Todo lo demás (Metaverso, Agentes, etc) debería seguir funcionando exactamente igual que antes de la actualización.

notDemo

 

¡Y eso es todo de momento!

AAD Sync

Con este título tan críptico, en este post queremos aprovechar y hablaros sobre la última versión de Azure Active Directory Sync, más conocido anteriormente como Dirsync.

La beta 3 que salió hace menos de un mes y que tenéis disponible a través de Connect, ya permite vislumbrar tanto la interfaz como las nuevas funcionalidades que traerá el sincronizador gratuito de Microsoft para Azure Active Directory.

AAD Sync

Entre las funcionalidades más destacables, nosotros queremos resaltar las siguientes:

1.   Sincronización desde multi-forest: de manera muy sencilla vamos a poder añadir bosques de AD en el propio asistente y definir qué atributos del usuario se encuentran en cada uno de ellos.

MultiForest

AttributeMapping

2.   Sincronización desde otros directorios (LDAP, SQL,…): aunque en la beta 3 no tenemos todavía disponible la opción, en la versión final se podrán sincronizar usuarios desde directorios que no sean AD como puede ser un LDAP en Linux, una base de datos SQL, etc. Desde luego esta será una de las características más apreciadas por multitud de clientes con entornos heterogéneos, como pueden ser las Universidades.

3.   Password write-back: dar la posibilidad a un usuario de que se cambie la contraseña de dominio cuando quiera, incluso fuera de la red corporativa, muchas veces puede resultar complicado. La necesidad de conectarse a la VPN, montar un portal web con ADFS, utilizar FIM, son algunas de las opciones más comunes. Con esta nueva versión de Dirsync, y apoyándonos en Azure Active Directory Premium, podremos utilizar el propio portal de Azure accesible por el usuario para resetearse la contraseña local. Podemos utilizarlo tanto con la sincronización de passwords que ya teníamos con Dirsync como en un entorno federado con ADFS.

Password write-back

Recordar que debéis tener habilitado Azure Active Directory Premium para el directorio en cuestión, sino recibiréis un error:

Error AAD Premium

4.   Filtrado de atributos por aplicación: permite sincronizar a Azure Active Directory únicamente los atributos del usuario que sean necesarios para poder trabajar con ciertas aplicaciones. De esta manera podemos limitar la información que nos llevamos arriba así como mantener más limpio el entorno.

AAD App filter

Una vez terminada la configuración ya podríamos arrancar la sincronización, siendo ésta por defecto la de todos los usuarios, grupos y contactos del forest especificado. Si queremos restringir la sincronización por ejemplo por OU (Unidad Organizativa), debemos seguir el procedimiento tradicional de arrancar la “UI Avanzada” ejecutando el msiiclient.exe y editar los contenedores que nos queremos llevar de nuestro AD local.

Container filter

Para terminar, arrancamos la sincronización desde la misma consola o ejecutando de nuevo el asistente de AAD Sync, y ya tendremos nuestros usuarios en la nube.

FI/FS

Espero que os hayan parecido interesantes todas las novedades que nos esperan con nuestro querido DirSync.

¡Hasta la próxima!

Filtrado de atributos en Azure Active Directory, consideraciones a tener en cuenta

Cuando trabajamos con sincronización de Azure Active Directory (por ejemplo, para Office 365) podemos hacer el filtrado de objetos a sincronizar por unidad organizativa (OU) o bien por sus atributos.

En caso de que queramos hace el filtrado por atributo hay algunas cosas importantes que tener en cuenta:

  • El “filtrado” consiste en definir una regla para especificar qué objetos NO van a sincronizar. Todo lo que no cumpla esta regla sincronizará.
  • Sólo es válido para usuarios. Todos los grupos de distribución y seguridad del AD no se verán afectados por la regla, así como los contactos; por lo que sincronizarán independientemente de los que establezcamos. Esto se debe a que en el FIM subyacente a AAD Sync Tool estos objetos se encuentran ya filtrados mediante reglas de extensión que no son fácilmente modificables.
  • El filtrado en el FIM se establece de acuerdo a comparadores de cadenas, estando disponibles los siguientes:

    Captura del FIM incorporado en AAD Sync Tool, mostrando propiedades de filtrado de atributos que podemos encontrar en el Management Agent de Active Directory
    Captura del FIM incorporado en AAD Sync Tool, mostrando propiedades de filtrado de atributos que podemos encontrar en el Management Agent de Active Directory
  • Se pueden combinar múltiples operadores con múltiples atributos, pero la regla lógica que sigue para aplicar el filtro es siempre AND. Por ejemplo: si extensionAttribute15 equivale a “estudiante” y extensionAttribute14 equivale a “nosync” entonces filtrar (no sincronizar) el objeto.

Happy syncing!