RLS (segurança em nível de linha) com o Power BI

A RLS (segurança em nível de linha) com o Power BI pode ser usada para restringir o acesso a dados para determinados usuários. Os filtros restringem o acesso a dados no nível da linha e você pode definir filtros nas funções. No serviço do Power BI, usuários com acesso a um workspace têm acesso a modelos semânticos nesse workspace. A RLS restringe o acesso a dados apenas para usuários com permissões de Visualizador. Ela não se aplica a Administradores, Membros nem Colaboradores.

É possível configurar a RLS de modelos de dados importados para o Power BI com o Power BI. Você também pode configurar RLS em modelos semânticos que estão usando DirectQuery, assim como o SQL Server. Para conexões dinâmicas do Analysis Services ou do Azure Analysis Services, configure a segurança no nível da linha no modelo, não no Power BI. A opção de segurança não é exibida para modelos semânticos com conexão dinâmica.

Definir funções e regras no Power BI Desktop

É possível definir funções e regras no Power BI Desktop. Quando publica no Power BI, você também publica as definições de função.

Para definir funções de segurança:

  1. Importe os dados para o relatório do Power BI Desktop ou configure uma conexão do DirectQuery.

    Observação

    Você não pode definir funções no Power BI Desktop BI para as conexões dinâmicas do Analysis Services. Você precisa fazer isso no modelo do Analysis Services.

  2. Na guia Modelagem, selecione Gerenciar Funções.

    Captura de tela da guia Modelagem, realçando Gerenciar funções.

  3. Na janela Gerenciar funções, selecione Criar.

    Captura de tela da janela Gerenciar funções, realçando Criar.

  4. Em Funções, forneça um nome para a função.

    Observação

    Você não pode definir uma função com uma vírgula, por exemplo London,ParisRole.

  5. Em Tabelas, selecione a tabela à qual deseja aplicar uma regra DAX (Expresso de Análise de Dados).

  6. Na caixa Expressão DAX da tabela de filtro, insira as expressões DAX. Essa expressão retorna um valor de verdadeiro ou falso. Por exemplo: [Entity ID] = “Value”.

    Captura de tela da janela Gerenciar funções, realçando um exemplo de expressão DAX.

    Observação

    Você pode usar o username() nesta expressão. Lembre-se de que username() terá o formato DOMÍNIO\nomedeusuário no Power BI Desktop. Dentro do serviço do Power BI e do Servidor de Relatórios do Power BI, ele está no formato do nome UPN do usuário. Como alternativa, você pode usar userprincipalname(), que sempre retorna o usuário no formato de seu nome UPN, username@contoso.com.

  7. Depois de criar a expressão DAX, selecione a marca de seleção acima da caixa de expressão para validar a expressão.

    Captura de tela da janela Expressão DAX de filtro de tabela, realçando a marca de seleção.

    Observação

    Nessa caixa de expressão, use vírgulas para separar argumentos da função DAX, mesmo que você esteja usando uma localidade que normalmente usa separadores de ponto e vírgula (por exemplo, francês ou alemão).

  8. Selecione Salvar.

Não é possível atribuir usuários a uma função no Power BI Desktop. Você pode atribuí-los no serviço do Power BI. É possível habilitar a segurança dinâmica no Power BI Desktop fazendo uso das funções DAX username() ou userprincipalname() e configurando as relações corretas.

Por padrão, a filtragem de segurança no nível da linha usa filtros unidirecionais, estejam as relações definidas como unidirecionais ou bidirecionais. Habilite manualmente a filtragem cruzada bidirecional com a segurança no nível da linha selecionando a relação e marcando a caixa de seleção Aplicar filtro de segurança em ambas as direções. Observe que se uma tabela fizer parte de vários relacionamentos bidirecionais, você só poderá selecionar essa opção para um desses relacionamentos. Selecione essa opção quando também tiver implementado a segurança dinâmica no nível da linha no nível do servidor, em que a segurança no nível da linha se baseia no nome de usuário ou na ID de logon.

Para obter mais informações, consulte Filtragem cruzada bidirecional usando o DirectQuery no Power BI e o artigo técnico Protegendo o modelo semântico tabular do BI.

Captura de tela da caixa de seleção Aplicar filtro de segurança selecionada.

Definir funções e regras no Power BI usando o editor avançado de segurança em nível de linha (versão prévia)

Você pode definir de forma rápida e fácil funções de segurança em nível de linha e filtros no Power BI usando o editor de segurança em nível de linha aprimorado. Com esse editor, é possível alternar entre usar a interface suspensa padrão e uma interface DAX. Quando publica no Power BI, você também publica as definições de função.

Para definir funções de segurança usando o editor de segurança em nível de linha aprimorado:

  1. No Power BI Desktop, habilite a versão prévia acessando Arquivos > Opções e Configurações > Opções > Versão Prévia dos recursos e ative "Editor de segurança em nível de linha aprimorado". Como alternativa, você pode usar esse editor no Serviço editando seu modelo de dados no serviço do Power BI.

  2. Importe os dados para o seu modelo semântico do Power BI ou configure uma conexão do DirectQuery.

  3. Na faixa de opções, selecione Gerenciar funções.

    Captura de tela do botão Gerenciar funções na faixa de opções da Área de Trabalho.

  4. Na janela Gerenciar funções, selecione Novo para criar uma função.

    Captura de tela da criação de uma função no editor de segurança em nível de linha aprimorado.

  5. Em Funções, forneça um nome para a função e selecione Enter.

    Captura de tela da renomeação de uma função no editor de segurança em nível de linha aprimorado.

  6. Em Selecionar tabelas, selecione a tabela à qual você deseja aplicar um filtro de segurança em nível de linha.

  7. Em Filtrar dados, use o editor padrão para definir suas funções. As expressões criadas retornam um valor verdadeiro ou falso.

    Captura de tela de um exemplo de como usar o editor padrão no editor de segurança em nível de linha aprimorado.

    Observação

    Nem todos os filtros de segurança em nível de linha com suporte no Power BI podem ser definidos usando o editor padrão. As limitações incluem expressões que atualmente só podem ser definidas usando DAX, incluindo regras dinâmicas, como username() ou userprincipalname(). Para definir funções usando esses filtros, alterne para usar o editor DAX.

  8. Opcionalmente, selecione Alternar para o editor DAX para alternar para usar o editor DAX para definir sua função. Você pode voltar para o editor padrão selecionando Alternar para o editor padrão. Todas as alterações feitas em qualquer interface do editor persistem ao alternar interfaces quando possível.

    Captura de tela de um exemplo de como usar o editor DAX no editor de segurança em nível de linha aprimorado.

    Ao definir uma função usando o editor DAX que não pode ser definido no editor padrão, se você tentar alternar para o editor padrão, receberá um aviso de que a troca de editores pode resultar na perda de algumas informações. Para manter essas informações, selecione Cancelar e continue editando apenas essa função no editor DAX.

    Captura de tela de uma caixa de diálogo de erro de exemplo ao alternar do DAX para o editor padrão no editor avançado de segurança em nível de linha.

  9. Selecione Salvar

Validar as funções dentro do Power BI Desktop

Depois de criar sua função, você poderá testar os resultados da função no Power BI Desktop.

  1. Na guia Modelagem, selecione Exibir como.

    Captura de tela da guia Modelagem, realçando Exibir como.

    É exibida a janela Exibir como funções, na qual você pode ver as funções que criou.

    Captura de tela da janela Exibir como funções, com Nenhum selecionado.

  2. Selecione uma função que você criou. Em seguida, escolha OK para aplicar essa função.

    Os relatórios renderizam somente os dados relevantes para essa função.

  3. Você também pode selecionar Outro usuário e fornecer um determinado usuário.

    Captura de tela da janela Exibir como funções com um usuário de exemplo inserido.

    É melhor fornecer o nome UPN, pois ele será usado pelo serviço do Power BI e pelo Servidor de Relatórios do Power BI.

    No Power BI Desktop, a opção Outro usuário exibirá resultados diferentes somente se você estiver usando a segurança dinâmica com base nas expressões DAX. Nesse caso, você precisa incluir o nome de usuário, bem como a função.

  4. Selecione OK.

    O relatório é renderizado com base no que os filtros do RLS permitem que o usuário veja.

    Observação

    O recurso Exibir como funções não funciona para modelos de DirectQuery com o SSO (logon único) habilitado.

Gerenciar a segurança no modelo

Para gerenciar a segurança no seu modelo semântico, abra o workspace em que você salvou o modelo semântico no serviço do Power BI e execute as seguintes etapas:

  1. No serviço do Power BI, selecione o menu Mais opções para um modelo semântico. Esse menu é exibido quando você passa o mouse sobre um nome de modelo semântico, independentemente de selecioná-lo no menu de navegação ou na página do workspace.

    Captura de tela mostrando o menu de mais opções no workspace.

    Captura de tela mostrando o menu de mais opções no menu de navegação.

  2. Selecione Segurança.

    Captura de tela mostrando o menu de mais opções com a opção Segurança selecionada.

A segurança leva você até a página da Segurança no Nível de Linha, na qual você adiciona membros a uma função que você criou. A função Colaborador (e funções superiores do workspace) verá Segurança e poderá atribuir usuários a uma função.

Trabalhando com membros

Adicionar membros

No serviço do Power BI, adicione um membro à função digitando o endereço de email, o nome do usuário ou o grupo de segurança. Não é possível adicionar Grupos criados no Power BI. Você pode adicionar membros externos à sua organização.

Você pode usar os grupos a seguir para configurar a segurança em nível de linha.

Observe que os grupos do Microsoft 365 não são têm suporte e não podem ser adicionados a nenhuma função.

Captura de tela mostrando como adicionar um membro.

Você também pode ver quantos membros fazem parte da função pelo número entre parênteses ao lado do nome da função ou ao lado de Membros.

Captura de tela mostrando os membros na função.

Remover membros

É possível remover membros selecionando o X ao lado do nome.

Captura de tela mostrando como remover um membro.

Validando a função no serviço do Power BI

Teste a função no serviço do Power BI para validar se ela está funcionando corretamente.

  1. Selecione Mais opções (...) ao lado da função.
  2. Selecione Testar como função.

Captura de tela da opção Testar como função.

Você será redirecionado para o relatório que foi publicado do Power BI Desktop com esse modelo semântico, se ele existir. Os dashboards não ficam disponíveis para testes usando a opção Testar como função.

No cabeçalho da página, a função que está sendo aplicada é mostrada. Teste outras funções, uma combinação de funções ou uma pessoa específica selecionando Agora exibindo como. Aqui você verá detalhes de permissões importantes referentes ao indivíduo ou à função que está sendo testada. Para obter mais informações sobre como as permissões interagem com o RLS, consulte Experiência do usuário do RLS.

Captura de tela da lista suspensa Exibindo agora como de uma pessoa específica.

Teste outros relatórios conectados ao modelo semântico selecionando Exibição no cabeçalho da página. Você só pode testar relatórios localizados no mesmo workspace onde está o seu modelo semântico.

Captura de tela de Exibindo para selecionar um relatório diferente para teste.

Para retornar à exibição normal, selecione Voltar à Segurança de Nível de Linha.

Observação

O recurso Testar como função não funciona para modelos DirectQuery com o SSO (logon único) habilitado. Além disso, nem todos os aspectos de um relatório podem ser validados no recurso Testar como função, incluindo as visualizações de P e R, visualizações de Insights Rápidos e o Copilot.

Usando a função DAX username() ou userprincipalname()

Você pode tirar proveito das funções DAX username() ou userprincipalname() dentro de seu conjunto de dados. Você pode usá-las dentro de expressões no Power BI Desktop. Quando você publicar seu modelo, ele será usado no serviço do Power BI.

No Power BI Desktop, username() retorna um usuário no formato DOMÍNIO\Usuário e userprincipalname() retorna um usuário no formato user@contoso.com.

No serviço do Power BI, username() e userprincipalname() retornam o nome UPN do usuário. Isso se parece com um endereço de email.

Usando RLS com workspaces no Power BI

Se você publicar seu relatório do Power BI Desktop em um workspace no serviço do Power BI, as funções de RLS serão aplicadas aos membros a quem foi atribuída a função de Espectador no workspace. Mesmo que os Espectadores recebam permissões Criar para o modelo semântico, a RLS ainda será aplicada. Por exemplo, se Visualizadores com permissões de Build usarem Analisar no Excel, a exibição dos dados será protegida pela RLS. Os membros do workspace com atribuição de Administrador, Membro ou Colaborador têm permissão de edição para o modelo semântico. Portanto, a RLS não se aplica a eles. Se desejar que a RLS se aplique às pessoas de um workspace, atribua a todas a função de Espectador. Saiba mais sobre funções nos workspaces.

Considerações e limitações

Veja as limitações atuais da segurança no nível da linha nos modelos de nuvem aqui:

  • Se você definiu funções e regras anteriormente no serviço do Power BI, deverá criá-las novamente no Power BI Desktop.
  • Você pode definir a RLS somente nos modelos semânticos criados com o Power BI Desktop. Se desejar habilitar a RLS para modelos semânticos criados com o Excel, deverá primeiro converter os arquivos em arquivos PBIX (Power BI Desktop). Saiba mais.
  • Não é possível adicionar entidades de serviço a uma função de RLS. Assim, o RLS não é aplicado a aplicativos que usam uma entidade de serviço como a identidade efetiva final.
  • Há suporte apenas para conexões de Importação e DirectQuery. Conexões dinâmicas do Analysis Services são tratadas no modelo local.
  • O recurso Testar como função/Exibir como função não funciona para modelos do DirectQuery com o SSO (logon único) habilitado.
  • O recurso Testar como função/exibir como função mostra apenas relatórios do workspace de modelos semânticos.
  • O recurso Testar como função/Exibir como função não funciona para relatórios paginados.

Tenha em mente que, se um relatório do Power BI fizer referência a uma linha com o RLS configurado, a mesma mensagem será exibida como para um campo excluído ou não existente. Para esses usuários, parece que o relatório está incorreto.

Perguntas frequentes

Pergunta: e se eu já tiver criado funções e regras para um conjunto de dados no serviço do Power BI? Elas ainda funcionarão se eu não fizer nada?
Resposta: não, os visuais não serão renderizados corretamente. Você precisará recriar as funções e regras no Power BI Desktop e, em seguida, publicá-las no serviço do Power BI.

Pergunta: Posso criar essas funções para fontes de dados do Analysis Services?
Resposta: sim, se você importou os dados no Power BI Desktop. Se você estiver usando uma conexão dinâmica, não poderá configurar a RLS no serviço do Power BI. Você define o RLS no modelo do Analysis Services local.

Pergunta: Posso usar a RLS para limitar as colunas ou as medidas acessíveis por meus usuários?
Resposta: Não, se um usuário tiver acesso a uma linha específica de dados, ele poderá ver todas as colunas de dados dessa linha. Para restringir o acesso a colunas e metadados de coluna, considere usar a segurança no nível do objeto.

Pergunta: A RLS permite ocultar dados detalhados, mas conceder acesso aos dados resumidos nos visuais?
Resposta: não, você protege linhas individuais de dados, mas os usuários sempre podem ver os detalhes ou os dados resumidos.

Pergunta: minha fonte de dados já tem funções de segurança definidas (por exemplo, funções do SQL Server ou funções do SAP BW). Qual é a relação entre essas funções e o RLS?
Resposta: a resposta depende de você estar importando dados ou usando o DirectQuery. Se você estiver importando dados para o conjunto de dados do Power BI, as funções de segurança em sua fonte de dados não serão usadas. Nesse caso, você deve definir a RLS para impor regras de segurança para usuários que se conectam ao Power BI. Se você estiver usando o DirectQuery, as funções de segurança em sua fonte de dados serão usadas. Quando um usuário abre um relatório, o Power BI envia uma consulta para a fonte de dados subjacente, que aplica as regras de segurança aos dados com base nas credenciais do usuário.

Pergunta: um usuário pode pertencer a mais de uma função?
Resposta: um usuário pode pertencer a várias funções e as funções são aditivas. Por exemplo, se um usuário pertencer às funções "Vendas" e "Marketing", ele poderá ver dados dessas duas funções.

Perguntas? Experimente perguntar à Comunidade do Power BI Sugestões? Contribuir com ideias para aprimorar o Power BI