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 adicioná-la customData à função.

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

    Uma captura de tela da criação de uma nova função no servidor do Analysis Services.

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

    Uma captura de tela mostrando dar um novo nome a uma nova função e defini-la como somente leitura, nas configurações gerais do servidor do Analysis Services.

  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.

    Uma captura de tela da adição de usuários a uma nova função no servidor do Analysis Services.

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

    Uma captura de tela mostrando como adicionar a função customData à consulta DAX em uma nova função no servidor do Analysis Services.

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.