Seguridad nivel de fila ( RLS ) e incrustar PowerBI en una aplicación
por Soluciones Peritos
Resumen
En una aplicación multiusuario que muestra información específica del usuario, el aislamiento de datos es el requisito más importante. Restringe los datos de un usuario para que sean visibles para otro usuario.
Si bien hay varias formas de implementar el aislamiento de datos, una de las formas de lograrlo es almacenando un atributo basado en el usuario en cada fila. Por lo tanto, marcar cada fila con una identificación de nivel de seguridad. Esto proporciona una manera fácil para que la lógica de acceso a aplicaciones / datos filtre los registros en función del usuario que está intentando acceder a los datos. Sin embargo, al informar aplicaciones como PowerBI, esto podría ser un desafío si se requiere que el mismo informe se comparta entre diferentes usuarios.
Para superar este desafío, PowerBI proporciona una característica llamada “ Seguridad de nivel de fila ( RLS ) ”. La seguridad de nivel de fila en PowerBI proporciona un filtro único que se puede usar para filtrar los datos en función del usuario que accede al informe, por lo que proporciona seguridad de datos.

Este artículo explica cómo puede incrustar el tablero en su aplicación con seguridad de nivel de fila y proteger los informes en función del usuario que accede al informe.
Ejemplo de datos: https://docs.microsoft.com/en-us/power-bi/sample-customer-profitability
Tiene datos de información relacionada con el cliente y le asignó un vendedor que hace el trabajo.
También puede ver el video tutorial dividido en 2 partes según los enlaces a continuación:
Parte 1: Tablero de control de BI de energía de inserción
Parte 2: Agregar seguridad de nivel de fila
Requisito previo:
- Licencia Power BI Pro y cartero para probar las API
- Los datos deben estructurarse de una manera que tenga una columna con el Propietario que coincida con el filtro que está intentando agregar.
Para ayudarlo a comprender el código de muestra y los datos para descargar
- La tabla del cliente tiene ID del cliente
- La tabla de datos tiene la clave del cliente que se conecta a la tabla del cliente a través de la ID del cliente
- La tecla FACT-BU se conecta a la tabla BU a través de BUKEY y encuentra BU-Executive-ID para encontrar al ejecutivo asignado al cliente
- Executive-ID daría el campo Nombre ejecutivo en la tabla ejecutiva
Con la lógica de datos anterior, puede obtener el nombre del ejecutivo responsable de las ventas específicas y poder trabajar según el requisito siguiente:
Objetivo: El objetivo es implementar un panel de control similar y agregar seguridad de nivel de fila para mostrar solo la información del cliente al vendedor que se está asignando y para la presentación de administradores a todos los usuarios.
Siga los pasos a continuación después de iniciar Power BI
Cree un espacio de trabajo que almacene el informe específico. https://app.powerbi.com/home
Inicie sesión en el enlace de arriba y siga los pasos a continuación:
- Haz clic en el espacio de trabajo
- Haga clic en “ Crear un espacio de trabajo ”
- Agregar nombre de espacio de trabajo
- Agregar descripción
- Haz clic en Guardar

Ahora abra el archivo PBIx y haga clic en Publicar y aparecerá para que seleccione el espacio de trabajo y seleccione el espacio de trabajo creado en el paso anterior.

Registro de aplicación
Registró una aplicación en PowerBI usando https://dev.powerbi.com/apps
- Ingrese el nombre de pantalla de su elección.
- Ingrese el tipo de aplicación
- Ingrese cualquier URL de página de inicio de su elección.
- Ingrese una URL de redireccionamiento
- Seleccione la casilla de verificación “ Seleccione Todos ” para acceder a la API.

Haga clic en registrarse en la parte inferior de la página para obtener la ID de aplicación y el secreto de la aplicación

Nota ID de aplicación y secreto de aplicación.

A continuación, los pasos enumeran cómo puede publicar e incrustar los informes en una página web
Y también cómo podría agregar la seguridad de nivel de fila para que el usuario solo vea los datos relevantes para ellos y no para otros.
Hay un par de pasos involucrados sobre cómo podría hacer esto:
- Obtén el token de acceso
- Obtenga la lista de todos los grupos, es decir, espacios de trabajo y encuentre la ID relevante para el grupo que estamos utilizando
- Generar token de incrustación
- Encuentre la identificación para el informe específico
- Configurar la seguridad de nivel de fila para el informe
- Crear expresión DAX para filtrar para usuarios específicos
- Generar token con seguridad de nivel de fila
- Incruste el informe utilizando el token y el filtro de seguridad de nivel de fila como se indica arriba.
Paso 1 Generar token de acceso
Genere el token de acceso utilizando el cliente Id, secreto y nombre de usuario / contraseña que se generó en el último paso.
Iniciar sesión en su cuenta
Editar descripción
login.microsoftonline.com

Si obtiene un error como se muestra a continuación “ El usuario o administrador no ha consentido en usar la aplicación con ID … “
Esto significa que usted no es el administrador o no ha consentido en usar la aplicación
Entonces, para hacer esto, necesitaría pasar por el portal Azure como se muestra a continuación
- Ir al directorio activo de Azure
- Registro de aplicación
- Ir a ventas de CRM
- Ir a permisos API
- Haga clic en “ Grant Access …. ”

El administrador de directorio activo debe proporcionar permiso para algunas de las API que seleccionamos anteriormente.

Ahora ejecute nuevamente el token de acceso de generación y obtenga la ID de Token:

Paso 2 Consigue todos los grupos
Obtenga todos los detalles del grupo powerBI usando los grupos API ( El grupo en PowerBI es el mismo que el espacio de trabajo )
https://api.powerbi.com/v1.0/myorg/groups
Pase el valor de token de acceso “ ” del paso 1 en el encabezado “ Autorización ” y le dará una ID de grupo que es la ID de espacio de trabajo que utilizó para publicar el informe.

Paso 3 Obtenga detalles del informe
Obtenga todos los detalles del informe dentro del grupo utilizando la identificación del grupo que se encuentra en el paso 2
https://api.powerbi.com/v1.0/myorg/groups/{GroupId}/reports
Esto le daría la ID de informe específica que se publica en el grupo.

Paso 4 Generar token de incrustación
Genere el token de incrustación para el informe utilizando el informe Id del paso 3 y groupId del paso 2
Recuerde agregar la misma ficha al portador en el encabezado y en el cuerpo que se muestra a continuación para obtener la ficha de inserción
https://api.powerbi.com/v1.0/myorg/groups/{GroupId}/reports/{ReportId}/generatetoken
Este token le ayuda a mostrar el informe en una página web.

Paso 5 Acceda al informe sin seguridad de nivel de fila
A continuación se puede usar el enlace para acceder al informe utilizando EmbedToken
https://microsoft.github.io/PowerBI-JavaScript/demo/v2-demo/index.html#
También muestra el código JavaScript que se puede utilizar para acceder al tablero.
- Token de incrustación: pase el token de incrustación desde el paso 4
- Url de incrustación: del paso 3
- Informe Id: del paso 3
El valor anterior debe rellenarse para ver el tablero.

Esto le da una vista general del tablero.
Paso 6 Configuración de seguridad de nivel de fila
Para ver la seguridad del nivel de fila, agregue una nueva columna calculada ‘ Nombre de usuario ’ en la Tabla ejecutiva, para eliminar los espacios del nombre ( ya que el espacio no es un carácter válido mientras se genera EmbedToken con RLS )
- Haga clic derecho para agregar una nueva columna
- Agregue la fórmula a continuación para crear una nueva columna con UserName
Nombre de usuario = SUSTITUTO ( Ejecutivo [ Nombre ], “ “, ” ” )

Paso 7 Crea expresión DAX
Se actualizó el rol ‘ Tenant ’ para usar la nueva columna ‘ UserName ’ y se creó una nueva expresión DAX usando la función Username ( ).
- Haga clic en Administrar roles
- Haga clic en Rol como inquilino
- Haz clic en Crear
- Haga clic en la mesa ejecutiva
- Haga clic para agregar la expresión DAX como se muestra a continuación
[ Nombre de usuario ] = USERNAME ( )
6). Guarde el informe y publique nuevamente
Nombre de usuarioFunción ( ) Devuelve el nombre de dominio y el nombre de usuario de las credenciales dadas al sistema en el momento de la conexión. Publicar el informe nuevamente

Paso 8 Genere token de incrustación con RLS
A continuación se muestra la API y la solicitud para generar EmbedToken con seguridad de nivel de fila configurada para el usuario ‘ TinaLassila ’
- El nombre de usuario es una de las entradas en la tabla ejecutiva.
- Roles: El inquilino es el papel que definimos en el paso 8
- ID del conjunto de datos es el valor que obtiene del Paso 3
Usar API https://api.powerbi.com/v1.0/myorg/groups/{GroupId}/reports/{ReportId}/generatetoken
URL de muestra: https://api.powerbi.com/v1.0/myorg/groups/c57196fc-74ff-444e-b6a7-eceb24acc961/reports/09c71fed-dcee-4698-9f61-4b5c27176f20/generatetoken
RequestBody:{
"AccessLevel": "Ver",
"allowSaveAs": "falso",
"identidades": [ {
"nombre de usuario": "TinaLassila",
"roles": [ "Tenant" ],
"conjuntos de datos": [ "{ Conjunto de datosId }" ]
} ]
}

Paso 9 Acceda al informe con seguridad de nivel de fila
Usando el token de incrustación, el tablero muestra datos filtrados:
- Token de incrustación: pase el token de incrustación desde el paso 8
- Url de incrustación: del paso 3
- Report Id: from Step 3
Below report is now filtered for user Tina Lassila

Thanks for reading the document we prepared. Hope you find it useful
- If you would like to discuss more on creating dashboards check out our service page as below and leave us an inquiry and we would be happy to help.
https://peritossolutions.com/services/reporting-and-data-analytics/
- Contact us to know more: [email protected]
- Link to download the file for you to practice using the link below
https://peritossolutions.com/download_powerbi-rls_samples/
Video Links:
Part 1: Embed Power BI Dashboard
Part 2: Add Row Level Security
Reference:
https://docs.microsoft.com/en-us/power-bi/service-publish-to-web