Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Administrator
1 year ago

Enmascaramiento de datos RLS

Hemos implementado la seguridad de nivel de fila (RLS) con grupos de directorio activo. Hemos creado un grupo AD de costo de administración para los usuarios que requerían acceso a la información relacionada con el costo.

Tenemos un requisito en el que los usuarios que no forman parte del grupo AD de costos de administración no deben poder ver información relacionada con los costos (enmascaramiento de datos) en el Editor tabular de Power BI.
Por favor, ayúdenos con algunas sugerencias sobre cómo implementar el uso del Editor Tabular.

Gracias...

3 Replies

  • Hola @prajwala ,

    Para implementar RLS con enmascaramiento de datos en Power BI, asegurándose de que los usuarios que no forman parte de un grupo de AD específico (como el grupo de AD de costo de administración) vean información enmascarada u oculta relacionada con los costos, puede lograrlo mediante la creación de roles de RLS dinámicos mediante el Editor tabular y expresiones DAX. A continuación, te explicamos cómo puedes implementarlo paso a paso:

    1. Creación de un rol de RLS mediante el editor tabular
      1. Abra el modelo de Power BI en el Editor tabular.
      2. Vaya a la sección Roles en el panel de la izquierda.
      3. Cree o modifique un rol, como Mask_Cost_Data.
      4. Agregue la condición de filtro DAX para comprobar si un usuario forma parte del grupo AD de costo de administración.
    2. Utilice USERNAME() o USERPRINCIPALNAME()
      The key here is leveraging USERNAME() or USERPRINCIPALNAME() to dynamically evaluate the current user's membership.

      Lógica de enmascaramiento dinámico:
      Si el usuario no forma parte del grupo de AD de coste de administración, muestre los datos enmascarados (por ejemplo, cero, nulo o "Restringido"). De lo contrario, muestre los datos de costo real.

      Ejemplo de expresión DAX para columnas de costo:
      Puede escribir esto como una columna calculada o modificar una medida en el Editor tabular:

      MaskedCost = 
      IF (
      ISFILTERED ( 'UserADGroup'[GroupName] ) &&
      CONTAINS ( 'UserADGroup', 'UserADGroup'[GroupName], "Management Cost AD" ),
      [Cost],
      "Restricted"
      )

      Ejemplo de expresión DAX para columnas de costo:
      Pasos:

      1. Supongamos que tiene una tabla o una fuente de datos con grupos de usuarios vinculados a usuarios. Esto se puede importar o consultar dinámicamente.

        • Tabla: 'UserADGroup' con columnas:

          • [UserEmail] o [UserName] (coincide con USERPRINCIPALNAME()).

          • [Nombre del grupo] (contiene los nombres de los grupos, como "Coste de gestión, AD").

      2. Combine esta tabla con la tabla de datos principal donde se almacenan los costos.

    3. Enmascarar datos para usuarios no autorizados
      Ahora, use la lógica anterior dentro de una medida en lugar de una columna para mayor flexibilidad. Modifique la medida de costo:

      Masked_Cost_Measure =
      VAR UserInGroup =
      LOOKUPVALUE ( 'UserADGroup'[GroupName], 'UserADGroup'[UserEmail], USERPRINCIPALNAME() )
      RETURN
      IF ( UserInGroup = "Management Cost AD", SUM ( 'FactTable'[Cost] ), BLANK () )

      Explicación:

      • LOOKUPVALUE comprueba si el correo electrónico del usuario actual pertenece al grupo de anuncios de coste de administración.

      • Si el usuario forma parte del grupo, la medida muestra el costo real.

      • De lo contrario, devuelve BLANK() o cualquier valor enmascarado (por ejemplo, "Restringido" o 0).

    4. Definir el rol de RLS para grupos de usuarios
      1. In Tabular Editor:
        • Create an RLS filter on your 'UserADGroup' table:
          'UserADGroup'[UserEmail] = USERPRINCIPALNAME()
          This ensures that users only see their respective group data.
      2. Aplique esta función al modelo.
    5. Prueba de RLS en Power BI
      1. Después de guardar los cambios en el Editor tabular, cargue el modelo en Power BI.
      2. Utilice la función "Ver como roles" para simular diferentes usuarios o grupos:
        • Pruebe con un usuario que pertenezca al grupo "Management Cost AD".
        • Pruebe con un usuario que no pertenezca al grupo.
      3. Compruebe que los usuarios no autorizados vean los datos enmascarados o restringidos, mientras que los usuarios autorizados vean los costos reales.

    Espero que la solución proporcionada funcione para usted

    Si he resuelto su pregunta, considere marcar mi publicación como una solución. ¡Gracias!
    Un reconocimiento siempre es apreciado, ya que ayuda a reconocer el esfuerzo y mantiene a la comunidad próspera.

  • Hola @prajwala

    ¿La solución que grazitti_sapna y johnt75 ofrecieron ayudarlo a resolver el problema, si les ayuda, puede considerar aceptarlas como soluciones para que más usuarios puedan consultarlas, si tiene otros problemas, puede proporcionar información para que pueda ofrecer más sugerencias para usted,

    ¡Saludos!

    Yolo Zhu