cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Syndicate_Admin
Administrator
Administrator

Seguridad de nivel de fila: el valor de columna comienza con el valor del usuario que ha iniciado sesión

Hola

Estoy intentando configurar la seguridad de nivel de fila en una tabla que contiene una lista única de todos los empleados. Columnas disponibles:

  • Dirección de correo electrónico del empleado
  • RBS (estructura de descomposición de recursos): muestra la posición del empleado en la organización en un formato como este: "Division.Unit.Department.Team.etc..." (puede tener tantos niveles como sea necesario)

El objetivo es que el usuario que ha iniciado sesión (administrador de línea) solo debería ver los datos de los empleados en el mismo nivel de RBS que él, o en los niveles inferiores.

Por ejemplo, el jefe de unidad con RBS "Division.Unit" debe ver a todos los empleados con RBS

  • Division.Unit
  • Division.Unit.Department1
  • Division.Unit.Department2
  • Division.Unit.Department1.Team1 etc.

No deberían ver emplyees con RBS

  • División
  • Division.Diferente Unidad
  • Division.Different Unit.Department, etc.

En la fórmula DAX, necesito llamar a USERPRINCIPALNAME() para obtener la dirección de correo electrónico del usuario que ha iniciado sesión, pero ¿cómo compruebo qué RBS de las filas comienza con el RBS del usuario que ha iniciado sesión?

Cualquier ayuda será muy apreciada!

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Gracias por sus sugerencias. Aunque podrían funcionar, no pude implementarlos fácilmente.

Lo que hice en su lugar fue establecer el RLS para filtrar todos los empleados donde el RBS contiene el RBS del usuario que ha iniciado sesión y, a continuación, excluir al usuario que ha iniciado sesión.

IF(Employees[Employee Email]=userprincipalname(),False,CONTAINSSTRING(Employees[RBS],LOOKUPVALUE(Employees[RBS],Employees[Employee Email],userprincipalname())))

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Gracias por sus sugerencias. Aunque podrían funcionar, no pude implementarlos fácilmente.

Lo que hice en su lugar fue establecer el RLS para filtrar todos los empleados donde el RBS contiene el RBS del usuario que ha iniciado sesión y, a continuación, excluir al usuario que ha iniciado sesión.

IF(Employees[Employee Email]=userprincipalname(),False,CONTAINSSTRING(Employees[RBS],LOOKUPVALUE(Employees[RBS],Employees[Employee Email],userprincipalname())))

View solution in original post

Syndicate_Admin
Administrator
Administrator

@rmarian Utilice el conjunto PATH de funciones DAX. Si reemplaza sus períodos por el carácter "|" que lo convertiría en un PATH para DAX. Alternativamente, divida la columna en función del carácter ".".

Syndicate_Admin
Administrator
Administrator

@Greg_Deckler ¿Podría explicar cómo aplicar esto a mis datos? No tengo una conexión de id-parent de elemento secundario directo entre las filas, solo puedo obtener esta información de la columna RBS que es tipo string. ¿Cómo puedo convertir a ruta?

@rmarian Básicamente puede hacerlo, pero tendría que crear otra columna en la tabla de usuarios, que contendría todos los usuarios que pueden acceder a los datos de usuarios concretos.

Por ejemplo,

usuario que tiene RBS de Division.Unit sólo necesitaría su propio correo electrónico en la nueva columna,

mientras que un usuario que tiene RBS de Division.Unit.Department1, en la nueva columna tendría no sólo su propio correo electrónico, sino también el correo electrónico del primer usuario mencionado, ya que también se puede acceder a este nivel inferior.

básicamente tendría que volver a crear la columna RBS, pero con los correos electrónicos de los usuarios.

El usuario de nivel más alto sólo tendría su propio correo electrónico en la nueva columna, efectivamente sólo él puede ver los datos que están conectados con su RBS.

mientras que el usuario de nivel más bajo en la nueva columna tendría correos electrónicos de todas las personas que están más arriba en la misma cadena RBS como él, dando efectivamente a todos ellos acceso a lo que ve también.

Helpful resources

Announcements
PBI User Groups

Welcome to the User Group Public Preview

Check out new user group experience and if you are a leader please create your group

April Update

Check it Out!

Click here to read more about the April 2021 Updates!

MBAS Carousel

Sign up for our May 4th event!

May the fourth be with you, join us online!

secondImage

The largest Power BI virtual conference

100+ sessions, 100+ speakers, Product managers, MVPs, and experts. All about Power BI. Attend online or watch the recordings.