Primer acercamiento a la seguridad a nivel de objeto en Power BI (OLS)

Primer acercamiento a la seguridad a nivel de objeto en Power BI (OLS)

Ayer se anunció que ha llegado a Power BI la seguridad a nivel de objeto (OLS). Si bien en un primer momento mi percepción era que se trataba de una capacidad Premium, sin embargo, es posible crear la seguridad a nivel de objeto con licencia pro a través de Tabular Editor.

Vamos a ver en qué consiste todo esto.

Hasta ahora la seguridad que teníamos en power bi era la seguridad a nivel de fila, lo que conocemos con RLS y que nos permitía poder filtrar la información a nivel de líneas para que los diferentes usuarios solo pudieran ver la información filtrada según su rol.

A partir de ahora, vamos a tener también la posibilidad de ocultar de manera segura información de tablas o columnas completas a través de Tabular editor.

Directamente vamos a configurar un ejemplo desde 0. Partimos del modelo de ventas de Contoso y vamos a establecer una restricción a nivel de columna en la columna coste. Imaginad que tenemos un nivel único para todo el departamento de Ventas pero queremos que la información de costes no esté accesible a nivel de comerciales y si a nivel de jefes de equipo.

1º Creamos los roles como si de roles de RLS se tratara

No tenemos que establecer ningún filtro en DAX ya que no vamos a crear ningún filtro a nivel de línea

Nos vamos a Tabular Editor y allí en la pestaña de roles nos encontramos los dos roles creados:

De primera, parece que sólo se pueden cambiar los permisos a nivel de tabla:

El permiso original es Defaut y puede cambiarse a None o a Read.

Si cualquiera de las tablas la ponemos en None, esa tabla desaparece literalmente del modelo para el usuario afectado por la limitación de permiso y cualquiera de las medidas en las que interviniera esa tabla. Pero para nuestro ejemplo quiero establecer una limitación concreta, que los comerciales no puedan de ninguna manera ver datos que tengan que ver con la columna coste de la tabla de ventas.

Para poder cambiar un permiso a nivel de columna tendremos que cambiar el permiso en la tabla para el rol seleccionado. Con cambiar a None y volver a Default ya nos aparece la tabla para poder configurarla en el rol seleccionado.

Y seleccionando la tabla ya podremos cambiar los permisos a nivel de columna:

Ponemos la columna TotalCost en None y veamos como afecta en el reporte:

Guardamos los cambios y vamos a comprobar el desktop:

Tenemos una página con una tabla en la que podemos ver Cantidad, Ventas y coste por Tienda:

Si le damos a ver como rol: Comerciales

Nos devuelve este error debido que para el rol Comerciales, no existe la columna TotalCoste en el modelo y, por tanto, No existe tampoco la medida Total Coste en el modelo para ese rol:

La medida desaparece:

Si vemos como Jefe de equipo, sin embargo, no tenemos ese problema.

Veamos también desde el servicio de power bi:

Vamos a probar como rol en el servicio:

Como Jefe de equipo, lo vemos la visualización que incluye Total Coste sin problema:

Con el rol de comercial nos devuelve un error.

Conclusiones:

Podemos tener un único modelo con diferentes roles de permisos a nivel de tablas y columnas.

Esta característica sale en preview por lo que puede todavía ser susceptible de mejora.

Por mi parte creo que una de las cosas a mejorar es que en lugar de un error debería mostrarnos sólo la información a la que se tiene acceso. No se si saldrá algún workaround para conseguir ese efecto, que sería el deseable, para poder tener un mismo informe para todos los roles sin que el mismo muestre errores.

Sea como fuere, es una característica espectacular y que confiere de más opciones de seguridad sin necesidad de simularlas en nuestro modelo.

Podeis ver el funcionamiento en un video de Jose Escalante en español, muy recomendable:

Francisco Mullor Cabrera

13 comentarios

Juan Publicado el7:25 am - 02/03/2021

OLS es solo para Power BI Premium?

    Fran Mullor Publicado el10:48 am - 02/03/2021

    Te respondo con la primera línea del articulo:

    Ayer se anunció que ha llegado a Power BI la seguridad a nivel de objeto (OLS). Si bien en un primer momento mi percepción era que se trataba de una capacidad Premium, sin embargo, es posible crear la seguridad a nivel de objeto con licencia pro a través de Tabular Editor.

      Juan Publicado el4:23 pm - 02/03/2021

      A mi la parte de «Table Permisions» no me aparece, desconozco el por que?

Juan Publicado el11:50 am - 02/03/2021

Gracias , lo buscare pues en Tabular editor no consigo ver esa propiedad.

    Fran Mullor Publicado el2:06 pm - 02/03/2021

    Está también perfectamente explicado en el post.

    ¿Lo has leido?

      Cesar Chunga Publicado el11:07 pm - 02/03/2021

      Así pasa Francisco, muchos usuarios preguntan sin leer bien un artículo. Nos falta como sociedad leer más a detalle y no afirmar en una primera instancia. Saludos.

      Juan Publicado el8:56 am - 03/03/2021

      Por supuesto lo he leído y agradezco enormemente tus aportaciones, pero no me aparece y desconozco el por qué.

      No puedo pegarte el pantallazo en este post.

      Gracias y seguire investigando.

Juan Publicado el8:57 am - 03/03/2021

Por supuesto lo he leído y agradezco enormemente tus aportaciones, pero no me aparece y desconozco el por qué.

No puedo pegarte el pantallazo en este post.

Gracias y seguire investigando.

    Francisco Mullor Publicado el5:06 pm - 03/03/2021

    Tienes la última versión descargada de Tabular Editor? por si es un problema de la versión

    Dani Publicado el9:13 am - 04/03/2021

    Juan, si no lo has resuelto, prueba a pinchar encima del nombre del rol. Si pinchas en el campo que hace de filtro dentro del rol no te aparece Table permissions.

jans Publicado el11:08 am - 07/05/2021

No se puede combinar con RLS y eso es una gran desventaja. Para mi se vuelve inutil OLS sin poder combinarlo con RLS.

    Joponlu Publicado el11:09 am - 14/07/2021

    Efectivamente, hasta que no convivan RLS y OLS, tiene aplicación muy limitada

NOELIA DINARDI Publicado el4:19 pm - 21/08/2023

hola, cómo estás?
consulto si tienes alguna actualización acerca de que devuelve un error en vez de solo ocultar la información para quienes no tienen permiso.
gracias

Deja una respuesta