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

Aplica-se a:✅ Análises embutidas do Power BI para os seus clientes (App-owns-data)

Este artigo explica como incorporar um relatório paginado que usa RLS (segurança ao nível da linha) na sua aplicação app owns data.

Nota

Este artigo só é relevante para clientes de dados proprietários de aplicativos.

Para usar a RLS para seus relatórios paginados:

  1. Configurar o ambiente para filtrar o relatório
  2. Filtrar os dados ao nível do relatório ou da consulta
  3. Passe o parâmetro configurado usando um token de incorporaçã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 incorporação para que o relatório mostre apenas 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 e não o mecanismo do Power BI (Analysis Services), portanto, a filtragem RLS é configurada no Construtor de Relatórios do Power BI.

Configurar o ambiente

Para aplicar segurança ao nível da linha a um relatório paginado do Power BI, utilize o campo incorporado UserID para atribuir um parâmetro. Este parâmetro é usado para filtrar ou consultar seus dados.

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

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

Você pode usar 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 Filtrar.

    Captura de ecrã do filtro do Construtor de Relatórios do Power BI.

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

    A captura de ecrã mostra o valor Cor selecionado do menu Expressão.

  3. Selecione o 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 incorporados.

    A captura de ecrã mostra a janela Expressão com Campos incorporados selecionados em Categoria e ExecutionTime selecionado em Item.

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

    ID de usuário do Construtor de Relatórios do Power BI

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

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

Utilizar uma consulta

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

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

  2. No campo Nome do parâmetro, digite @UserID e, no 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 da consulta e selecione OK.

    Nota

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

    Editar consultas do Construtor de Relatórios do Power BI

Gerar um token de incorporação

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

Só pode gerar um token com um principal de serviço. Não é possível gerar um token como usuário mestre. O principal de serviço tem de ter, pelo menos, permissões de Membro no espaço de trabalho do serviço Power BI. (Se o principal de serviço tiver a função de Contribuidor ou de Leitor, não conseguirá gerar um token).

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

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

Nota

Se gerar um token de incorporação sem especificar um ID de utilizador, será utilizado o ID de objeto do service principal.

Considerações e limitações

  • O usuário mestre não é suportado com relatórios paginados para incorporação para seus clientes. O usuário-mestre é suportado para incorporação em sua organização.
  • O principal de serviço deve ter, no mínimo, permissões de membro no espaço de trabalho (ou seja, não visualizador nem colaborador).

Gerar um token de incorporação