En Anjana Data, la autorización de los usuarios se basa en la asignación de roles a las personas dentro de unidades organizativas (OUs). Esta combinación determina qué acciones puede realizar cada usuario y en qué ámbitos dentro de la plataforma.
Tabla User-Ou-Roles del Panel de Configuración (Visión administrador)
La gestión de estas asignaciones se realiza a través de la tabla Users-OU-Roles, que actúa como el mecanismo central de control de permisos.
Users-OU-Roles para asignación de roles a usuarios en OUs
Estructura de la tabla Roles
Cada registro en la tabla users_ou_role define una asignación única entre un usuario, una unidad organizativa y un rol.
Los elementos que caracterizan dicha asignación son:
-
user: identificador único del usuario.-
Corresponde al campo
idde la tablaUsers.
-
-
ou: identificador único de la Unidad Organizativa.-
Corresponde al campo
idde la tablaOrganizational Unit.
-
La asignación debe realizarse en una unidad organizativa hoja, nunca en un nivel intermedio o nivel raíz. Por ejemplo, si se ha configurado la unidad “Espacio de datos/Turismo”, nunca se deben asignar roles a nivel de “Espacio de datos”
-
role: identificador único del rol.-
Corresponde al campo
idde la tablaRoles.
-
Asignación de roles a usuarios
Asignación de roles cross
Para asignar a un usuario un rol que ha sido configurado como Cross (ver configuración de la tabla Roles) se deben seguir los siguientes pasos:
-
Pulsar el botón New en la esquina superior derecha. Esto abrirá un asistente (wizard) con los campos definidos en el apartado Estructura.
-
Completar los campos conforme a lo siguiente:
-
user: Seleccionar el identificador del usuario. Si el usuario no existe, se debe crear previamente. -
ou: Seleccionar la unidad por defecto Cross. Esta OU la crea internamente la plataforma, sin embargo, si se hubiera borrado a mano, se debe crear para autorizar a los roles cross. -
role: Seleccionar el rol de entre los roles configurados previamente. Si el rol no existe, se debe crear previamente.
-
-
Pulsar en Save para guardar el rol o en Cancel para descartar.
Asignación de roles verticales
Para asignar a un usuario un rol vertical, que no ha sido configurado como cross, (ver configuración de la tabla Roles) se deben seguir los siguientes pasos:
-
Pulsar el botón New en la esquina superior derecha. Esto abrirá un asistente (wizard) con los campos definidos en el apartado Estructura.
-
Completar los campos conforme a lo siguiente:
-
user: Seleccionar el identificador del usuario. Si el usuario no existe, se debe crear previamente. -
ou: Seleccionar la unidad organizativa hoja correspondiente. Si no existe, se debe crear previamente. -
role: Seleccionar el rol de entre los roles configurados previamente. Si el rol no existe, se debe crear previamente.
-
-
Pulsar en Save para guardar el rol o en Cancel para descartar.
Modificación de las autorizaciones
Para modificar la asignación de roles a usuarios en unidades organizativas se puede realizar eliminando un registro y creando uno nuevo.
Consulta y explotación de la autorización en base de datos (Visión desarrollador)
Además de configurarse desde el Panel de configuración, la asignación de roles a usuarios queda almacenada en la base de datos 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 la autorización de su plataforma (qué usuarios ejercen qué roles en qué dominios de datos).
Este apartado está orientado a la consulta (solo lectura) de la información. El alta y la modificación de la autorización deben realizarse siempre desde el Panel de configuración (visión administrador), como se describe en los apartados anteriores; no se recomienda escribir directamente sobre las tablas.
Tabla zeus.user_ou_role
La asignación de roles a usuarios se almacena en la tabla zeus.user_ou_role. Cada registro representa una asignación única usuario–unidad organizativa–rol. Sus columnas, disponibles para su consulta, son:
|
Columna |
Tipo de dato |
Descripción |
|---|---|---|
|
user_id |
int4 (INTEGER) |
Identificador del usuario (clave foránea a |
|
ou_id |
int4 (INTEGER) |
Identificador de la unidad organizativa (clave foránea a |
|
rol_id |
int4 (INTEGER) |
Identificador del rol (clave foránea a |
|
unique_idx |
— |
Restricción UNIQUE (user_id, ou_id, rol_id). Garantiza que no existan asignaciones duplicadas para la misma combinación usuario–OU–rol. |
Tablas relacionadas (claves foráneas)
La tabla se cruza con las siguientes tablas del modelo para resolver los identificadores y enriquecer las consultas:
|
Columna |
Tabla referenciada |
Campo referenciado |
Descripción |
|---|---|---|---|
|
|
|
|
Resuelve el usuario asignado. |
|
|
|
|
Resuelve la unidad organizativa (alias / jerarquía). |
|
|
|
|
Resuelve el rol asignado ( |
Ejemplos de consulta
Autorizaciones resueltas (usuario, unidad organizativa y rol):
SELECT uor.user_id,
ou.alias AS unidad_organizativa,
r.role_name AS rol
FROM zeus.user_ou_role uor
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 uor.user_id;
Roles asignados a un usuario concreto (por su identificador):
SELECT ou.alias AS unidad_organizativa,
r.role_name AS rol
FROM zeus.user_ou_role uor
JOIN zeus.organizational_unit ou ON uor.ou_id = ou.id_organizational_unit
JOIN zeus."role" r ON uor.rol_id = r.id_role
WHERE uor.user_id = 2;
Recuento de asignaciones por rol (útil como métrica para un data mart):
SELECT r.role_name,
COUNT(*) AS asignaciones
FROM zeus.user_ou_role uor
JOIN zeus."role" r ON uor.rol_id = r.id_role
GROUP BY r.role_name
ORDER BY asignaciones DESC;
Importante:
-
Utilice un usuario de base de datos con permisos de solo lectura para estas consultas. El alta y la modificación de la autorización deben realizarse siempre desde el Panel de configuración, para mantener la integridad referencial (usuarios, unidades y roles) y las 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.