Oculta tablas y columnas sensibles a usuarios sin permisos. La capa que complementa a RLS cuando filtrar filas no basta.
Avanzado
💭
¿Qué es OLS?
"Esa columna no existe para ti"
Object-Level Security permite ocultar tablas completas o columnas concretas a determinados roles de seguridad. No se trata de hacerlas invisibles en la UI — se trata de hacerlas literalmente inexistentes para el motor cuando ese usuario consulta el modelo.
Cualquier visual, medida o consulta DAX que referencie un objeto restringido devolverá un error de "objeto no encontrado" para quien no tenga permiso. Es la forma más fuerte de proteger metadatos sensibles.
⚖️
OLS vs RLS
Dos capas que se complementan
RLS (filas)
Filtra qué filas ve cada usuario
La columna sigue existiendo
Se configura desde Power BI Desktop
Filtros DAX expresivos
OLS (objetos)
Oculta tablas o columnas enteras
El objeto no aparece ni en metadatos
Requiere herramientas externas (Tabular Editor)
Permiso "None" o "Read" por objeto
¿Cuándo combinarlos? Por ejemplo, en una tabla Empleados: RLS filtra los empleados visibles según el área del usuario, y OLS oculta la columna Salario a todo el mundo excepto al rol "RRHH".
🛠️
Configurar OLS paso a paso
Necesitas Tabular Editor (gratuito)
OLS no se configura desde Power BI Desktop. Hay que usar Tabular Editor 2 (gratuito y open source) o Tabular Editor 3.
Pasos:
Crea los roles desde Desktop como harías con RLS (aunque no añadas filtros)
Abre el archivo PBIX con Tabular Editor
Despliega Roles → selecciona un rol → propiedad Table Permissions
💡 Tip kawaii: Si quieres aplicar OLS a muchos modelos, escribe un script C# en Tabular Editor que lo automatice. Es muy potente para gobernar a escala. 🌸
🎬
Casos de uso reales
Cuándo OLS es la respuesta correcta
Datos sensibles de RRHH: salarios, valoraciones, datos médicos visibles solo para People Ops
Información financiera restringida: márgenes, costes unitarios, comisiones — visibles solo para Finanzas
Tablas de seguridad o auditoría: el propio mapeo de usuarios a permisos no debe ser visible para nadie
Información regulatoria: PII, datos de salud, datos financieros bajo SOX/GDPR/HIPAA
Datasets compartidos entre departamentos: un único modelo que cada área consume con su propia visión "recortada"
🚧
Limitaciones que duelen
Lo que tienes que tener en cuenta antes de comprometerte
Las medidas que referencian objetos ocultos también fallan. Si una medida usa una columna protegida, esa medida no funcionará para los roles que no pueden ver la columna.
Visuals existentes pueden romperse. Cuando un usuario sin permiso abre un informe que utiliza un objeto OLS, el visual mostrará un error en vez de los datos. Hay que diseñar informes "OLS-aware".
No funciona con Live Connection a datasets compartidos publicados sin OLS. Necesitas configurar OLS en el modelo origen.
Requiere herramientas externas: sin Tabular Editor o equivalente no puedes activarlo.
No protege exportaciones de datos previas: si la información ya ha salido a un Excel, ya está fuera.
⚠️ Ojo: OLS es potente pero rompe la experiencia si no se diseña bien. La regla práctica: si necesitas que un usuario "vea menos columnas" pero quieres que el informe siga funcionando, probablemente lo que quieres es una medida que devuelva BLANK() según el rol, no OLS. Reserva OLS para cuando realmente el metadato deba ser invisible.
🚀 Siguiente paso: Para proteger los datos también cuando salen del Service (exports, descargas), pasa a Sensitivity Labels y DLP.