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:
13 comentarios