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 customData
o . 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.
Crie uma função no servidor do Analysis Services.
Nas configurações Gerais, forneça um Nome da Função e defina as permissões do banco de dados como Somente leitura.
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.
Nas configurações de filtros de linha, defina sua consulta DAX usando a
CUSTOMDATA()
função.
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.
- Token de incorporação do usuário mestre
- Token de incorporação da entidade de serviço ou do perfil da entidade de serviço
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.