RLS dinâmico no Power BI com tabelas de mapeamento
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.