Desde abril de 2021 está disponible en Power BI Premium y PRO una nueva funcionalidad de seguridad heredada de Analisys Services que permite restringir el acceso o la visibilidad a parte de los datos que tenemos en el modelo ocultando columnas o tablas completas.

Esta nueva característica es interesante ya que permite ocultar a determinados usuarios ciertos datos que puedan ser sensibles o información que no queremos compartir con ellos.  Esta nueva medida de seguridad incluye dos características, una restringe el acceso a la información ocultando esa columna o tabla del modelo como si no existiera y la otra impide que puedan interactuar con los datos dando acceso solo de lectura.

RLS

Hasta ahora conocíamos la seguridad a nivel de fila en Power BI o Row level security (RLS) que se usa para restringir el acceso a los datos para determinados usuarios. Esta seguridad se puede implementar a nivel de roles. Cada usuario verá solo sus filas de datos de cada una de las tablas.

Tenemos dos formas de implementar la seguridad a nivel de fila, Seguridad Estática o Seguridad Dinámica. La seguridad Estática consiste en crear un rol con un tipo de filtro en alguna dimensión y asignar este rol al usuario o usuarios deseados.

Pero, además de asignar roles a usuarios también podemos tener una lista de usuarios en una tabla de una BBDD o en una hoja de cálculo de Excel en la que asignamos valores de alguna dimensión a cada usuario, bien pueden ser códigos de tiendas, regiones, productos… El modelo se filtra dinámicamente por ese valor de la dimensión en base a la asignación que tenga ese usuario en la tabla. Cada usuario puede tener más de un valor asignado y si se quiere aplicar un cambio de permisos solo necesitas modificar esa tabla.

Pero si queremos ir más allá y ocultar a algún usuario una métrica, tabla o columna de nuestro modelo, como podría ser nuestro margen de ventas, no es posible hacerlo con RLS. Desde febrero de 2021 en fase de pruebas y oficialmente desde abril 2021 está disponible un nuevo tipo de seguridad que nos permite ocultar ciertos indicadores a determinados usuarios.

OLS

La seguridad a nivel de Objeto u Object Level Security (OLS) nos permite ocultar tablas, columnas o indicadores a determinados usuarios asignándoles restricciones a nivel de objeto a sus roles. Con RLS el usuario no ve determinada información en cuanto a datos, pero sigue viendo el objeto en el modelo. Con OLS, desde el punto de vista del usuario, esa tabla o columna no existe en el modelo y ninguna referencia a ella está disponible si se le restringe su acceso.

Con las perspectivas también se pueden ocultar tablas o columnas a los usuarios, pero las perspectivas no se pueden usar como mecanismos de seguridad ya que los usuarios pueden acceder a ellas a través de DAX o usando una perspectiva diferente. Mientras que con OLS si lo exportamos a Analizar en Excel la tabla dinámica que obtenemos no muestra las tablas o columnas que hemos restringido.

Habrá que tener en cuenta que cada indicador o métrica que utilice estos campos restringidos tampoco será visible por lo que si solo queremos ocultar algunas métricas habrá que crear una columna específica a la que aplicar la seguridad por objeto.

Para poder aplicar a un rol la seguridad de OLS es necesaria una herramienta externa como puede ser Tabular Editor ya que no es una funcionalidad nativa de Power BI.

Casos de uso

La seguridad a nivel de objeto puede ser útil para implementar en diferentes departamentos de una organización, para empleados con distintas funciones, proveedores externos, etc. Podemos encontrar dos grandes usos a la seguridad por objetos que hasta ahora no era posible implementar con las funcionalidades de seguridad que existían.

Por un lado, nos puede resultar útil para ocultar o restringir el acceso a cierta información sensible de los usuarios. Podemos querer ocultar a los empleados de una empresa el número de identificación personal de cada uno o su nómina. O restringir el acceso a los datos privados de los clientes a un proveedor externo.

Por otro lado, la seguridad OLS nos permite ocultar un indicador o métrica como puede ser el margen de ventas o el coste de un producto a un proveedor o usuario externo al que sí que queremos mostrar otros datos de nuestro negocio como puede ser el número de productos vendidos o la distribución de ventas según el tipo de cliente.

Vamos a implementar seguridad por OLS a través de Tabular Editor en nuestro modelo que simula un negocio de retail en el que tenemos tablas como Country, Customer, Sellers, Sales, Store…

En primer lugar, tenemos una gráfica que muestra la Cantidad Vendida y el Margen obtenido por cada tienda.

sold quantity

Nuestro objetivo es que el usuario no pueda ver el margen obtenido para ninguna de las tiendas.

Como el margen se calcula con la siguiente expresión DAX:

Object Level Security in Power BI

Y ambas métricas, Income y Cost, provienen de la tabla Sales vamos a crear un rol que oculte la tabla Sales.

Object Level Security in Power BI
income

Primero creamos un rol al que llamaremos Ocultar Sales.

ocultar sales

En el Tabular Editor, en Roles vemos que aparece nuestro rol. Lo seleccionamos y en el apartado Table Permissions vemos las diferentes tablas del modelo. Vamos a denegar el acceso a la tabla Sales.

Object Level Security in Power BI

Vemos que podemos dejar la tabla con permisos solo de lectura o ocultarla por completo, vamos a restringir el acceso a la tabla por lo que seleccionamos None. No debemos de olvidarnos de guardar nuestros cambios en el Tabular Editor.

Si volvemos al modelo y seleccionamos View as y marcamos el rol que hemos creado estaremos viendo el modelo con la restricción que hemos aplicado al rol.

view as roles

Observamos que no podemos ver nada de la gráfica anterior. También vemos que toda la tabla Sales ha desaparecido del modelo y ninguna referencia a esa tabla está disponible.

welcome

Pero nosotros sí que queríamos que el usuario pudiera ver la cantidad que se había vendido, solo queríamos ocultar el margen. Vamos a crear otro rol que solo oculte el margen restringiendo el acceso solo a la columna SalesCost que es la columna utilizada para calcular el margen.

Creamos el rol Ocultar Margen, y en el Tabular Editor en vez de irnos a nivel de Roles nos vamos a nivel de Tables. Seleccionamos la columna que queremos ocultar y vemos que debajo de Object level security podemos ver la lista de roles disponibles. Vamos a restringir el acceso para el nuevo rol que hemos creado.

Object level security

Si visualizamos con este rol vemos como ahora podemos ver en el modelo la métrica de Cantidad vendida pero no la del Margen. Sin embargo, la gráfica no se pude visualizar. Esto es porque utiliza la métrica de margen que es la que hemos ocultado.

rol

Una vez quitamos de los valores la métrica que nos causa conflicto, ya se visualiza la gráfica correctamente.

grafica

Ahora vamos a suponer que no queremos mostrar cierta información sensible de nuestros clientes como puede ser el nombre completo a los proveedores externos, pero queremos que vean las conductas de compra según su género y número de hijos. Vamos a crear un rol en el que ocultaremos el nombre del cliente.

ocultar nombre cliente

Creamos un rol como hemos hecho antes y en el Tabular Editor vamos a ir a nivel de Tables y vamos a restringir el acceso de ese rol a la columna CustomerName.

customer name

En el modelo seleccionamos View as el nuevo rol que hemos creado y observamos que podemos visualizar correctamente la gráfica que muestra la cantidad vendida por género y número de hijos, pero no aparece el campo CustomerName en el modelo.

view

Consideraciones

Si vamos utilizar la seguridad por OLS en un report para ciertos usuarios debemos de asegurarnos de poner las métricas que queremos ocultar en gráficas separadas o en otra página del report ya que de la otra forma estaríamos ocultando también información que sí que queremos mostrar.

Al restringir el acceso a una columna o tabla ninguna referencia a éstas estará disponible para el usuario por lo que todas las gráficas que utilicen este indicador fallarán. Sería una buena práctica colocar las gráficas que usan las columnas o tablas restringidas en otra página del report e informar al usuario de que si navega a esa página no va a poder visualizar nada de información.

Conclusión

La seguridad por OLS es una nueva funcionalidad muy potente que abre un nuevo abanico de posibilidades permitiendo agilizar la administración de la seguridad. Esta y muchas otras funcionalidades de Power BI están llevando a las organizaciones a agilizar sus procesos de administración y seguridad lo que se transforma en un ahorro considerable de tareas con menor valor añadido. Esto se transforma en más tiempo para centrarse en tareas más importantes como el análisis y modelado de datos.

¡Has llegado al final! Parece que te ha gustado nuestro post sobre BI

Recuerda que, tanto si eres usuario de negocio sin experiencia y quieres dar tus primeros pasos en BI como si eres experto y quieres profundizar en tus conocimientos, tenemos algún curso para ti. Comprueba nuestro catálogo de formación en Power BI aquí.

Voy a Echar un vistazo
0 Shares:
Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You May Also Like
Leer más

NOEXPAND y las vistas indizadas

Optimizar vistas indexes NOEXPAND. No siempre el optimizador de consultas de SQL tiene toda la información necesaria para generar el mejor plan de optimización y a veces hay que ayudarle, en este caso los desarrolladores de Navision han utilizado la siguiente opción para salvaguardarse.