Power BI10 min lectura

Row-Level Security en Power BI: Guía completa

Implementa seguridad a nivel de fila para que cada usuario vea solo sus datos.

BI Analysts Team

Expertos en Datos e IA

¿Qué es Row-Level Security (RLS)?

RLS es una característica de Power BI que permite restringir el acceso a datos a nivel de fila según el usuario que visualiza el reporte. Cada usuario ve solo los datos que le corresponden.

¿Cuándo usar RLS?

  • Vendedores que deben ver solo sus ventas
  • Gerentes que ven su región
  • Clientes en un portal con sus propios datos
  • Cualquier escenario multi-tenant

Tipos de RLS

Estático

Roles definidos manualmente con filtros fijos:

  • Rol 'Región Norte' → Filtro: Región = 'Norte'
  • Rol 'Región Sur' → Filtro: Región = 'Sur'

Dinámico

Filtros basados en el usuario conectado:

  • Rol único que filtra según USERNAME() o USERPRINCIPALNAME()

Implementación paso a paso

Paso 1: Diseñar el modelo

Necesitas una tabla que relacione usuarios con sus permisos:

Tabla: Seguridad_Usuario
| Email | Region | Rol |
|-------|--------|-----|
| juan@empresa.com | Norte | Vendedor |
| maria@empresa.com | Sur | Vendedor |
| carlos@empresa.com | * | Gerente |

Paso 2: Crear el rol en Power BI Desktop

  1. Modelado → Administrar roles
  2. Crear nuevo rol: 'Acceso por Region'
  3. Agregar filtro DAX a la tabla de hechos:
[Region] = LOOKUPVALUE(
    Seguridad_Usuario[Region],
    Seguridad_Usuario[Email],
    USERPRINCIPALNAME()
) || LOOKUPVALUE(
    Seguridad_Usuario[Region],
    Seguridad_Usuario[Email],
    USERPRINCIPALNAME()
) = '*'

Paso 3: Probar el rol

  1. Modelado → Ver como
  2. Selecciona el rol
  3. Ingresa el email del usuario a simular
  4. Verifica que los datos se filtran correctamente

Paso 4: Publicar y asignar

  1. Publica el reporte a Power BI Service
  2. Dataset → Seguridad
  3. Agrega miembros (usuarios o grupos) a cada rol

Patrones avanzados

RLS jerárquico

Un gerente ve sus datos más los de su equipo:

VAR UsuarioActual = USERPRINCIPALNAME()
VAR EmpleadosDelGerente = 
    CALCULATETABLE(
        VALUES(Empleados[Email]),
        PATHCONTAINS(Empleados[JerarquiaPath], UsuarioActual)
    )
RETURN
[VendedorEmail] IN EmpleadosDelGerente

Múltiples dimensiones

Filtrar por región Y producto:

-- En tabla Ventas (filtro compuesto)
VAR UsuarioActual = USERPRINCIPALNAME()
VAR RegionesPermitidas = 
    CALCULATETABLE(
        VALUES(Permisos[Region]),
        Permisos[Email] = UsuarioActual
    )
VAR ProductosPermitidos = 
    CALCULATETABLE(
        VALUES(Permisos[Producto]),
        Permisos[Email] = UsuarioActual
    )
RETURN
[Region] IN RegionesPermitidas && [Producto] IN ProductosPermitidos

Mejores prácticas

1. Usa grupos de Azure AD

En lugar de asignar usuarios individuales, usa grupos:

  • Más fácil de mantener
  • Sincronizado con RRHH
  • Auditable

2. Tabla de seguridad centralizada

Mantén una sola tabla con todos los permisos:

  • Más fácil de auditar
  • Un solo lugar para actualizar
  • Puede venir de un sistema externo

3. Prueba exhaustivamente

  • Prueba cada rol
  • Prueba combinaciones de filtros
  • Prueba con usuarios reales

4. Documenta los roles

Mantén documentación de:

  • Qué hace cada rol
  • Quién tiene acceso
  • Reglas de negocio aplicadas

Limitaciones

  1. RLS no aplica en Desktop: Solo funciona en Service
  2. Export a Excel: Los datos exportados mantienen el filtro
  3. DirectQuery: RLS funciona pero puede afectar rendimiento
  4. Admin: Los admins del workspace ven todos los datos

Debugging

Si RLS no funciona como esperas:

  1. Verifica que el filtro DAX es correcto
  2. Confirma que USERPRINCIPALNAME() retorna el email esperado
  3. Revisa que las relaciones entre tablas son correctas
  4. Usa 'Ver como' para simular diferentes usuarios

Conclusión

RLS es fundamental para reportes empresariales donde diferentes usuarios necesitan ver diferentes datos. Implementándolo correctamente, puedes tener un solo reporte que sirva a toda la organización.

¿Necesitas ayuda implementando RLS? Contáctanos para una revisión de seguridad de tus reportes.

#RLS#Seguridad#Permisos

¿Te resultó útil este artículo?

Si necesitas ayuda implementando estas soluciones en tu empresa, estamos aquí para ayudarte.

Agenda una consulta gratuita