Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
APLICA-SE A: A aplicação é proprietária dos dados
O utilizador é proprietário dos 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
Precisas de um relatório com ligação ativa à base 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 sobrepor a identidade efetiva, recomendamos que crie novas funções com customData. Você também pode usar funções que tenham as username funções ou userPrincipalName , se substituí-las por customData.
Siga estes passos para criar um novo perfil e adicionar a função customData ao perfil.
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 definições de Filiação, adicione os utilizadores que irão chamar a API Embed Token - Generate Token. Se estiver a usar um principal de serviço que não seja administrador, adicione-o também.
Nas definições de Filtros de linha, defina a sua consulta DAX utilizando a função
CUSTOMDATA().
Service principal
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 o principal de serviço como membro de uma função, vá para as definições de Afiliaçã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. O teu relatório incorporado não se quebra durante a migração, desde que o principal que chama a API Embed Token - Generate Token seja membro ou administrador do workspace.
Nota
Se o principal de serviço não for administrador, e não quiser torná-lo administrador do espaço de trabalho quando migrar, migre esse modelo para um espaço de trabalho separado onde possa dar-lhe permissões de administrador.
Gerar um token de incorporação
Utilize a API Generate Token para gerar um token de incorporação que substitui a identidade efetiva.
A informação necessária para gerar um token de incorporação depende de como está ligado ao Power BI (principal de serviço ou utilizador principal) e também de a base de dados ter RLS.
- Token de incorporação do utilizador principal
- 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 (obrigatória para RLS) - O relatório só mostra dados se a identidade efetiva for 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 precisas de definir uma identidade eficaz.
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
customDataO token de incorporação não pode ter mais de 1.024 caracteres.
Utilize 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. O seu relatório filtra os dados de acordo com o RLS aplicado no relatório.