Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
APLICA-SE A: Os dados pertencem ao aplicativo
Os dados pertencem ao usuário
Este artigo explica como inserir um relatório do Power BI que usa dados armazenados no Azure Analysis Services (ASS) em um cenário de inserção para seus clientes. Este artigo destina-se a ISVs (desenvolvedores de software independentes), que desejam inserir um relatório com dados do AAS, quer o banco de dados implemente ou não a RLS (segurança em nível de linha).
Pré-requisitos
Você precisa de um relatório com uma conexão dinâmica com o banco de dados do AAS, com ou sem RLS.
Segurança dinâmica – RLS
Se você quiser que o relatório implemente o RLS dinâmico, use a função customeData. Como você não pode substituir a identidade efetiva, recomendamos criar novas funções com customData. Você também pode usar funções que têm as funções username ou userPrincipalName, se substituí-las por customData.
Siga estas etapas para criar uma nova função e adicionar a função customData à função.
Crie uma função no servidor do Analysis Services.
Nas configurações Geral, forneça um Nome de função e defina as permissões de banco de dados como somente Leitura.
Nas configurações de Membership, adicione os usuários que farão chamadas para a API Embed Token - Generate Token. Se você estiver usando uma entidade de serviço que não seja administradora, adicione-a também.
Nas configurações de Filtros de linha, defina sua consulta DAX usando a função
CUSTOMDATA().
Entidade de serviço
Se você estiver usando uma entidade de serviço para inserir o relatório, verifique se a entidade de serviço é um administrador de servidor ou membro de função da AAS. Para conceder permissões de administrador do AAS à entidade de serviço, confira Adicionar uma entidade de serviço à função de administrador do servidor. Para adicionar a entidade de serviço como membro de função, vá para as Configurações de associação.
Use o ID do objeto de entidade de serviço como nome de usuário (identidade efetiva).
Migração do Analysis Service
Você poderá migrar do AAS para Power BI Premium mesmo se tiver um relatório do AAS inserido. Seu relatório incorporado não deixa de funcionar durante a migração, desde que o principal que chama a API Embed Token - Generate Token seja membro ou administrador do espaço de trabalho.
Observação
Se o service principal não for administrador e você não quiser torná-lo administrador do espaço de trabalho durante a migração, migre esse modelo para um espaço de trabalho separado, onde você possa conceder a ele permissões de administrador.
Gerar um token de inserção
Use a API Generate Token para gerar um token de incorporação que substitui a identidade efetiva.
As informações necessárias para gerar um token de inserçã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 tiver RLS.
- Token de inserção de 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 inserção, forneça as seguintes informações:
- Nome de usuário (opcional se não houver RLS. Obrigatório para RLS) – o nome de usuário deve ser o mesmo que o chamador da API (nesse 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 do usuário e as funções para um dos três seguintes cenários:
- Se o RLS não for implementado:
Você não precisa definir nenhuma identidade eficaz.
Se estiver usando RLS estático:
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âmico:
var rlsidentity = new EffectiveIdentity( // If dynamic RLS username: "username@contoso.com", roles: new List<string>{ "MyRoleWithCustomData" }, customData: "SalesPersonA" datasets: new List<string>{ datasetId.ToString()} )Observação
customDatano token de inserção não pode ter mais de 1.024 caracteres.
Use a identidade efetiva para gerar um token de inserçã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 inserção para inserir o relatório em seu aplicativo ou site. Seu relatório filtra dados de acordo com o RLS aplicado no relatório.