Módulo 12: Formatação condicional, RLS e temas JSON

Aula 2 de 3

Segurança em nível de linha (RLS)

Estática, dinâmica e as armadilhas que causam vazamento de dados.

20 minutos de leitura


RLS estática

  1. 1Modelagem → Gerenciar funções → Criar.
  2. 2Nomeie a função (ex.: 'Região Sul') e selecione a tabela dRegiao.
  3. 3Expressão DAX do filtro: [Regiao] = "Sul".
  4. 4Salve e teste em Exibir como.
  5. 5Após publicar, no Serviço: Conjunto de dados → Segurança → adicione os usuários à função.

RLS dinâmica

Uma única função filtra conforme o usuário conectado, usando uma tabela de permissões. É a abordagem correta para qualquer cenário real.

DAXFiltro da função dinâmica
-- Tabela dPermissao: Email | Regiao-- Na tabela dPermissao, expressão da função:[Email] = USERPRINCIPALNAME() -- A relação dPermissao[Regiao] → dRegiao[Regiao] propaga para a fato.-- Se não houver relação física, use o padrão abaixo em dRegiao:[Regiao] IN    CALCULATETABLE(        VALUES( dPermissao[Regiao] ),        dPermissao[Email] = USERPRINCIPALNAME()    )

Hierarquia de gestão

DAXGestor vê a própria equipe, com PATH
-- Coluna calculada em dVendedorCaminho = PATH( dVendedor[IdVendedor], dVendedor[IdGestor] ) -- Filtro da função RLS em dVendedor:PATHCONTAINS(    dVendedor[Caminho],    LOOKUPVALUE(        dVendedor[IdVendedor],        dVendedor[Email], USERPRINCIPALNAME()    ))

Testando corretamente

  1. 1No Desktop: Modelagem → Exibir como → marque a função e informe 'Outro usuário' com um e-mail real.
  2. 2Percorra TODAS as páginas do relatório, inclusive tooltips e páginas de detalhe.
  3. 3Confira os totais: se o total geral não mudou, a RLS não está filtrando.
  4. 4No Serviço: Segurança → três pontos da função → Testar como função.
  5. 5Peça a validação de um usuário real de cada perfil antes do go-live.

Segurança em nível de objeto (OLS) esconde tabelas e colunas inteiras, mas exige ferramenta externa (Tabular Editor). Use quando a existência da coluna já é informação sensível, como salário.

Exercício prático

Crie a tabela dPermissao, implemente RLS dinâmica e teste com três perfis diferentes. Depois implemente a variação com hierarquia de gestão usando PATH e PATHCONTAINS.