Entidades, Identidades y Cuentas de Usuario (O: Quién es quién en IAM)

Image by Ben Sweet <https://unsplash.com/@benjaminsweet> via <https://unsplash.com/photos/2LowviVHZ-E>

A menudo encuentro que los conceptos de entidad, identidad y documento de identidad se dan por entendidos, aunque rara vez con la misma definición para todas las partes. Estos no son términos específicos del campo de IAM, sino que los dos primeros son totalmente universales y los niveles superiores encuentran sus análogos en el mundo físico. El problema es, como veremos, que no tener una comprensión clara de lo que significan y de su importancia, nos llevará a cometer errores de diseño que tendrán un impacto en nuestra seguridad y gobierno.

Vayamos paso a paso e intentemos entender cada uno de estos términos, en el mundo físico, para luego relacionarlos con el digital.

Entidad

Una entidad se define como "algo que existe de forma independiente, no como parte de un todo". Este es el nodo raíz en la cadena de identidad. John Smith es una entidad (un automóvil también es una entidad, como lo es un servicio o una aplicación, en el mundo digital, pero quedémonos con John como un ejemplo más simple, por ahora). John no puede ser más que una única entidad, por definición.

Identidad

Una identidad es algo que distingue (identifica) de forma única a una entidad. Es inherente a dicha entidad. De hecho, es inherente a una sola entidad (es decir, identifica sólo a una). En el caso de John Smith, su identidad es su nombre, número de la seguridad social, etc. Sí, hay otros John Smith, pero son otros John Smith. El gobierno (o quienquiera que sea el Proveedor de Identidad) reconoce una identidad exclusiva para este John Smith.

¿Puede John tener más de una identidad? Ciertamente. Una identidad no es un documento o un registro en una base de datos. Es un concepto. Si John va a su biblioteca local y esta no requiere prueba de identidad alguna para otorgarle un carnet, John podría dar un nombre falso, creándose una nueva identidad en ese mismo momento. O simplemente podría pensar en sí mismo como J el Magnífico cuando está soñando despierto en el autobús. O podría tener una identidad diferente para su presencia en Internet. Siempre que John comience a usar un alias con la intención de que no sea rastreable hasta su Identidad existente, este se constituye como una nueva Identidad. No importa realmente si la biblioteca solo recopila su nombre y apellido, dificultando la vinculación a su identidad emitida por el gobierno. John sigue operando bajo su misma Identidad, incluso si esta forma no es la más sólida.

Por supuesto, para el mismo Proveedor de Identidad, John nunca debería tener más de una Identidad (a menos que sea un espía, un criminal, un testigo en algún tipo de programa de protección, o que esté tratando de engañar a la Biblioteca para sacar más libros de los que está permitido). Si la misma entidad está vinculada a más de una Identidad, destruimos el propósito mismo de tener una Identidad.

Forma-de-identidad

Lo que John desde luego tendrá es múltiples formas de identidad. Su pasaporte, su documento nacional de identidad, su permiso de conducir, su carnet de la biblioteca... Pero todos ellos refieren a la misma identidad. Si la policía llegara a la biblioteca y preguntara "¿Ha sacado John Smith algún libro últimamente?" el bibliotecario podrá dar una respuesta (incluso si esta es: "Bueno, tengo 3 John Smith, así que elija"). Las Formas-de-Identidad no son más que  manifestaciones reales de esa Identidad, emitidas para diferentes propósitos.

Mientras tanto, en el mundo digital...

Si bien Entidad e Identidad son conceptos universales que no están ligados al mundo físico o digital, las formas de identidad definitivamente tienen sus homólogos digitales. Los conocemos como cuentas de usuario. Vinculada a la misma Identidad, una Cuenta de Usuario es simplemente el documento que la Empresa u Organización específica requiere para saber quién es John y ofrecerle ciertos servicios. El proceso de Autenticación (que demuestra que el documento está en poder de su legítimo propietario) es análogo a mostrarle nuestra Tarjeta de Biblioteca al bibliotecario.

Tengamos en cuenta que, cuando una organización utiliza un Gestor de Identidad para crear la cuenta de un nuevo empleado, no está creando una Identidad. Está registrando una Identidad ya existente (perteneciente a la persona -la propia entidad-) en el repositorio que utilizará para saber quién es o no un empleado. Y muy probablemente, a lo largo del proceso, crearemos también una Cuenta de Usuario como la Forma-de-Identidad que el nuevo usuario utilizará para acceder a las herramientas, la red y el dominio en general de la organización. De hecho, apuesto a que hay muy pocas organizaciones en las que esa única Cuenta de Usuario sea suficiente. La mayoría de ellas tendrán un alto número de sistemas satélite que requerirán la creación de Cuentas de Usuario adicionales para la misma Identidad - para la misma persona.

Vale, pero ¿por qué debería importarnos esto?

Ahora que entendemos todos los diferentes conceptos y la jerarquía Entidad-Identidad-Cuenta, echemos un vistazo rápidamente a los problemas que pueden introducir los malentendidos.

Digamos que, donde John vive, hay una ley que establece que nadie puede percibir los subsidios del gobierno si gana más de 50.000 dólares al año. John gana mucho más que eso. Sin embargo, esta regla no se aplica a nivel de identidad, sino para el documento de identidad. Lo que significa que lo único que John tiene que hacer es presentar su declaración de impuestos bajo su licencia de conducir y reclamar los subsidios bajo su pasaporte. Ridículo, ¿verdad? Eso es porque esas restricciones normalmente se aplican al nivel adecuado (Identidad).

Sin embargo, en el mundo digital es bastante frecuente ver que la Autorización se realiza a nivel de Cuenta de Usuario, en lugar de a nivel de Identidad. Esto significa que, a los efectos de la Gestión de acceso, "John.Smith" y "System.Administrator.John.Smith" se consideran en realidad dos Identidades diferentes y, por lo tanto, no se puede hacer cumplir ningún tipo de restricción basada en la Identidad. Al no configurar la Autorización al nivel de Identidad, "System.Administrator.John.Smith" podría enviar una reclamación de gasto y "John.Smith" podría aprobarla, y el sistema no vería nada malo en ello.

El paralelismo con el mundo físico continúa siendo válido. La aplicación de las regulaciones no puede realizarse al nivel de cuentas de usuario cuando realmente están tratando de evitar que las identidades infrinjan las reglas. La autorización en particular debe ocurrir a nivel de Identidad, incluso si el sistema luego requiere que el usuario presente un documento específico: es decir, que inicie sesión con una Cuenta de Usuario específica (de la cual el usuario puede tener más de una).

Comentarios

Entradas populares de este blog

Por qué es importante tener un sistema centralizado de Gestión de Acceso (O: “Autorización-como-Servicio”)

No hay que preocuparse por los usuarios privilegiados (O: Controlando acciones, no personas)

La importancia de la gramática en IAM (AKA: Un permiso es un verbo)