Esta página describe cómo Anjana Data Platform gestiona la autenticación y la autorización de usuarios a través de la tabla Users del Panel de Configuración, con especial atención al proveedor interno Database.
-
Autenticación (¿quién eres?): verifica la identidad del usuario cuando inicia sesión.
-
Autorización (¿qué puedes hacer?): determina los permisos del usuario a partir de los roles que tenga asignados. La gestión de la autorización (asignación de roles a usuarios en unidades organizativas) se describe en la página Autorización.
Importante: la tabla Users contiene siempre los usuarios que pueden autenticarse en la plataforma, con independencia del proveedor de autenticación configurado (Database, LDAP/AD, Azure EntraID, Google, AWS, etc.). Si un usuario no existe en la tabla Users, no podrá autenticarse, ni siquiera con el rol por defecto.
Estructura de la tabla Users
La tabla Users almacena la información de cada usuario que puede autenticarse y ser autorizado en la plataforma.
Para visualizar y acceder a la tabla Users dentro del Panel de Configuración, el usuario debe tener un rol con permisos para la acción CREDENTIAL_ADMIN sobre el subtipo ANJANA.
Cada usuario se define mediante los siguientes campos:
-
id: identificador único del usuario en la tabla. -
userName: identificador de inicio de sesión del usuario en la aplicación o en el proveedor de identidades integrado. Es un campo de valor único en la tabla (véase Identificación y autorización del usuario). EluserNamees, además, el identificador con el que Anjana Data Platform registra la auditoría: cuando la plataforma indica, por ejemplo, que el usuario que ha modificado un término de negocio eslucia.gomez, ese valor es eluserName. -
firstName: nombre del usuario. -
lastName: apellidos del usuario. -
email: correo electrónico del usuario. También puede emplearse como identificador de acceso (véase Identificación y autorización del usuario). -
phone: número de teléfono del usuario. -
title: cargo del usuario (campo informativo, no obligatorio). -
Password: hash de la contraseña del usuario en formato BCrypt. El hash es único por usuario, incluso para contraseñas iguales, y puede generarse con cualquier herramienta estándar de BCrypt (véase Comportamiento del campoPassword). -
isServiceUser: booleano que indica si es un usuario de servicio (true) o un usuario nominal (false).
Los atributos de la tabla Users pueden poblarse mediante distintos mecanismos, descritos en el apartado Alta de usuarios: sincronización con el directorio corporativo, alta manual desde el Panel de Configuración o alta mediante API.
Identificación y autorización del usuario
El acceso de un usuario a la plataforma se resuelve en dos fases:
-
Identificación (autenticación): el identificador que devuelve el mecanismo de autenticación se compara indistintamente con los valores de
userNamey deemailde la tablaUsers. La comparación no distingue mayúsculas de minúsculas (es case-insensitive): por ejemplo,JGarciayjgarciase consideran el mismo valor. Por tanto, un usuario puede quedar identificado tanto por suuserNamecomo por suemail. -
Autorización: una vez identificado, el usuario obtiene los permisos de los roles que tenga asignados. Estos roles se resuelven a partir del registro del usuario en la tabla
Users(por suId), no de suuserNameni de suemail.
La autorización —asignación de roles a usuarios dentro de las unidades organizativas mediante la tabla User-Ou-Roles— se gestiona y documenta en su propia página: Autorización. Esta página (Usuarios) se centra en la autenticación y la identificación del usuario; no detalla el mecanismo de asignación de roles para no duplicar contenido.
Aunque userName es un campo de valor único en la tabla (con restricción de unicidad, incluso insensible a mayúsculas/minúsculas), no es el único identificador válido de acceso: el email cumple la misma función a efectos de identificación. En ambos casos, la identificación es insensible a mayúsculas/minúsculas.
Comportamiento del campo Password
El campo Password almacena el hash BCrypt de la contraseña y presenta el siguiente comportamiento en el Panel de Configuración:
-
En el alta y modificación, el valor introducido por el usuario en el campo
Password(el hash) se muestra en claro, sin enmascarar. -
En la consulta, el valor del hash no se muestra: aparece enmascarado por seguridad.
-
La modificación no permite borrar el contenido de password, solo modificarlo.
-
No se rellena durante la sincronización de usuarios.
Los usuarios procedentes de proveedores externos —es decir, los que se autentican mediante su propio proveedor y no mediante Database— no deben tener la contraseña informada. El campo Password solo es relevante para la autenticación mediante Database, en la que el usuario introduce la contraseña en claro que se valida contra este hash.
Alta de usuarios
Los usuarios pueden incorporarse a la tabla Users mediante tres mecanismos:
Alta manual desde el Panel de Configuración
Método recomendado para crear usuarios de forma individual (ruta Schemas → Users → New):
-
Pulsar New.
-
Cumplimentar en el asistente de creación los campos descritos en Estructura de la tabla
Users. -
Pulsar Save para guardar el usuario o Cancel para descartarlo.
Para la autenticación mediante Database, el usuario utilizará como contraseña el valor (antes de la conversión hash en formato BCrypt), que se valida contra el campo Password. Al dar de alta, el hash introducido se muestra el hash en claro (véase Comportamiento del campo Password).
Alta mediante API
Permite automatizar el aprovisionamiento de usuarios desde procesos externos. Consulte la documentación de la API de usuarios de Zeus para más detalle.
Sincronización de usuarios
Obtiene y actualiza la información de los usuarios desde el directorio corporativo. Se ejecuta desde Inicio > Acciones > Sincronizar usuarios del Panel de Configuración y se detalla en la página Aprovisionamiento de usuarios.
La sincronización pobla los campos userName, email, firstName, lastName, phone y title. No rellena el campo Password, ya que estos usuarios se autentican mediante su proveedor externo y no mediante Database.
Modificación de usuarios
La modificación de los atributos de un usuario debe realizarse con precaución.
-
Acceda a Schemas → Users en el Panel de Configuración; se mostrará el listado de usuarios existentes.
-
Localice el usuario que desea modificar; puede filtrar por
userName,emailu otros campos de la tabla. -
Pulse el icono del lápiz para abrir el panel de edición.
-
Modifique los campos necesarios:
firstName,lastName,email,phone,titleyPassword(solo si desea cambiar la contraseña). Tenga en cuenta el comportamiento del campo Password descrito en apartados anteriores. -
Guarde los cambios con Save.
Importante:
-
Para que los cambios apliquen de forma inmediata, se recomienda limpiar las cachés desde
Inicio > Operaciones de reseteo > Vaciar caché. -
No se recomienda modificar valores incorporados mediante la sincronización con el sistema de gestión de identidades corporativo, salvo que en dicho sistema no se encuentren informados.
Consideraciones importantes
-
userName: es un campo de valor único (restricción de unicidad, incluso insensible a mayúsculas/minúsculas) y se emplea como identificador de inicio de sesión. No se recomienda modificarlo salvo necesidad excepcional, ya que puede estar referenciado en permisos/roles o en atributos de tipo usuario de las plantillas. Si se modifica: realizar una edición masiva para eliminar las referencias en atributos de tipo usuario; cumplir todas las restricciones del campo (unicidad, longitud, caracteres válidos); el usuario deberá iniciar sesión con el nuevo valor. Recuerde que la identificación también admite elemail(véase Identificación y autorización del usuario).
Impacto de cambiar el userName en la auditoría.
Dado que el userName es el identificador que consta en la auditoría, un cambio de userName hace que las acciones posteriores se auditen con el valor nuevo, mientras que los registros de auditoría anteriores conservan el userName antiguo: la auditoría histórica no se reescribe.
-
Cambio de contraseña: modifique el campo
Passwordcon un hash BCrypt válido; el usuario usará en el login la contraseña en claro correspondiente a ese hash. En la modificación, el valor del hash aparece enmascarado. No es posible eliminar una password una vez creada, solo modificarla. -
isServiceUser: campo informativo. No debe modificarse manualmente salvo que el equipo de plataforma lo indique.
Consulta y explotación en base de datos — Visión desarrollador
Además de gestionarse desde el Panel de configuración, la información de los usuarios internos (autenticación por Database) queda almacenada en la tabla zeus.users y puede consultarse en modo lectura para explotarla con fines analíticos. Por ejemplo, permite que el cliente construya su propio data mart, cuadros de mando o informes sobre los usuarios de su plataforma (altas, usuarios de servicio frente a nominales, usuarios por dominio y rol, etc.).
Este apartado está orientado a la consulta (solo lectura) de la información. El alta y la modificación de usuarios deben realizarse siempre desde el Panel de configuración (visión administrador) o mediante la API de usuarios de Zeus, como se describe en los apartados anteriores; no se recomienda escribir directamente sobre las tablas.
Dato sensible: esta tabla contiene credenciales y datos personales.
-
El campo
password_hashes una credencial cifrada: no debe incluirse en las consultas de explotación ni exponerse en un datamart, informe o vista. -
Los campos
email,phone,first_nameylast_nameson datos personales; su tratamiento debe cumplir la normativa de protección de datos aplicable a la organización.
Tabla zeus.users
La información de los usuarios internos se almacena en la tabla zeus.users. Sus columnas, disponibles para su consulta, son:
|
Columna |
Tipo de dato |
Descripción |
|---|---|---|
|
|
|
Identificador interno único del usuario (clave primaria). |
|
|
|
Correo electrónico del usuario (único si se informa). Dato personal. |
|
|
|
Nombre del usuario (opcional). Dato personal. |
|
|
|
Apellidos del usuario (opcional). Dato personal. |
|
|
|
Credencial cifrada (hash BCrypt). No debe consultarse ni exponerse en tareas de explotación. |
|
|
|
Teléfono de contacto (opcional). Dato personal. |
|
|
|
Cargo/posición del usuario (opcional). |
|
|
|
Nombre de usuario para login interno (único). |
|
|
|
Indica si es un usuario de servicio (valor por defecto |
|
|
|
Fecha de último inicio de sesión del usuario. |
|
|
|
Indica si el usuario ha firmado el acuerdo de privacidad. |
Restricciones e índices relevantes
-
Clave primaria:
users_pkey (id_user) -
Unicidad de email:
UNIQUE (email) -
Unicidad de username:
UNIQUE (user_name) -
Unicidad case-insensitive de username:
CREATE UNIQUE INDEX unique_lower_username ON zeus.users (lower(user_name::text));
Esto evita duplicados por mayúsculas/minúsculas (por ejemplo,jgarciayJGarcia).
Tablas relacionadas para enriquecer las consultas
Para obtener una vista más completa, la tabla de usuarios puede cruzarse con otras tablas del modelo:
-
zeus.user_ou_role: asignación de roles a usuarios por unidad organizativa; permite conocer la autorización de cada usuario (enlazando
id_userconuser_id). -
A través de
user_ou_role, las tablas zeus."role" (rol) y zeus.organizational_unit (dominio de datos) completan la vista de quién puede hacer qué y dónde.
Ejemplos de consulta
Listado de usuarios sin la credencial (password_hash):
SELECT id_user,
user_name,
first_name,
last_name,
email,
title,
is_service_user
FROM zeus.users
ORDER BY user_name;
Recuento de usuarios de servicio frente a nominales (útil como métrica para un data mart):
SELECT is_service_user,
COUNT(*) AS total
FROM zeus.users
GROUP BY is_service_user;
Usuarios con sus roles y dominios de datos (autorización efectiva):
SELECT u.user_name,
ou.alias AS unidad_organizativa,
r.role_name AS rol
FROM zeus.users u
JOIN zeus.user_ou_role uor ON u.id_user = uor.user_id
JOIN zeus.organizational_unit ou ON uor.ou_id = ou.id_organizational_unit
JOIN zeus."role" r ON uor.rol_id = r.id_role
ORDER BY u.user_name;
Importante:
-
Utilice un usuario de base de datos con permisos de solo lectura y, preferiblemente, sobre una vista que excluya
password_hashy limite los datos personales estrictamente necesarios. -
El alta y la modificación de usuarios deben realizarse siempre desde el Panel de configuración o la API de usuarios de Zeus, para mantener la integridad (hash de contraseña, unicidad, cachés).
-
Los nombres de esquema, tablas y columnas pueden evolucionar entre versiones de Anjana Data; conviene validarlos antes de construir un data mart o informes sobre esta información.