Configuración

Autorización

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.

image-20251117-180424.png
Captura de la tabla 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 id de la tabla Users.

  • ou: identificador único de la Unidad Organizativa.

    • Corresponde al campo id de la tabla Organizational 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 id de la tabla Roles.

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:

  1. Pulsar el botón New en la esquina superior derecha. Esto abrirá un asistente (wizard) con los campos definidos en el apartado Estructura.

  2. Completar los campos conforme a lo siguiente:

    1. user: Seleccionar el identificador del usuario. Si el usuario no existe, se debe crear previamente.

    2. 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.

    3. role: Seleccionar el rol de entre los roles configurados previamente. Si el rol no existe, se debe crear previamente.

  3. Pulsar en Save para guardar el rol o en Cancel para descartar.

image-20251117-181827.png
Captura de ejemplo de la asignación de un rol cross

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:

  1. Pulsar el botón New en la esquina superior derecha. Esto abrirá un asistente (wizard) con los campos definidos en el apartado Estructura.

  2. Completar los campos conforme a lo siguiente:

    1. user: Seleccionar el identificador del usuario. Si el usuario no existe, se debe crear previamente.

    2. ou: Seleccionar la unidad organizativa hoja correspondiente. Si no existe, se debe crear previamente.

    3. role: Seleccionar el rol de entre los roles configurados previamente. Si el rol no existe, se debe crear previamente.

  3. Pulsar en Save para guardar el rol o en Cancel para descartar.

image-20251117-182107.png
Captura de ejemplo de la asignación de un rol vertical

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 zeus.users.id_user).

ou_id

int4 (INTEGER)

Identificador de la unidad organizativa (clave foránea a zeus.organizational_unit.id_organizational_unit).

rol_id

int4 (INTEGER)

Identificador del rol (clave foránea a zeus.role.id_role).

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

user_id

zeus.users

id_user

Resuelve el usuario asignado.

ou_id

zeus.organizational_unit

id_organizational_unit

Resuelve la unidad organizativa (alias / jerarquía).

rol_id

zeus.role

id_role

Resuelve el rol asignado (role_name).

Ejemplos de consulta

Autorizaciones resueltas (usuario, unidad organizativa y rol):

SQL
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):

SQL
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):

SQL
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.