Seguridad de Mondrian
RBAC en Mondrian ..
Taller - Seguridad de Mondrian
Publicar cubos OLAP para uso organizacional requiere más que crear modelos dimensionales sofisticados: debes asegurar que los usuarios solo accedan a los datos apropiados según sus roles y responsabilidades. Mientras la seguridad de bases de datos relacionales puede restringir el acceso a nivel de tablas, la seguridad OLAP debe operar en múltiples granularidades: esquemas completos, cubos específicos, dimensiones e jerarquías individuales e incluso miembros particulares dentro de esas jerarquías. El marco de control de acceso por roles (RBAC) de Mondrian proporciona mecanismos de seguridad integrales que te permiten implementar políticas de protección de datos precisas y multinivel directamente dentro de las definiciones de tu esquema.
En este taller práctico y completo, implementarás seguridad de nivel empresarial para el esquema Miniature Models creando cuatro roles distintos con patrones de acceso progresivamente más restrictivos. Configurarás mapeadores de roles para enlazar los roles de la plataforma Pentaho con los roles del esquema de Mondrian, y luego aplicarás sistemáticamente restricciones de seguridad SchemaGrant, CubeGrant, HierarchyGrant y MemberGrant que controlan exactamente a qué datos puede acceder cada rol. Además, explorarás las políticas de rollup—una característica sofisticada que determina cómo se comportan los totales agregados cuando los usuarios tienen acceso restringido a miembros detallados subyacentes—asegurando que la seguridad no exponga inadvertidamente información restringida a través de valores agregados.
Lo que lograrás:
Crear usuarios de la plataforma (exec_user, sales_mgr, region_mgr, analyst) y asignar permisos en Pentaho
Configurar el mapeador de roles Lookup Map en pentahoObjects.spring.xml para conectar los roles de la plataforma con los roles de Mondrian
Implementar SchemaGrant con acceso "all" para el Rol Ejecutivo proporcionando acceso irrestricto al esquema
Implementar SchemaGrant con acceso "none" más CubeGrant para el Rol de Gerente de Ventas restringiendo a cubos específicos
Agregar niveles (State, City) a la jerarquía de la dimensión CUSTOMERS para pruebas de seguridad granulares
Implementar HierarchyGrant con restricciones topLevel y bottomLevel para el Rol de Analista limitando la profundidad de navegación
Crear seguridad MemberGrant para el Rol de Gerente Regional restringiendo el acceso a estados específicos (NJ, NY, PA)
Comprender la herencia de seguridad y cómo otorgar acceso a un hijo implica implícitamente otorgar acceso al padre
Configurar políticas de rollup (full, partial, hidden) para controlar el comportamiento de los agregados con acceso restringido
Probar y validar cada configuración de seguridad iniciando sesión como diferentes usuarios
Actualizar la caché del esquema de Mondrian para aplicar los cambios de seguridad
Al final de este taller, comprenderás cómo el modelo de seguridad jerárquico de Mondrian permite una protección de datos precisa y mantenible que refleja la estructura y responsabilidades organizacionales. En lugar de crear vistas o cubos separados para diferentes grupos de usuarios—un enfoque que duplica datos y crea pesadillas de mantenimiento—implementarás control de acceso por roles que mantiene una única fuente de verdad mientras presenta datos filtrados apropiadamente según las credenciales del usuario. Verás cómo los ejecutivos ven datos empresariales completos, los gerentes de ventas acceden a cubos departamentales, los gerentes regionales solo ven sus territorios y los analistas trabajan con datos resumidos sin detalles a nivel cliente—todo desde el mismo esquema subyacente asegurado mediante configuración XML declarativa en lugar de código de seguridad complejo a nivel de aplicación.
Prerrequisitos: Finalización del taller Miniature Models; Schema Workbench y Pentaho Server instalados con acceso administrativo; Comprensión de jerarquías de dimensiones y navegación de miembros; Familiaridad con la edición de XML y la gestión de usuarios en Pentaho
Tiempo estimado: 120 minutos
Descripción general de conceptos de seguridad
Antes de implementar seguridad, es importante entender la jerarquía de concesiones de seguridad en Mondrian:
Importante: Otorgar acceso a un elemento hijo otorga implícitamente acceso a su padre. Por ejemplo, otorgar acceso a un cubo otorga implícitamente acceso al esquema.
SchemaGrant
Controla el acceso a todo el esquema
CubeGrant
Controla el acceso a cubos individuales dentro de un esquema
DimensionGrant
Controla el acceso a dimensiones completas
HierarchyGrant
Controla el acceso a jerarquías y puede restringir por nivel (topLevel, bottomLevel)
MemberGrant
Controla el acceso a miembros específicos dentro de una jerarquía
Iniciar Schema Workbench:
Asegúrate de que el Pentaho Server esté en ejecución:
Asegúrate de que el Pentaho Server esté arrancado y en ejecución (iniciado automáticamente en Pentaho Lab):
Configuración
¡Vamos a profundizar aún más..!
El Gerente Regional solo debe ver datos para la región Oeste de EE. UU., estados que incluyen California, Oregón y Washington.
Usuarios y Roles
Crearemos varios usuarios de prueba para demostrar diferentes escenarios de seguridad:
exec_user
Ejecutivo
Acceso completo a todos los datos
sales_mgr
Gerente de Ventas
Acceso solo al cubo de ventas
region_mgr
Gerente Regional
Limitado solo a regiones específicas
analyst
Analista
Solo datos resumidos, sin registros detallados
Inicia sesión en Pentaho User Console como Administrador.
Nombre de usuario: admin
Contraseña: password
Navega a la Perspectiva de Administración desde el menú desplegable.
Selecciona Users & Roles > Manage Users.
Haz clic en el signo + para crear cada usuario de la tabla anterior con la contraseña: password

Navega a Users & Roles > Manage Roles
Asigna los siguientes Roles / Permisos al usuario:
Ejecutivo
Todos los permisos
exec_user
Gerente de Ventas
Programar contenido
Leer contenido
Publicar contenido
Crear contenido
Ejecutar
sales_mgr
Gerente Regional
Programar contenido
Leer contenido
Publicar contenido
Crear contenido
Ejecutar
region_mgr
Analista
Publicar contenido
Crear contenido
analyst

Mapeador de Roles
El mapeador de roles conecta los roles de usuario de Pentaho con los roles del esquema de Mondrian. Usaremos el mapeador de roles Lookup Map para demostrar un mapeo de roles flexible.
Abre el archivo - pentahoObjects.spring.xml:
Localiza la sección Mondrian-UserRoleMapper (aproximadamente línea 295)
Comenta el mapeador One-to-One por defecto si está activo:
Descomenta y configura el mapeador de roles Lookup Map:
Guarda el archivo.
Reinicia el servidor Pentaho para que los cambios surtan efecto.
La clave representa el nombre del rol en Pentaho y el valor representa el nombre del rol de Mondrian que se definirá en el esquema.
SchemaGrant
SchemaGrant controla el acceso al esquema Miniature Models. Implementaremos dos escenarios:
acceso completo:
sin acceso:
Actualizar la caché del esquema de Mondrian
Por favor recuerda actualizar la caché del esquema de Mondrian cada vez que edites y guardes el esquema Miniature Models - security.xml ..
Inicia sesión como Administrador.
Contraseña: password

Sigue los pasos a continuación para entender la diferencia entre Acceso completo y Sin acceso:
Acceso completo - Rol Ejecutivo
El rol Ejecutivo debe tener acceso irrestricto a todos los cubos y dimensiones del esquema. El método más sencillo para aplicar SchemaGrant es editando
Abre el esquema Miniature Models - original.xml.
Guardar como: Miniature Models - security.

Resalta Schema y haz clic en 'User shadow+'.
Ingresa: Executive Role y tab para establecer el valor.
Click derecho sobre Executive Role y selecciona: Add Schema Grant:

Selecciona: all y tab para establecer el valor:

Click derecho sobre el Schema Grant y agrega Cube Grant:

Establecer acceso: all
Desde el desplegable de cubos, selecciona: Sales_FY2003_2005:

Haz clic en Guardar y Publicar.
Actualmente solo los usuarios con el rol Executive Role tienen acceso al esquema Miniature Models - security / cubo Sales_FY2003_2005 como fuente de datos ..
Para probar inicia sesión como: exec_user

Para probar inicia sesión como: analyst

Gerente de Ventas
Hasta ahora solo los usuarios con el rol Executive Role tienen acceso al esquema Miniature Models - security como fuente de datos. El siguiente paso es establecer acceso solo al cubo Sales_FY2003_2005 para los usuarios con el rol Sales Managers Role.
Abre el esquema Miniature Models - security.xml.
Resalta Schema y haz clic en 'User shadow+'.
Ingresa: Sales Managers Role y tab para establecer el valor.
Click derecho sobre Sales Managers Role y selecciona: Add Schema Grant.
Selecciona: none y tab para establecer el valor:

Click derecho sobre el Schema Grant y agrega Cube Grant.
Establece el acceso: all y tab para establecer el valor.
Desde el desplegable de cubos, selecciona el cubo: Sales_FY2003_2005 y tab.

Haz clic en Guardar y Publicar.
Para probar inicia sesión como: sales_mgr

Establecer access='none' a nivel de SchemaGrant bloquea todos los cubos por defecto. El CubeGrant luego otorga selectivamente acceso al cubo Sales_FY2003_2005, otorgando implícitamente acceso también al esquema padre.
Recuerda actualizar la caché del esquema de Mondrian ..
HierarchyGrant
HierarchyGrant permite un control fino sobre qué niveles de una jerarquía pueden acceder los usuarios. Usaremos los atributos topLevel y bottomLevel para restringir la vista del rol Analista.
El rol Analista debe ver solo datos resumidos, sin acceso a los detalles más granulares. Restringiremos su vista para mostrar datos desde el nivel Country hasta el nivel City, pero no códigos postales individuales.
Así que vamos a tener que agregar algunos Niveles a nuestro Esquema:
All > Territory > Country > State > City > Customer Name
Actualizar la caché del esquema de Mondrian
Por favor recuerda actualizar la caché del esquema de Mondrian cada vez que edites y guardes el esquema Miniature Models - security.xml ..
Inicia sesión como Administrador.
Contraseña: password

Para agregar otro nivel, en el panel izquierdo, haz clic derecho en Customers (jerarquía) bajo CUSTOMERS y selecciona Add Level.
Para definir el nivel State, escribe o elige:
name
State
column
STATE
type
String
levelType
Regular
hideMemberIf
Never
Para definir el nivel City, escribe o elige:
name
City
column
CITY
type
String
levelType
Regular
hideMemberIf
Never
Abre el esquema Miniature Models - security.xml.
Resalta Schema y haz clic en 'User shadow+'.
Ingresa: Analyst Role y tab para establecer el valor.
Click derecho sobre Analyst Role y selecciona: Add Schema Grant.
Selecciona: none y tab para establecer el valor:
Click derecho sobre el Schema Grant y agrega Cube Grant.
Establece el acceso: all y tab para establecer el valor.
Desde el desplegable de cubos, selecciona el cubo: Sales_FY2003_2005 y tab.
Click derecho sobre el Cube Grant y agrega Hierarchy Grant.

Desde las opciones del desplegable selecciona lo siguiente:
access
custom
hierarchy
[CUSTOMERS.Customers]
topLevel
[CUSTOMERS.Customers].[Country]
bottomLevel
[CUSTOMERS.Customers].[City]

Nivel superior e inferior
topLevel: El nivel más alto (más agregado) que el usuario puede ver. Establecerlo en Country significa que el usuario no puede ver el nivel All.
bottomLevel: El nivel más bajo (más detallado) que el usuario puede ver. Establecerlo en City significa que el usuario no puede ver datos individuales de tiendas.
Resultado: El Analista puede ver datos agregados desde Country > Region > City, pero no detalles a nivel Customer Name.
Click derecho sobre el Cube Grant y agrega Hierarchy Grant.
Desde las opciones del desplegable selecciona lo siguiente:
access
all
hierarchy
[PRODUCTS.Products]

Haz clic en Guardar y Publicar.
Para probar inicia sesión como: analyst

Nota: El alcance de la jerarquía Customers ha sido restringido - sin Territory ni PostalCode
Member Grant
¡Vamos a profundizar un poco más..!
El Rol de Gerente Regional solo debe ver datos para la región Este de EE. UU., que incluye: New York, New Jersey y Pennsylvania.
Actualizar la caché del esquema de Mondrian
Por favor recuerda actualizar la caché del esquema de Mondrian cada vez que edites y guardes el esquema Miniature Models - security.xml ..
Inicia sesión como Administrador.
Contraseña: password

Abre el esquema Miniature Models - security.xml.
Resalta Schema y haz clic en 'User shadow+'.
Ingresa: Regional Manager Role y tab para establecer el valor.
Click derecho sobre Regional Manager Role y selecciona: Add Schema Grant.
Selecciona: none y tab para establecer el valor:
Click derecho sobre el Schema Grant y agrega Cube Grant.
Establece el acceso: all y tab para establecer el valor.
Desde el desplegable de cubos, selecciona el cubo: Sales_FY2003_2005 y tab.
Click derecho sobre el Cube Grant y agrega Hierarchy Grant.
Desde las opciones del desplegable selecciona lo siguiente:
access
custom
hierarchy
[CUSTOMERS.Customers]
topLevel
[CUSTOMERS.Customers].[State]

Click derecho sobre Hierarchy Grant para Agregar un Member Grant.
Agrega las restricciones de Member para cada estado: [NJ] [NY] [PA]
Repite el flujo de trabajo para agregar los siguientes Member Grants:
access
all
member
[CUSTOMERS.Customers].[NA].[USA].[NJ]
[CUSTOMERS.Customers].[NA].[USA].[NY]
[CUSTOMERS.Customers].[NA].[USA].[PA]

Finalmente agrega la jerarquía PRODUCTS.Products:
access
all
hierarchy
{PRODUCTS.Products]

Finalmente Guarda y Publica.
Con access="custom", Mondrian deniega todo por defecto y solo permite lo que otorgas explícitamente. Al otorgar acceso solo a NJ, NY y PA, esos serán los únicos estados visibles.
Para probar inicia sesión como: region_mgr

Observa topLevel: STATE. El comportamiento por defecto es restringir el total / SUM como un rollup Parcial.
Políticas de Rollup
Las políticas de rollup controlan cómo se agregan las medidas cuando la seguridad basada en roles restringe el acceso a ciertos miembros en una jerarquía de dimensión. Esto se vuelve crítico cuando tienes jerarquías con acceso restringido: topLevel y bottomLevel restringirán la agregación.
Cuando un rol restringe el acceso a ciertos miembros de dimensión, ¿qué debería pasar con los totales en niveles superiores? ¿Deberían incluir los datos restringidos o no?
full
Muestra el total completo incluyendo miembros ocultos. El usuario ve totales precisos a nivel de toda la compañía, pero no puede inferir valores ocultos si pocos miembros son visibles.
partial
Muestra el total solo de los miembros visibles. El usuario ve subtotales precisos para sus datos autorizados. Útil cuando los usuarios solo deben ver su alcance.
hidden
Oculta el total completamente si cualquier hijo no es accesible. Opción más restrictiva, evita cualquier inferencia de datos ocultos.
Ejecutivo / VP
full
Necesitan una visión completa, con restricción en el drill-down
Gerente Regional
partial
Solo deberían ver los totales de su región
Colaborador
partial o hidden
Alcance limitado, sin necesidad de agregados
Analista (datos restringidos)
full
Necesita el contexto de los datos completos mientras trabaja con un subconjunto
Recuerda que el nivel de agregación está determinado por las restricciones de acceso. Entonces.. Si el Gerente Regional necesita ver "totales completos pero drill-down limitado":
Usa concesiones de arriba hacia abajo con denegaciones:
¿Te fue útil?
