Seguridad de nivel de fila (RLS) con Power BI
La seguridad de nivel de fila (RLS) con Power BI puede usarse para restringir el acceso a los datos a determinados usuarios. Los filtros restringen el acceso a los datos en el nivel de fila y se pueden definir en roles. En el servicio Power BI, los miembros de un área de trabajo tienen acceso a conjuntos de datos del área de trabajo. RLS no restringe este acceso a datos.
Puede configurar RLS para los modelos de datos que se han importado en Power BI con Power BI Desktop. También puede configurar RLS en conjuntos de datos que utilizan DirectQuery, como SQL Server. En el caso de las conexiones dinámicas de Analysis Services o Azure Analysis Services, puede configurar la seguridad de nivel de fila en el modelo, no en Power BI Desktop. La opción de seguridad no se mostrará para conjuntos de datos de conexión dinámica.
Definir roles y reglas en Power BI Desktop
Puede definir roles y reglas en Power BI Desktop. Al publicar en Power BI, publica también definiciones de roles.
Para definir los roles de seguridad, siga estos pasos.
Importar datos en el informe de Power BI Desktop o configurar una conexión de DirectQuery.
Nota
No puede definir roles en Power BI Desktop para conexiones dinámicas de Analysis Services. Debe hacerlo en el modelo de Analysis Services.
En la pestaña Modelado, seleccione Administrar roles.

En la ventana Administrar roles, seleccione Crear.

En Roles, proporcione un nombre para el rol.
Nota
No se puede definir un rol con una coma, por ejemplo
London,ParisRole.En Tablas, seleccione la tabla a la que quiere aplicar una regla DAX.
En el cuadro Expresión DAX de filtro de tabla, escriba las expresiones DAX. Esta expresión devuelve un valor de true o false. Por ejemplo:
[Entity ID] = “Value”.
Nota
Puede usar username() en esta expresión. Tenga en cuenta que username() tiene el formato DOMINIO\usuario en Power BI Desktop. En el servicio Power BI y en Power BI Report Server, está en el formato del nombre principal de usuario (UPN). Como alternativa, puede usar userprincipalname(), que siempre devuelve el usuario en el formato de su nombre principal de usuario, username@contoso.com.
Después de haber creado la expresión DAX, seleccione la marca de verificación situada encima del cuadro de expresión para validar la expresión.

Nota
En este cuadro de expresión, utilice comas para separar los argumentos de la función DAX, incluso si usa una configuración regional que normalmente usa separadores de punto y coma (por ejemplo, francés o alemán).
Seleccione Guardar.
No puede asignar usuarios a un rol en Power BI Desktop. Los asigna en el servicio Power BI. Para habilitar la seguridad dinámica en Power BI Desktop, puede usar las funciones DAX username() y userprincipalname() . Las relaciones deben estar configuradas correctamente.
De forma predeterminada, el filtrado de la seguridad de nivel de fila utiliza filtros unidireccionales, independientemente de si las relaciones se establecen de forma unidireccional o bidireccional. Para habilitar manualmente un filtro cruzado bidireccional con seguridad de nivel de fila, seleccione la relación y marque la casilla de verificación Aplicar filtro de seguridad en ambas direcciones. Active esta opción al implementar también la seguridad de nivel de fila dinámica en el nivel del servidor, donde la seguridad de nivel de fila se basa en el nombre de usuario o el identificador de inicio de sesión.
Para más información, consulte los artículos técnicos Filtrado cruzado bidireccional con DirectQuery en Power BI Desktop y Protección del modelo semántico tabular de BI.

Validar los roles en Power BI Desktop
Después de haber creado los roles, pruebe sus resultados en Power BI Desktop.
En la pestaña Modelado, seleccione Ver como.

Se abre la ventana Ver como roles, en la que se muestran los roles que ha creado.

Seleccione un rol que haya creado y después Aceptar para aplicarlo.
Los informes representan los datos pertinentes para ese rol.
También puede seleccionar Otro usuario y proporcionar un usuario determinado.

Es mejor proporcionar el nombre principal de usuario (UPN), ya que es el que usarán el servicio Power BI y Power BI Report Server.
En Power BI Desktop, Otro usuario solo muestra otros resultados si usa la seguridad dinámica basada en las expresiones DAX.
Seleccione Aceptar.
El informe se representará en función de lo que pueda ver ese usuario.
Nota
La característica Ver como roles no funciona para los modelos de DirectQuery con inicio de sesión único (SSO) habilitado.
Ahora que ha terminado de validar los roles en Power BI Desktop, continúe y publique el informe en el servicio Power BI.
Administración de la seguridad en el modelo
Para administrar la seguridad en el modelo de datos, abra el área de trabajo donde guardó el informe en el servicio Power BI y siga estos pasos:
En el servicio Power BI, seleccione el menú Más opciones para un conjunto de datos. Este menú aparece cuando se mantiene el puntero sobre el nombre de un conjunto de los mismos, tanto si se selecciona desde el menú de navegación como desde la página del área de trabajo.


Seleccione Seguridad.

Esto le llevará a la página Seguridad en el nivel de rol para agregar miembros a un rol creado en Power BI Desktop. Colaborador (y roles de área de trabajo superiores) verá Seguridad y puede asignar usuarios a un rol.
Solo puede crear o modificar roles dentro de Power BI Desktop.
Miembros
Agregar miembros
En el servicio Power BI, puede agregar un miembro al rol escribiendo la dirección de correo electrónico o el nombre del usuario o el grupo de seguridad. No se pueden agregar grupos creados en Power BI. Puede agregar miembros externos a la organización.
Puede usar los siguientes grupos para configurar la seguridad de nivel de fila.
- Grupo de distribución
- Grupo habilitado para correo electrónico
- Security Group
Sin embargo, tenga en cuenta que los grupos de Office 365 no se admiten y no se pueden agregar a ningún rol.

También puede ver cuántos miembros forman parte del rol por el número entre paréntesis junto al nombre del rol o junto a Miembros.

Quitar miembros
Puede quitar miembros seleccionando la X junto a su nombre.

Validación del rol en el servicio Power BI
Puede validar que el rol definido funciona correctamente en el servicio Power BI probándolo.
- Seleccione Más opciones (...) junto al rol.
- Seleccione Probar datos como rol.

Verá los informes que están disponibles para este rol. Los paneles no se muestran en esta vista. En el encabezado de la página, se muestra el rol que se está aplicando.

Pruebe otros roles, o una combinación de roles, seleccionando Ahora se muestra como.

Puede optar por ver los datos como una persona específica o puede seleccionar una combinación de roles disponibles para validar que funcionan.
Para volver a la vista normal, seleccione Volver a seguridad de nivel de fila.
Nota
La característica Probar como rol no funciona para los modelos de DirectQuery con inicio de sesión único (SSO) habilitado.
Uso de la función DAX username() o userprincipalname()
Puede aprovechar las ventajas de las funciones DAX username() o userprincipalname() dentro del conjunto de datos. Puede usarlas dentro de expresiones en Power BI Desktop. Cuando publique el modelo, se utilizará dentro del servicio Power BI.
En Power BI Desktop, username() devolverá un usuario con el formato de DOMINIO\Usuario y userprincipalname() lo devolverá con el formato de user@contoso.com.
En el servicio Power BI, username() y userprincipalname() devolverán ambos el nombre principal de usuario (UPN) del usuario. Es similar a una dirección de correo electrónico.
Uso de RLS con áreas de trabajo en Power BI
Si publica un informe de Power BI Desktop en una nueva experiencia de área de trabajo dentro del servicio Power BI, los roles de RLS se aplican a los miembros a los que se les asigna el rol Visor en el área de trabajo. Aunque los visores tengan permisos de compilación para el conjunto de datos, se sigue aplicando RLS. Por ejemplo, si los visores con permisos de compilación usan la función Analizar en Excel, la vista de los datos se protegerá mediante RLS. Los miembros del área de trabajo con los roles de administrador, miembro o colaborador tendrán permiso de edición para el conjunto de datos y, por lo tanto, no se les aplica RLS. Si desea que RLS se aplique a las personas de un área de trabajo, solo puede asignarles el rol Visor. Obtenga más información sobre los roles en las áreas de trabajo nuevas.
Advertencia
Si ha configurado un área de trabajo clásica para que los miembros tengan permisos de edición, los roles de RLS no se aplicarán a ellos. Los usuarios pueden ver todos los datos. Obtenga más información sobre las áreas de trabajo clásicas.

Consideraciones y limitaciones
Las limitaciones actuales para la seguridad de nivel de fila en los modelos en la nube son las siguientes:
- Si anteriormente definió roles y reglas en el servicio Power BI, debe volver a crearlos en Power BI Desktop.
- Solo puede definir RLS en los conjuntos de datos creados con Power BI Desktop. Si quiere habilitar RLS para conjuntos de datos creados con Excel, debe convertir primero los archivos en archivos de Power BI Desktop (PBIX). Más información.
- Las entidades de servicio no se pueden agregar a un rol RLS. Por tanto, RLS no se aplicará a las aplicaciones que usan una entidad de servicio como identidad efectiva final.
- Solo se admiten conexiones de importación y de DirectQuery. Las conexiones dinámicas con Analysis Services se controlan en el modelo local.
- La característica Probar como rol/Ver como roles no funciona para los modelos de DirectQuery con inicio de sesión único (SSO) habilitado.
Problema: volver a publicar cuando se configura RLS
Hay un problema conocido en el que se produce un mensaje de error al intentar publicar un informe publicado anteriormente desde Power BI Desktop. El escenario es el siguiente:
Ana tiene un conjunto de datos publicado en el servicio Power BI y ha configurado RLS.
Ana actualiza el informe en Power BI Desktop y vuelve a publicarlo.
Ana recibe un error.
Solución alternativa
vuelva a publicar el archivo de Power BI Desktop desde el servicio Power BI hasta que se solucione este problema. Para ello, seleccione Obtener datos>Archivos.
Problema: varios roles y relaciones limitadas
Recibirá un mensaje de error si pertenece a varios roles de RLS y al menos uno de los roles se basa en una relación limitada.
Considere los siguientes modelos de datos:

En este modelo de datos simplificado, que combina datos de dos conjuntos de datos de Power BI, existen dos relaciones:
- Una relación normal entre Ventas y Producto.
- Una relación limitada entre Ventas y Cliente. Esta relación está limitada porque el cliente está en un grupo de origen diferente. Esa no es la única razón por la que una relación puede estar limitada. Para más información, consulte las relaciones limitadas.
Además, se han definido dos roles de RLS en este modelo de datos:
- RLS_Product, que se define en Producto y restringe el acceso a la información del producto.
- RLS_Customer, que se define en Cliente y restringe el acceso a la información del cliente.
El usuario A pertenece a RLS_Product y RLS_Customer. Cuando el usuario A tiene acceso a los datos del informe, RLS_Product y RLS_Customer se evalúan. Para evaluar RLS_Customer, los datos deben compartirse a través de la relación limitada entre Ventas y Cliente. Este uso compartido podría revelar involuntariamente información sobre los productos. Por lo tanto, Power BI no permite que se haga este uso compartido y, en su lugar, genera el siguiente error:
"El usuario pertenece a múltiples roles 'RLS_Product, RLS_Customer' que tienen filtros de seguridad, lo cual no se admite cuando uno de los roles contiene filtros que afectan a la tabla 'Sales' con relaciones del tipo SecurityFilteringBehavior=Both relationships".
Solución alternativa
Use una de las siguientes soluciones alternativas para evitar este error:
- Si es factible, no coloque ningún usuario en varios roles de RLS. En el escenario anterior, podemos crear otro rol de RLS, por ejemplo, RLS_Product_Customer, que combina los filtros RLS establecidos tanto en RLS_Product como en RLS_Customer. Después, podemos asignar el usuario A solamente a RLS_Product_Customer y quitarlo de RLS_Product y RLS_Customer.
- Defina roles de RLS solo en un grupo de origen. Si es necesario que un usuario pertenezca a varios roles de RLS, asegúrese de que todos los filtros RLS establecidos en los roles se definen en tablas de un único grupo de origen. En el escenario anterior, si se pudiera definir RLS_Customer en el grupo de origen que contiene Ventas y Producto, podríamos evitar el error.
Nota:
Somos conscientes de que, en muchas situaciones, Power BI es demasiado restrictiva y la información se puede compartir de forma segura entre los orígenes implicados. Mientras trabajamos en la publicación de una solución para esta situación, considere la posibilidad de adoptar una de las soluciones alternativas anteriores.
Preguntas más frecuentes
Pregunta: ¿Qué ocurre si tengo roles y reglas creados previamente para un conjunto de datos en el servicio Power BI? ¿Seguirán funcionando si no hago nada?
Respuesta: No, los objetos visuales no se representarán correctamente. Tendrá que volver a crear los roles y las reglas en Power BI Desktop y, después, publicarlos en el servicio Power BI.
Pregunta: ¿Puedo crear estos roles para orígenes de datos de Analysis Services?
Respuesta: Puede si importa los datos en Power BI Desktop. Si usa una conexión dinámica, no podrá configurar RLS en el servicio Power BI. Esto se define en el modelo local de Analysis Services.
Pregunta: ¿Puedo usar RLS para limitar las columnas o medidas accesibles por mis usuarios?
Respuesta: No, si un usuario tiene acceso a una fila de datos determinada, puede ver todas las columnas de datos de esa fila.
Pregunta: ¿Permite RLS ocultar datos detallados pero dar acceso a datos resumidos en objetos visuales?
Respuesta: No, aunque proteja las filas de datos individuales, los usuarios siempre pueden ver los detalles o los datos resumidos.
Pregunta: Mi origen de datos ya tiene definidos roles de seguridad (por ejemplo, roles de SQL Server o de SAP BW). ¿Cuál es la relación entre estos y RLS?
Respuesta: La respuesta depende de si se importan datos o se usa DirectQuery. Si se van a importar datos en el conjunto de datos de Power BI, no se usarán los roles de seguridad del origen de datos. En este caso, se debe definir RLS para aplicar las reglas de seguridad para los usuarios que se conectan en Power BI. Si usa DirectQuery, se usan los roles de seguridad en el origen de datos. Cuando un usuario abre un informe, Power BI envía una consulta al origen de datos subyacente, que aplica las reglas de seguridad a los datos basándose en las credenciales del usuario.