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/

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *