archivo

Archivo de la etiqueta: gestión de usuarios

Si hay algo sencillo, por repetitivo y simple, que nos encontramos en el desarrollo de sistemas de información, lo encontramos en la gestión de usuarios. La mayoría tiene gestión de usuarios, por lo que debería ser algo que tendría que estar solucionado de manera sencilla tanto a nivel de programación (y del generador de código correspondiente) como a nivel de la organización para la que se realiza el desarrollo.

¿Cuál es la realidad?

– Organizaciones que no tienen una política común de gestión de usuarios en las que conocer los usuarios que tienen acceso a un sistema de información o conocer los accesos de los mismos a los sistemas requiere el trabajo artesanal de prácticamente obtener ese listado de cada aplicación y después fusionarlo.

– Organizaciones que no tienen definidos procesos a nivel organizativa para el alta y baja de usuarios, lo que provoca que retrasos en la gestión de los mismos y también que no se compruebe de manera adecuada por qué un usuario ha solicitado acceso a un determinado sistema y si efectivamente requiere el acceso al mismo para realizar su trabajo.

– Políticas de usuarios que no verifican si los mismos han elegido contraseñas robustas, que obliguen a cambiarlas cada cierto tiempo (si es que el sistema permite que los usuarios la puedan cambiar, que eso es otra) y que restrinjan por sesión el número de intentos posibles. O bien la utilización de estrategias alternativas, como la utilización del certificado digital como medio para acceder a los sistemas a los que se les haya concedido la autorización correspondiente.

– Volver a implementar en cada sistema que se desarrolle las pantallas necesarias para gestionar los usuarios del sistema de información.

Hace poco tiempo asistí a un curso en el que nos expusieron el funcionamiento del sistema de gestión de identidades de mi organización. Aún le queda un amplio camino por recorrer para llegar a todos los rincones que quiere llegar, ya que como suele pasar en la mayoría de los proyectos de desarrollo de software, su éxito o fracaso vendrá dado por aspectos que poco tienen que ver con lo tecnológico.

Un sistema de gestión de identidades es aquel que pretende unificar en un solo repositorio (centralizado o distribuido) todas las identidades de los usuarios de una organización. Está compuesto por una parte procedimental y otra parte tecnológica, por lo que no hay que caer en el error de pensar que sistema de gestión de identidades es lo mismo que el almacén de datos donde se encuentran las mismas (generalmente un servicio de directorio basado en el protocolo LDAP).

Esto tiene sus ventajas tanto desde el punto de vista de la seguridad como de la consistencia:

– Le gestión de identidad asegura que el estado de la identidad de la persona en la organización está permanente actualizado y es correcto. De esta forma se consigue que el usuario siempre esté asociado al departamento al que pertenece, pese a que se mueva dentro de la organización o que el usuario se dé de baja en el sistema de gestión de identidad cuando deja de pertenecer a la organización, de esta forma se soluciona un importante problema de seguridad que no es otro que el no dar de baja los usuarios en los sistemas de información ya que generalmente quien gestiona los mismos no se entera de las mismas (sobre todo en organizaciones con varias sedes).

Esto se consigue integrando la gestión de la identidad como un proceso más del que una serie de departamentos y personas que se designen son responsables de ello. Es decir, la gestión de la identidad es un fin en sí mismo y no una actividad complementaria que se realiza si se puede y hay tiempo.

– Todo usuario utilizado en un sistema de información debe proceder del sistema de gestión de identidades, ya que garantizará que la identidad es válida dentro de la organización que hace uso de la aplicación. Otra cosa bien distinta es que se le conceda acceso a un sistema a una identidad que no debe acceder a él.

– La existencia de diferentes repositorios de nombres de usuario (ya que una gestión de usuarios no es una gestión de la identidad) o incluso de gestión de identidades provocarás posibles incoherencias en los nombres (en un lado puede aparece con tilde, en otro sin ella, en otro con un apellido incorrecto, etc…).

– Si los repositorios contienen diferentes atributos de la identidad, al unificarlo se asegura que se haga referencia a los mismos atributos de la misma forma y además tendrán los mismos datos.

– Se elimina la existencia de cuentas de usuarios genéricas ya que las mismas no se corresponden a una identidad concreta.

– Aunque no tiene por qué ser obligatorio en un sistema de gestión de identidades, otra de las ventajas consiste en evitar que existan más de una cuenta de identificación por usuario.

El repositorio se tiene que aprovisionar de datos, que generalmente proceden del sistema de gestión de recursos humanos de la organización (al que se le da en ocasiones el nombre de autoridad de identidad). En ocasiones, puede ser necesario la utilización de una aplicación intermedia si la gestión del ciclo de vida de la identidad no se puede realizar de forma adecuada con el sistema de gestión de recursos humanos, por ejemplo si:

– Se pretende integrar la gestión del ciclo de vida de la identidad cuando la misma es proporcionada por diferentes sistema de gestión de recursos humanos (algo que es posible en el caso de la Administración Pública, grupos de empresas, empresas con diferentes departamentos de recursos humanos, etc…).

– Se quieren proporcionar funcionalidades específicas para la gestión del ciclo de vida de la entidad que no las da el sistema o sistemas de gestión de recursos humanos. También en el caso de que se realice la asociación de usuarios a unidades funcionales que no tendrán por qué coincidir con las unidades organizativas utilizadas en dichos sistemas.

Como comentaba al principio del artículo, lo realmente importante de un sistema de gestión de identidades no es la tecnología, ya que ese aspecto podrá ser más o menos complejo pero ya existen soluciones en el mercado que cubren esta funcionalidad (de hecho y si nos vamos a un extremo, podría valer cualquier tipo de almacén de datos, siempre y cuando soporte la carga de trabajo que se estime que se va a tener y proporcione un rendimiento adecuado, sobre todo en consultas, ya que las lecturas en el mismo serán muy superiores a las operaciones de escritura), sino la gestión del ciclo de vida de la identidad y eso es un tema meramente procedimental.

La gestión del ciclo de vida requiere que personas ajenas al Departamento de Informática (salvo que desde la dirección de la organización se determine que dicha competencia es de Informática, algo que podría tener sentido a efectos prácticos, pero que no tiene sentido en cuanto a las competencias reales que debe tener un Departamento TIC), las cuales tendrán la responsabilidad de mantener en el sistema permanente actualizada la identidad del usuario y su pertenencia a las unidades organizativas o funcionales a las que esté adscrito en cada momento, teniendo en cuenta que algunas de las personas que participan en la gestión del ciclo de vida, tendrán otro tipo de tareas, en muchos casos totalmente diferentes a estas y con otro tipo de prioridades.

No hay más que pensar lo que cuesta que se designe personal de las áreas usuarias para validar el alta y baja de los usuarios en los sistemas (incluyendo la asignación de perfiles). En el caso del sistema de gestión de identidades todas las áreas implicadas deben funcionar bien porque de lo contrario se rompe con la finalidad de este tipo de sistemas que no es otra que suministrar identidades actualizadas.

Lo más cómodo es tender hacia el desarrollo de sistemas de información que sean islas, es decir, sistemas totalmente independientes y autosuficientes a nivel de información, que contienen en su modelo de datos todo aquello que necesitan para su funcionamiento. Es decir, en estos sistemas no se depende de ningún otro, por lo que no hay que estar pendiente de si varía el modelo de datos de otra aplicación, si deja de funcionar un determinado servicio o si hay que estudiar cómo encajar esta pieza junto con otras.

Pero claro, un modelo de sistemas de esas características tiene también importantes carencias, entre las que destaca la dificultad de mantener coherente información sobre un mismo concepto almacenada y gestionada en sistemas distintos, la dificultad de realizar consultas que afecten a más de un sistemas de información que gestionan un mismo concepto, la no reutilización tanto a nivel de modelo de datos como de código de soluciones que resuelven exáctamente la misma funcionalidad, etc…

En este artículo me voy a centrar en dos tipos de informaciones, la de terceros y la de usuarios, que son muy frecuentes en la mayor parte de sistemas de información y que también como sucede en muchos casos, se gestionan de manera independiente en los mismos.

Los terceros son como el nombre indica terceras personas físicas o jurídicas que están vinculadas a información que se gestiona en un determinado sistema de información. Si no existe un modelo único de terceros, conocer el estado de las actuaciones o la suma de la información que se tiene recopilado sobre uno concreto, implicará la consulta a multitud de sistemas, en ocasiones, un esfuerzo importante y todo ello sin que existan excesivas garantías para obtener dicha información, ya que lo mismo la información del tercero no es coherente entre sistemas y por tanto no se puede localizar alguna información (por ejemplo número de NIF o CIF referidos a un mismo tercero que no son iguales en alguno de los sistemas), bien falta algún atributo importante para identificarlo unívocamente, etc…

A lo anterior hay que sumar el esfuerzo de mantener y desarrollar modelos de datos y pantallas para gestionar dicha información, que además tendrá en la mayor parte de los casos relación con otra, como por ejemplo, información de las provincias y municipios, ya que será interesante en muchas ocasiones tener almacenada al dirección o direcciones de contacto de los terceros.

En mi organización, siendo conscientes de este problema se ha desarrollado un modelo único de terceros con el objetivo de obtener una visión global de los mismos, por lo que los nuevos sistemas que se están implementando hacen uso de ese módulo horizontal, que se va ampliando en función de información asociada a terceros que pueda ser de interés tenerla disponible de forma transversal.

Tardaremos bastante en conseguir que todos los terceros estén en un mismo sitio, ya que contamos con un gran número de sistemas de información que habría que migrar a este nuevo modelo y esto además de ser costoso, requiere su tiempo e incrustarlo dentro de la planificación y prioridades individuales de cada uno de ellos, no obstante, todo lo nuevo estamos intentando que siga este modelo y tarde o temprano empezaremos a notar buenos resultados a nivel general independientemente de que a nivel del proyecto se noten ya, al no tener que invertir esfuerzo en modelar e implementar la funcionalidad de gestión de terceros.

Con los usuarios pasa algo parecido y además provoca que si alguno de ellos tiene que trabajar con distintos sistemas de información, al final tenga que mantener una maraña de información de nombres de usuario y palabras de paso que atentará contra la seguridad (ya que en muchos casos se recurirá a anotarlos en algún medio físico) y que tendrá asociado un coste de gestión (reseteo de claves, recordatorio de nombres de usuario, etc…). Si la autenticación es con certificado digital se simplificará la necesidad de que el usuario requiera recordar tantos usuarios y claves, pero por detrás los sistemas, si no existe un modelo unificado de gestión de usuarios, tendrán que seguir gestionando los mismos, con el coste de gestión inherente a esta situación y con los costes de desarrollo que ha tenido modelarlo en cada sistema.

La solución para este caso es similar a la que se ha buscado para el caso de terceros, es decir, un módulo que puede ser común a todos los sistemas en los que se mantiene dicha información y que garantizará una gestión única de usuarios (independientemente de que los perfiles de acceso se mantengan en cada sistema) y una visión coherente de los mismos. Como en los terceros, los nuevos sistemas se están implementando haciendo uso de este módulo y traerá bastante tiempo tener la mayoría de los sistemas haciendo uso de él, pero también como en el caso anterior, tardará más o tardará menos, pero terminaremos beneficiándonos de la decisión de tener un modelo unificado de gestión de usuarios.