(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa
Power BI

RLS dinâmico no Power BI com tabelas de mapeamento

João Barros 22 de November de 2024 2 min de leitura

O Row-Level Security (RLS) do Power BI garante que João vê apenas as vendas do Norte e Maria apenas as do Sul, mesmo que ambos usem o mesmo relatório. O RLS dinâmico usa o endereço de email do utilizador autenticado para filtrar dados automaticamente.

Arquitectura de mapeamento

Em vez de criar uma role por região (o que não escala), crie uma tabela dim_UserRegiao:

| Email                  | Regiao   |
|------------------------|----------|
| joao@empresa.pt        | Norte    |
| maria@empresa.pt       | Sul      |
| admin@empresa.pt       | *        |

Configurar a Role no Power BI Desktop

Em Modelling → Manage Roles, crie a role VendedorDinamico e aplique o seguinte filtro DAX na tabela dim_Regiao:

[Regiao] = LOOKUPVALUE(
    dim_UserRegiao[Regiao],
    dim_UserRegiao[Email], USERPRINCIPALNAME()
) || LOOKUPVALUE(
    dim_UserRegiao[Regiao],
    dim_UserRegiao[Email], USERPRINCIPALNAME()
) = "*"

Publicar e atribuir

Após publicar no Power BI Service, vá a Dataset → Security e adicione os utilizadores ou grupos do Azure Active Directory à role VendedorDinamico. Não é necessário adicionar cada pessoa — a lógica de filtragem é resolvida pela tabela de mapeamento.

Testar

Use View As → Other User no Power BI Desktop ou Test as Role no Service para verificar o que cada utilizador vê antes de publicar para produção.

Conclusão

O RLS dinâmico com tabelas de mapeamento é a abordagem recomendada pela Microsoft para segurança a nível de linha escalável. Ao centralizar as permissões numa tabela de dados, as alterações organizacionais traduzem-se numa simples actualização de linha — sem alterar o relatório.

Partilhar: