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

The Power BI Data Visualization World Championships is back! It's time to submit your entry. Live now!

Reply
Syndicate_Admin
Administrator
Administrator

Cómo implementar la seguridad a nivel de objeto que también se aplicará en la personalización visual

Hola a todos

Tengo un requisito para implementar la seguridad a nivel de página y la seguridad a nivel de objeto y también habilitar la función "personalizar este elemento visual". Implementé seguridad a nivel de página + personalizar esta función usando perspectivas en TMDL, es decir, si un usuario inicia sesión, ve la página a la que tiene acceso y cuando hace clic en "personalizar esta imagen", solo verá la tabla relevante para esa página. Esto funciona bien.

Ahora mi requisito es implementar seguridad a nivel de obj, por ejemplo, necesitamos ocultar un objeto basado en el inicio de sesión del usuario, y el mismo objeto también debe ocultarse de la tabla cuando el usuario hace clic en "personificar esta imagen".

¿Alguien puede sugerir cómo se puede lograr esto?

Gracias.

7 REPLIES 7
Syndicate_Admin
Administrator
Administrator

@POSPOS ,

También me tomaría un momento para agradecer a @zanqueta001 , por participar activamente en el foro de la comunidad y por las soluciones que ha estado compartiendo en el foro de la comunidad. Sus contribuciones marcan una diferencia real.

Quería comprobar si tuvo la oportunidad de revisar la información proporcionada. No dude en contactarnos si tiene más preguntas

Syndicate_Admin
Administrator
Administrator

Hola @POSPOS,

Dado que el Editor tabular no es una opción, la mejor ruta es continuar usando TMDL (Tabular Model Definition Language), que le permite definir:

Perspectivas = controla lo que aparece en la interfaz de usuario (incluido "Personalizar este objeto visual").
Roles DAX = controlar el acceso a los objetos (seguridad de nivel de objeto - OLS).

Pasos para implementar la seguridad a nivel de objeto con TMDL

  1. reate roles usando DAX en tu archivo TMDL:
    {
      "name": "SalesManager",
      "expression": "USERPRINCIPALNAME() = \"sales.manager@company.com\""
    }
  2. Definir la visibilidad de los objetos (columnas, medidas) por rol: en TMDL, puede usar la propiedad isHidden dentro de la definición de tabla o medida, combinada con objectLevelSecurity.
    Ejemplo:
{
  "name": "Revenue",
  "isHidden": true,
  "objectLevelSecurity": {
    "SalesManager": "None"
  }
}

Esto oculta la medida de ingresos para los usuarios que no tienen el rol de SalesManager.


Actualizar perspectivas
: asegúrese de que la perspectiva utilizada para cada página excluye los objetos que deben ocultarse para determinados usuarios.

Notas importantes

  • OLS no impide la carga de datos, solo oculta objetos del modelo.
  • La combinación de perspectivas + OLS garantiza que el usuario:
    • Solo ve los objetos permitidos en la interfaz de usuario.
    • No se puede acceder a objetos ocultos a través de DAX o "Personalizar este objeto visual".

Referencias oficiales

Si esta respuesta resolvió su problema, márquela como correcta para ayudar a otros miembros de la comunidad.

@zanqueta001 - Gracias por su respuesta.

Intenté implementar la seguridad a nivel de objeto usando TMDL.

1) Por ejemplo: apliqué la seguridad en el campo "Salario". por lo que cualquiera que esté asignado al RLS, no debería ver el salario. Con este enfoque, todas las imágenes que tiene el campo salarial se están rompiendo. La expectativa es que deberían ver otro campo y solo el campo Salario debería estar oculto.

2) Asegúrese de que la perspectiva utilizada para cada página excluya los objetos que deberían estar ocultos para ciertos usuarios. -- ¿Puede decirme cómo se puede hacer esto?

Tengo una página y se me asignarán dos grupos de usuarios a esta página. Primer grupo que debería ver el salario y segundo grupo que no debería ver el salario. ¿Cómo podemos controlar esto dinámicamente?

Hola @POSPOS, gracias por tus comentarios.

Desafortunadamente, OLS hace esto con objetos. Siempre pienso en ello en el contexto del consumo de datos a través de un conjunto de datos, conectando un archivo de Excel, por ejemplo. En un solo archivo pbix, lo que sugeriría en su caso es:

1) Oculte la columna o toda la tabla salarial a todos los usuarios.

2) Tener una métrica en DAX que calcule el salario pero dentro de ella una variable que permita a un determinado grupo ver o no ver el valor.

.UserPermissionSalary = 
var us = USERPRINCIPALNAME()
return
LOOKUPVALUE(dim_PermissionSalary[mail],dim_PermissionSalary[mail],us,BLANK())

TheSalary = 
var salary = SUM(Salary[Salary])
var alowed = [.UserPermissionSalary]
RETURN
IF(ISBLANK([.UserPermissionSalary]),BLANK(),salary)

Hice un archivo de muestra. Espero que ayude.

Si funciona, por favor dame un KUDO y marca la solución como la respuesta para ayudar a otros usuarios.

User04.png

User01.png

zanqueta001_0-1762531080960.png


Archivo PBIX: https://drive.google.com/file/d/1Xbnce-WL2qg1O4SQZHU6xGI0tkOizyfU/view?usp=sharing

@zanqueta001 - Gracias por los pasos detallados.

A continuación se muestran los RLS que he creado. Ahora, cada uno de los RLS tiene un control de seguridad diferente. Y muchos grupos de usuarios están asignados a cada uno de estos roles. Fuera de la lista, mi requisito es ocultar la información salarial a los usuarios que están asignados a RLS_FM (de la captura de pantalla a continuación).

RLS_FM tiene acceso a la página 1 y RLS_GM también tiene acceso a la página 1 del tablero. Aquí, quiero que los usuarios asignados a RLS_FM tengan acceso a Salario y RLS_GM no deberían ver salario.

Además, RLS_FM debería ver el salario de "personalizar esta imagen" y RLS_GM no debería verlo.

¿Puede sugerir cómo funcionará esto con la medida?

Además, en el futuro es posible que también tengamos la necesidad de ocultar las dimensiones, por ejemplo: Fecha de nacimiento, ¿se puede lograr esto también con medida? Por favor, sugiera.

POSPOS_0-1762534782577.png

Gracias.

@POSPOS,

Creo que estamos mezclando conceptos aquí. SPI con OLS. PowerBI no controla actualmente el acceso por páginas. Una opción es pensar en una métrica que haga que la navegación se base en el control del usuario. Pero, de nuevo, esto no garantiza la restricción, es solo una forma de guiar la navegación del usuario.
Para controlar quién debe o no debe ver los salarios, simplemente ingrese aquellos que pueden ver la métrica en una tabla auxiliar, como envié en el archivo de plantilla. Esta fue la mejor solución que encontré.
Si su control es demasiado complejo para ir más allá de restringir los salarios, le sugiero que siga @lbendlin sugerencia y separe los modelos semánticos para diferentes audiencias.

Syndicate_Admin
Administrator
Administrator

La seguridad a nivel de página no existe.

La mejor alternativa a OLS es usar modelos semánticos separados para diferentes audiencias.

Helpful resources

Announcements
Power BI DataViz World Championships

Power BI Dataviz World Championships

The Power BI Data Visualization World Championships is back! It's time to submit your entry.

January Power BI Update Carousel

Power BI Monthly Update - January 2026

Check out the January 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.