Implementación de la seguridad de nivel de fila en los informes paginados insertados
SE APLICA A: La aplicación es la propietaria de los datos El usuario es el propietario de los datos
En este artículo se explica cómo insertar un informe paginado que usa RLS (seguridad de nivel de fila) en la aplicación propietaria de la aplicación de datos.
Nota
Este artículo solo es relevante para los clientes de datos de la aplicación.
Para usar RLS para los informes paginados:
- Configuración del entorno para filtrar el informe
- Filtrar los datos en el nivel de informe o consulta
- Pasar el parámetro configurado utilizando un token de inserción
Prerrequisitos
En este artículo se supone que sabe cómo insertar un informe paginado de Power BI. Explica cómo generar el token de inserción para que el informe solo muestre lo que el usuario tiene permiso de acceso.
Los informes paginados se crean mediante el motor de SQL Server Reporting Services y no el motor de Power BI (Analysis Services), por lo que el filtrado de RLS se configura en Power BI Report Builder.
Configuración del entorno
Para aplicar la seguridad de nivel de fila a un informe paginado de Power BI, use el campo integrado UserID para asignar un parámetro. Este parámetro se usa para filtrar o consultar los datos.
A continuación, pase el UserID a la API Token de inserción - Generación de token para obtener el token de inserción.
Uso de UserID como filtro en el nivel de informe o consulta
Puede utilizar UserId como filtro o en una consulta al origen de datos.
Filtrar los datos
En la ventana Propiedades del modelo semántico, en el panel izquierdo, seleccione Filtro.
En el menú desplegable Expresión, seleccione el parámetro que desea usar para filtrar los datos.
Seleccione el botón de la función Valor.
En la ventana Expresión, en la lista Categoría, seleccione Campos integrados.
En la lista Elemento, seleccione UserID y después Aceptar.
En la ventana Propiedades del modelo semántico, compruebe que la expresión sea el parámetro seleccionado = UserID y seleccione Aceptar.
Uso de una consulta
En la ventana Propiedades del modelo semántico, en el panel de navegación izquierdo, seleccione Parámetros y después Agregar.
En el campo Nombre del parámetro, escriba @UserID, y en el Valor del parámetro añada [&UserID].
En el panel izquierdo, seleccione Consulta, en la Consulta agregue el parámetro UserID como parte de la consulta y seleccione Aceptar.
Nota:
En la siguiente captura de pantalla, el parámetro de color se usa como ejemplo (WHERE FinalTable.Color = @UserID)). Si es necesario, puede crear una consulta más compleja.
Generación de un token de inserción
Cuando inserte un informe paginado para sus clientes, utilice la API Reports GenerateTokenInGroup para obtener el token de inserción. Este token también puede utilizarse para filtrar algunos datos del informe paginado.
Solo puede generar un token mediante una entidad de servicio. No se puede generar un token como usuario maestro. La entidad de servicio debe tener al menos permisos de miembro en el área de trabajo del servicio Power BI. (Si la entidad de servicio es colaborador o visor, no podrá generar un token).
Para generar un token, asigne el username
campo con la información que desea mostrar. Por ejemplo, en un informe paginado que tiene un parámetro de color, si se introduce verde en el campo username
, el token de inserción restringe los datos insertados a solo los datos que tengan verde como valor en la columna de color.
{
"reports": [
{
"id": "8d57615e-cfed-4d60-bd21-7dc05727193c"
}
],
"identities": [
{
"username": "green",
"reports": [
"8d57615e-cfed-4d60-bd21-7dc05727193c"
]
}
]
}
Nota:
Si genera un token de inserción sin especificar un identificador de usuario, se usará el identificador de objeto de la entidad de servicio.
Consideraciones y limitaciones
- El usuario maestro no se admite con los informes paginados para la inserción de los clientes. El usuario maestro se admite para la inserción para su organización.
- La entidad de servicio debe tener permisos de área de trabajo de miembro al menos o (no visor ni colaborador).