Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Learn from the best! Meet the four finalists headed to the FINALS of the Power BI Dataviz World Championships! Register now

Reply
Syndicate_Admin
Administrator
Administrator

Seguridad a nivel de fila en dos personas con un solo informe

Hola a todos, sobre el SPI.
Tengo un informe y tiene dos personas: propietarios de sitios y propietarios de servicios.
Y creó 2 roless
Propietarios del sitio - Solicitud de RLS
Propietarios de servicios - sin filtros
Como tengo un solo informe y tiene la página principal con 2 botones: Visitar Propietario del Sitio Ver y Visitar Propietarios del Servicio Vista y Según la navegación de la página
Ahora, escenario 1. - Cuando los propietarios accedan al informe, el botón de propietarios del sitio debe ver y debe poder ver los sitios que poseen.
Escenario -2 - Cuando el propietario del servicio acceda, el informe debería ver ambos botones y cuando los clics en los propietarios del servicio deberían ver todos los sitios y los clics en los propietarios del sitio deberían ver solo los sitios propios.
Funcionando como se esperaba: los propietarios de sitios pueden ver solo un botón y también ver los sitios que poseen
Problema: cuando el propietario del servicio accede al informe y puede ver tanto los botones como los clics en el botón de propietarios del servicio, puede ver todos los sitios, PERO cuando hace clic en el botón de propietarios del sitio también ve todos los sitios en lugar de los que posee.
Por favor, ayúdame a lograr esto como se espera

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

@Alatha ,

También me tomaría un momento para agradecer a @Jaywant-Thorat , por participar activamente en el foro comunitario y por las soluciones que has estado compartiendo en el foro comunitario. Tus contribuciones marcan una verdadera diferencia.

Quería comprobar si tuviste la oportunidad de revisar la información proporcionada. No dudes en contactarnos si tienes más preguntas

Syndicate_Admin
Administrator
Administrator

Ya estás muy cerca, el problema que tienes es una limitación clásica de RLS + navegación + evaluación de roles en Power BI, no un error en tu lógica. Déjame explicarte por qué ocurre y luego te doy las arquitecturas correctas para lograr el comportamiento esperado.
Causa raíz (muy importante):
El RLS se evalúa solo una vez por sesión de usuario, no por página o clic de botón.
Así que en tu caso:
  • El Propietario del Servicio se asigna a un rol sin filtros
  • Una vez cargado el informe, Power BI decide:
    • "Este usuario tiene acceso sin restricciones"
  • La navegación de páginas no puede volver a aplicar RLS
  • Por lo tanto:
    • Página de Propietario del Servicio >> Propietario del Sitio >> sigue viendo TODOS los sitios
Esto es intencionado en Power BI. Botones, marcadores y navegación no pueden cambiar el contexto del RLS.
What You Want:
Persona Página Datos esperados
Propietario del sitio Cualquier página Solo sitios propiedad
Propietario del servicio Página del propietario del servicio Todos los sitios
Propietario del servicio Página del propietario del sitio Solo sitios propiedad
Esto implica restricción condicional de datos dentro del mismo rol. El RLS por sí solo no puede hacer esto.
Solución 1: Usar RLS dinámico + USERPRINCIPALNAME(), en lugar del rol "Sin filtro" para los Propietarios del Servicio.
Paso 1: Crea una tabla de mapeo de seguridad llamada 'UserAccess'
UserEmail SiteID AccesoType
a@org.com S1 Emplazamiento
a@org.com S2 Emplazamiento
a@org.com TODOS Servicio
b@org.com S3 Emplazamiento
Paso 2: Rol de Single RLS:
Aplica este filtro en la tabla UserAccess:
---DAX---
UsuarioAcceso[UsuarioEmail] = USERPRINCIPALNAME()
---DAX---
Ahora ambas personalidades se manejan de forma dinámica.
Paso 3: Control de datos por página (PARTE CLAVE)
Crear una tabla de tipos de página (Desconectado):
PageType
Emplazamiento
Servicio
Paso 4: Mide para controlar la visibilidad
---DAX---
CanSeeSite =
VAR IsServiceOwner =
CALCULATE(
COUNTROWS(UsuarioAcceso),
UsuarioAcceso[TipoAcceso] = "Servicio"
) > 0
VAR PageTypeSelected =
SELECTEDVALUE(PageType[PageType])
REGRESO
SWITCH(
TRUE(),
PageTypeSelected = "Servicio", 1,
PageTypeSelected = "Site" & IsServiceOwner, 1,
PageTypeSelected = "Site" & NOT IsServiceOwner, 1,
0
)
---DAX---
Paso 5: Filtra tus imágenes
Aplicar filtro a nivel visual:
CanSeeSite = 1
Resultado:
Página del Propietario >> del Servicio >> Todos los sitios
Página del propietario del servicio >> sitio >> Solo sitios propiedad
Página solo de propietario >> sitio >> Solo sitios propiedad
=================================================================
¿He respondido a tu pregunta? ¡Marca mi publicación como solución! ¡Esto ayudará a otros en el foro!
¡Gracias por tus kudos!
Jaywant Thorat | MCT | Entrenador de Análisis de Datos
Únete a #MissionPowerBIBharat: https://tinyurl.com/JoinMissionPowerBIBharat
#MissionPowerBIBharat
EN DIRECTO con Jaywant Thorat
Syndicate_Admin
Administrator
Administrator

Hola,
Creo que puedes solucionarlo usando solo un rol RLS y poniendo la lógica dentro de la regla, creando una tabla de mapeo con el correo de usuario, persona e ID del sitio.

Usa esta regla de RLS:

IF ( LOOKUPVALUE( UsuarioAcceso[Persona], UsuarioAcceso[UsuarioEmail], USERPRINCIPALNAME() ) = "ServiceOwner", TRUE(), Sites[SiteID] IN CALCULATETABLE( VALUES(UserAccess[SiteID]), UserAccess[UserEmail] = USERPRINCIPALNAME() ) )

Usa el valor Persona para controlar qué botones son visibles en la página principal para que los propietarios del servicio lo vean todo, y cuando cambien a la vista de propietario del sitio solo verán sus propios sitios.

Un saludo,
Daniele

Gracias, Daniele, por tu respuesta.
Solicité el puesto de RLS como sugeriste
"" IF ( LOOKUPVALUE( UserTable[Persona], UserTable[Owners], USERPRINCIPALNAME() ) = "ServiceOwner", TRUE(), UserTable[SiteID] IN CALCULATETABLE( VALUES(SiteData[SiteID]), UserTable[Owners] = USERPRINCIPALNAME() ) ) ""

El resultado muestra que RLS filtró los datos tanto en la vista de los propietarios de sitios como en los de los de servicios, PERO se espera que la vista de los propietarios de servidores pueda ver todos los sitios.
Modelo actual -
SiteDatatable - contiene todos los sitios
Usertable - SiteID, Owners, Persona (Persona es columna calculada
SI(
UserTable[Owners] = "abcuser@del.com",
"SiteOwner",
"ServiceOwner"
)
conectó Usertable a sitedatetable en SiteID con filtros de dirección y aplicación de seguridad
ex - UserTable

SiteIDPropietariosPersona
1abcuserServiceOwner
2abcuserServiceOwner
3abcuserServiceOwner
4xyzuserSiteOwner
5xyzuserSiteOwner
6xyzuserSiteOwner

Por favor, decidme si me estoy perdiendo algo

Helpful resources

Announcements
Join our Fabric User Panel

Join our Fabric User Panel

Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.

February Power BI Update Carousel

Power BI Monthly Update - February 2026

Check out the February 2026 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.