Restricción del acceso a los datos del modelo en Power BI
El control de acceso en Power BI se puede lograr mediante:
- Seguridad a nivel de fila (RLS): Restringe datos a nivel de filas según el usuario.
- Seguridad a nivel de objeto (OLS): Restringe el acceso a tablas y columnas.
- Inicio de sesión único (SSO): Permite aplicar restricciones de acceso desde el origen de datos.
Seguridad a nivel de fila (RLS)
¿Qué es RLS?
- Restringe el acceso a filas específicas dentro de las tablas del modelo.
- Se configura mediante roles, cada uno con su propio conjunto de reglas de acceso.
- Usa expresiones de DAX para definir las restricciones de datos.
Principios de diseño recomendados
- Aplicar esquema de estrella para una propagación eficiente de filtros.
- Filtrar tablas de dimensiones en lugar de tablas de hechos para un mejor rendimiento.
Definición de reglas en RLS
Las reglas de RLS se evalúan en contexto de fila, donde la expresión DAX debe devolver TRUE
para permitir el acceso.
Reglas estáticas
- Basadas en valores constantes en DAX.
- Desventajas:
- Requiere actualizaciones manuales cuando se agregan nuevas regiones.
- Puede ser difícil de mantener en modelos grandes.
Reglas dinámicas
- Basadas en valores de usuario autenticado.
- Se utilizan funciones DAX como:
USERPRINCIPALNAME()
→ Devuelve el usuario autenticado en Power BI Service.USERNAME()
→ Devuelve el usuario en Power BI Desktop (formato diferente al de Service).
- Ventajas:
- Se adapta automáticamente a nuevos usuarios sin modificar el modelo.
- Reduce la necesidad de crear múltiples roles manualmente.
Validación y asignación de roles en RLS
Verificación de reglas
- Usar la función "Ver como" en Power BI Desktop para simular el acceso según diferentes roles.
- Asegurar que los filtros aplican correctamente a las tablas relacionadas.
Asignación de roles en Power BI
- Se asignan usuarios o grupos de seguridad a cada rol en el servicio Power BI.
- Recomendación: Usar grupos de seguridad en lugar de usuarios individuales para facilitar la administración.
Inicio de sesión único (SSO) para DirectQuery
- Permite que Power BI respete las reglas de seguridad del origen de datos.
- Requiere que la base de datos tenga RLS implementado.
- El usuario de Power BI se autentica en la base de datos y se aplican restricciones de acceso automáticamente.
Restricción del acceso a objetos del modelo (OLS)
La seguridad a nivel de objeto (OLS) controla el acceso a:
- Tablas específicas.
- Columnas dentro de una tabla.
- Metadatos (ocultando información en DMV y exploradores de metadatos).
Ejemplo de uso de OLS
En una empresa, la tabla DimEmployee
contiene información personal:
- Los empleados pueden ver los nombres y contactos.
- Solo el personal de Recursos Humanos puede ver los salarios.
Para restringir la columna de salario:
- Crear un rol en Power BI.
- Aplicar restricciones OLS mediante un punto de conexión XMLA.
- Asignar el rol en el servicio Power BI.
Configuración de OLS en Power BI
- Crear roles en Power BI Desktop (igual que RLS).
- Definir reglas OLS usando XMLA (requiere Power BI Premium).
- Publicar el modelo y asignar permisos a los roles en Power BI Service.
Opciones de acceso en OLS:
- Lectura: Permite acceder a la tabla/columna.
- Ninguno: Bloquea completamente el acceso.
Nota: No se pueden ocultar medidas, pero si una medida depende de un objeto restringido, también quedará bloqueada.
Consideraciones sobre RLS y OLS
- No se pueden mezclar RLS y OLS en el mismo rol.
- No se puede restringir una tabla si interrumpe una cadena de relaciones.
- Ejemplo: Si
Tabla A
se relaciona conTabla B
yTabla B
conTabla C
, restringirTabla B
rompería la relación entreA
yC
.
- Ejemplo: Si