Partilhar via


Incorporar um relatório com um banco de dados do Azure Analysis Services (AAS)

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

Este artigo explica como incorporar um relatório do Power BI que usa dados armazenados no Azure Analysis Services (AAS), em um cenário de incorporação para seus clientes . Este artigo destina-se a desenvolvedores de software independentes (ISVs), que desejam incorporar um relatório com dados AAS, independentemente de o banco de dados implementar ou não segurança em nível de linha (RLS).

Pré-requisitos

Você precisará de um relatório com uma conexão em tempo real com o banco de dados AAS, com ou sem RLS.

Segurança dinâmica - RLS

Se você quiser que seu relatório implemente RLS dinâmico, use a customeData função. Como não é possível substituir a identidade efetiva, recomendamos a criação de novas funções com customDatao . Você também pode usar funções que tenham as username funções ou userPrincipalName , se substituí-las por customData.

Siga estas etapas para criar uma nova função e adicionar a customData função à função.

  1. Crie uma função no servidor do Analysis Services.

    A screenshot of creating a new role in Analysis Services server.

  2. Nas configurações Gerais, forneça um Nome da Função e defina as permissões do banco de dados como Somente leitura.

    A screenshot of giving a new role a new name and setting it to read only, in the general settings in Analysis Services server.

  1. Nas configurações de associação , adicione os usuários que vão chamar a API Embed Token - Generate Token . Se você estiver usando uma entidade de serviço que não seja um administrador, adicione isso também.

    A screenshot of adding users to a new role in Analysis Services server.

  2. Nas configurações de filtros de linha, defina sua consulta DAX usando a CUSTOMDATA() função.

    A screenshot showing how to add the function customData to the DAX query in a new role in Analysis Services server.

Service principal (Principal de serviço)

Se você estiver usando uma entidade de serviço para incorporar o relatório, verifique se a entidade de serviço é um administrador de servidor ou membro de função do AAS. Para conceder permissões de administrador do AAS à entidade de serviço, consulte Adicionar uma entidade de serviço à função de administrador do servidor. Para adicionar a entidade de serviço como membro da função, vá para as Configurações de associação.

Use o ID do objeto principal do serviço como o nome de usuário (identidade efetiva).

Migração do Analysis Service

Você pode migrar do AAS para o Power BI Premium mesmo se tiver um relatório AAS incorporado. Seu relatório incorporado não será interrompido durante a migração, desde que a entidade de segurança que está chamando Embed Token - Generate Token API seja um membro ou administrador do espaço de trabalho.

Nota

Se a entidade de serviço não for um administrador e você não quiser torná-la um administrador do espaço de trabalho ao migrar, migre esse modelo para um espaço de trabalho separado onde você poderá conceder permissões de administrador.

Gerar um token de incorporação

Use a API Gerar Token para gerar um token de incorporação que substitua a identidade efetiva.

As informações necessárias para gerar um token de incorporação dependem de como você está conectado ao Power BI (entidade de serviço ou usuário mestre) e também se o banco de dados tem RLS.

Para gerar um token de incorporação, forneça as seguintes informações:

  • Nome de utilizador (Opcional se não houver RLS. Obrigatório para RLS) - O nome de usuário deve ser o mesmo que o chamador da API (neste caso, o UPN do usuário mestre). Se o banco de dados não usar RLS e nenhum nome de usuário for fornecido, as credenciais do usuário mestre serão usadas.
  • Função (necessária para RLS) - O relatório só exibirá dados se a identidade efetiva for um membro da função.

Exemplo:

Defina a identidade e as funções do usuário para um dos três cenários a seguir:

  • Se a RLS não for implementada:

Não há necessidade de definir qualquer identidade efetiva.

  • Se estiver a utilizar RLS estática:

        var rlsidentity = new EffectiveIdentity(  //If static RLS
           username: "username@contoso.com", 
           roles: new List<string>{ "MyRole" },
           datasets: new List<string>{ datasetId.ToString()}
        )
    
  • Se estiver usando RLS dinâmica:

        var rlsidentity = new EffectiveIdentity(  // If dynamic RLS
           username: "username@contoso.com",
           roles: new List<string>{ "MyRoleWithCustomData" },
           customData: "SalesPersonA"
           datasets: new List<string>{ datasetId.ToString()}
        )
    

    Nota

    customData no token de incorporação não pode ser maior que 1.024 caracteres.

Use a identidade efetiva para gerar um token de incorporação:

public EmbedToken GetEmbedToken(Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId)
{
    PowerBIClient pbiClient = this.GetPowerBIClient();
    // 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 } // Only in cases of RLS
    );
    // Generate an embed token
    var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest);
    return embedToken;
}

Use o token de incorporação para incorporar o relatório em seu aplicativo ou site. Seu relatório filtrará os dados de acordo com a RLS aplicada no relatório.