Partilhar via


Incorporar um relatório com RLS

APLICA-SE A: App possui dados O usuário possui dados

Este artigo explica como incorporar conteúdo do Power BI que usa RLS em um aplicativo padrão do Power BI possui aplicativo de dados.

Pré-requisitos

Para obter uma explicação detalhada sobre como configurar a RLS, consulte Segurança em nível de linha (RLS) com o Power BI.

Ao definir suas funções RLS, lembre-se de que a expressão DAX usada determina se o modelo RLS é estático ou dinâmico.

Quando usar a segurança estática e dinâmica

A segurança estática usa um valor fixo no filtro DAX para definir cada função. É simples de implementar, mas difícil de manter quando há muitos usuários ou organizações envolvidas.

A segurança estática funciona melhor para um ISV que atende a um ou alguns grandes clientes onde cada departamento precisa acessar dados diferentes.

A segurança dinâmica usa uma função DAX (username() ou userprincipalname()) para definir as funções. A segurança dinâmica oferece mais flexibilidade e permite que você gerencie seus dados usando menos funções e menos manutenção.

Segurança estática

Com funções estáticas, você passa a função para o Power BI quando gera um token de incorporação e o usuário vê dados de acordo com essa função. Para criar funções de segurança estáticas, insira um valor fixo no filtro DAX.

Por exemplo, você pode definir o papel do Leste dos EUA como [Region] = "East"

Captura de tela mostrando como definir uma função estática de R L S.

Digamos que john@contoso.com seja um usuário do seu aplicativo. Você quer dar a John acesso aos dados da função do Leste dos EUA . Para incorporar um relatório para john@contoso.como , gere um token de incorporação usando a função Leste dos EUA . Os dados resultantes são filtrados para [Region] = "East".

Nota

Ao gerar o token de incorporação, você precisa fornecer um nome de usuário, mas o nome de usuário pode ser qualquer cadeia de caracteres. As funções estáticas têm um valor fixo que não depende de um nome de usuário, portanto, uma vez que o ISV determina a função do usuário e a passa para o token de incorporação, os dados são filtrados de acordo com essa função, independentemente do nome de usuário que foi passado.

Segurança dinâmica

A segurança dinâmica usa a função DAX (username() ou userprincipalname()) para definir a função.

No cenário de dados do proprietário do usuário, o modelo RLS filtra automaticamente os dados com base nas funções do usuário específico. Com os dados proprietários do aplicativo, o Power BI não sabe os nomes de usuário dos clientes do ISV, portanto, você pode usar a username() função para filtrar dinamicamente os dados.

Crie uma função no Power BI Desktop usando a função username(). Por exemplo, você pode criar uma função chamada CountryDynamic e defini-la como [CountryRegionCode] = username()

Captura de ecrã a mostrar como criar uma função R L S dinâmica.

Digamos que você queira dar ao seu usuário, jane@contoso.com, acesso aos dados para a França. Ao gerar um token de incorporação para jane@contoso.como , você passa a cadeia de caracteres France como o nome de usuário na função CountryDynamic. Os seus dados são filtrados de acordo com [CountryRegionCode] = França.

{
    "accessLevel": "View",
    "identities": [
        {
            "username": "France",
            "roles": [ "CountryDynamic"],
            "datasets": [ "fe0a1aeb-f6a4-4b27-a2d3-b5df3bb28bdc" ]
        }
    ]
}

Ao usar a segurança dinâmica nesse cenário, você só precisa de uma função para todas as regiões. O nome da região é usado como a identidade efetiva.

Gerar um token de incorporação

Quando estiver pronto para incorporar o relatório em seu aplicativo, você precisará gerar um token de incorporação. Para gerar um token usando a API de token incorporado, passe as seguintes informações para a API.

  • username (required) – Se as funções forem dinâmicas, a string username será usada como filtro. Para funções estáticas, o nome de usuário não afeta a RLS e pode ser qualquer cadeia de caracteres. Apenas um único nome de usuário pode ser listado.
  • roles (required) – A(s) função(ões) usada(s) ao aplicar regras de Segurança em Nível de Linha. Se passar mais de uma função, eles devem ser passados como uma matriz de cadeia de caracteres.
  • conjunto de dados (obrigatório) – O conjunto de dados aplicável ao item que você está incorporando.

Agora você pode incorporar o relatório em seu aplicativo. O relatório filtra os dados de acordo com a RLS aplicada.

public EmbedToken GetEmbedToken(Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId)
    {
        PowerBIClient pbiClient = this.GetPowerBIClient();

       // Defines the user identity and roles.
        var rlsIdentity = new EffectiveIdentity(
            username: "France",
            roles: new List<string>{ "CountryDynamic" },
            datasets: datasetIds.Select(id => id.ToString()).ToList());
        );
       
        // Create a request for getting an embed token for the rls identity defined above
        var tokenRequest = new GenerateTokenRequestV2(
            reports: new List<GenerateTokenRequestV2Report>() { new GenerateTokenRequestV2Report(reportId) },
            datasets: datasetIds.Select(datasetId => new GenerateTokenRequestV2Dataset(datasetId.ToString())).ToList(),
            targetWorkspaces: targetWorkspaceId != Guid.Empty ? new List<GenerateTokenRequestV2TargetWorkspace>() { new GenerateTokenRequestV2TargetWorkspace(targetWorkspaceId) } : null,
            identities: new List<EffectiveIdentity> { rlsIdentity }
        );

        // Generate an embed token
        var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest);

        return embedToken;
    }

Considerações e limitações

  • Dependendo da sua configuração, poderá ter de seguir vários passos antes de poder gerar um token de incorporação. Para obter informações sobre os diferentes cenários, consulte Incorporar um relatório que usa recursos de segurança.
  • O usuário que gera o token de incorporação deve ser um membro ou administrador em ambos os espaços de trabalho (o espaço de trabalho do conjunto de dados e o espaço de trabalho de relatório).
  • Ao gerar o token de incorporação, você precisa fornecer um nome de usuário e uma função. Caso contrário, ocorrerá um dos seguintes eventos, dependendo se o token estiver sendo gerado pela entidade de serviço ou pelo usuário mestre:
    • Para uma entidade de serviço, a geração de token falha.
    • Para um usuário mestre, a geração de token é bem-sucedida, mas os dados não são filtrados (todos os dados são retornados).

Mais perguntas? Experimente a Comunidade do Power BI.