Implementando segurança em nível de linha em relatórios paginados incorporados

Aplica-se a:✅ Power BI análises incorporadas para seus clientes (o aplicativo é proprietário dos dados)

Este artigo explica como incorporar um relatório paginado que usa RLS (segurança em nível de linha) ao seu aplicativo app owns data.

Observação

Este artigo é relevante apenas para clientes com aplicativos que possuem dados.

Para usar RLS para seus relatórios paginados, faça o seguinte:

  1. Configure o ambiente para filtrar o relatório
  2. Filtre os dados no nível do relatório ou da consulta
  3. Transmita o parâmetro configurado usando um token de inserção

Pré-requisitos

  • Este artigo pressupõe que você saiba como incorporar um relatório paginado do Power BI. Ele explica como gerar o token de inserção para que o relatório mostre somente o que o usuário tem permissão para acessar.

  • Os relatórios paginados são criados usando o mecanismo do SQL Server Reporting Services, não o mecanismo do Power BI (Analysis Services), portanto, a filtragem de RLS é configurada no Power BI Report Builder.

Configurar o ambiente

Para aplicar a segurança em nível de linha a um relatório paginado do Power BI, use o campo interno UserID a fim de atribuir um parâmetro. Esse parâmetro será usado para filtrar ou consultar seus dados.

Em seguida, passe o UserID para a API Embed Token - Generate Token a fim de obter o token de incorporação.

Usar UserID como um filtro no nível do relatório ou da consulta

É possível usar a UserId como um filtro ou em uma consulta à fonte de dados.

Filtrar os dados

  1. Na janela Propriedades do modelo semântico, no painel esquerdo, selecione Filtro.

    Captura de tela do filtro do Power BI Report Builder.

  2. No menu suspenso Expressão, selecione o parâmetro que você deseja usar para filtrar os dados.

    Captura de tela mostrando o valor de Cor selecionado no menu Expressão.

  3. Clique no botão de função Valor.

    Valor do Construtor de Relatórios do Power BI

  4. Na janela Expressão, na lista Categoria, selecione Campos Integrados.

    A captura de tela mostra a janela Expressão com Campos internos selecionados como Categoria e ExecutionTime selecionado como Item.

  5. Na lista Item, selecione UserID e clique em OK.

    UserID do Construtor de Relatórios do Power BI

  6. Na janela Propriedades do modelo semântico, verifique se a expressão é o seu parâmetro selecionado = UserID e clique em OK.

    Propriedades de modelo semântico do Construtor de Relatórios do Power BI

Como usar uma consulta

  1. Na janela Propriedades do modelo semântico, no painel de navegação esquerdo, selecione Parâmetros e clique em Adicionar.

    Parâmetros do Construtor de Relatórios do Power BI

  2. No campoNome do Parâmetro, digite @UserID e em Valor do Parâmetro, adicione [&UserID].

    Nome do parâmetro do Construtor de Relatórios do Power BI

  3. No painel esquerdo, selecione Consulta. Na Consulta, adicione o parâmetro UserID como parte de sua consulta e clique em OK.

    Observação

    Na captura de tela abaixo, o parâmetro de cor é usado como exemplo (WHERE FinalTable.Color = @UserID). Se necessário, é possível criar uma consulta mais complexa.

    Editar consultas do Construtor de Relatórios do Power BI

Gerar um token de inserção

Ao incorporar um relatório paginado para seus clientes, use a API Reports GenerateTokenInGroup a fim de obter o token de inserção. Esse token também pode ser usado para filtrar alguns dados do relatório paginado.

Só é possível gerar um token usando uma entidade de serviço. Não é possível gerar um token como um usuário mestre. A entidade de serviço precisa ter, no mínimo, permissões de membro no workspace do serviço do Power BI. (Se o principal de serviço tiver a função de Colaborador ou Visualizador, ele não conseguirá gerar um token).

Para gerar um token, atribua ao campo username as informações que você deseja exibir. Por exemplo, em um relatório paginado com um parâmetro de cor, ao inserir verde no campo username, o token de inserção restringe os dados incorporados apenas aos que têm verde como o valor na coluna de cor.

{
 "reports": [
 {
  "id": "8d57615e-cfed-4d60-bd21-7dc05727193c"
 }
 ],
 "identities": [
 {
  "username": "green",
  "reports": [
  "8d57615e-cfed-4d60-bd21-7dc05727193c"
  ]
 }
 ]
}

Observação

Se você gerar um token de inserção sem especificar uma user-id, a object-id da entidade de serviço será usada.

Considerações e limitações

  • Não há suporte para usuário master com relatórios paginados em incorporação para seus clientes. suporte para usuário mestre na inserção para sua organização.
  • A entidade de serviço deve ter permissões no espaço de trabalho de pelo menos membro (não visualizador nem colaborador).

Gerar um token de inserção