Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
APLICA-SE A: A aplicação possui dados
O utilizador possui dados
Este artigo explica como incorporar conteúdo do Power BI que utiliza RLS numa aplicação padrão do Power BI na qual a aplicação possui os dados.
Pré-requisitos
Para obter uma explicação detalhada sobre como configurar a RLS, consulte Segurança em nível de linha (RLS) com o Power BI.
Ao definir suas funções RLS, lembre-se de que a expressão DAX usada determina se o modelo RLS é estático ou dinâmico.
Quando usar a segurança estática e dinâmica
A segurança estática usa um valor fixo no filtro DAX para definir cada função. É simples de implementar, mas difícil de manter quando há muitos usuários ou organizações envolvidas.
A segurança estática funciona melhor para um ISV que atende a um ou alguns grandes clientes onde cada departamento precisa acessar dados diferentes.
A segurança dinâmica usa uma função DAX (username() ou userprincipalname()) para definir as funções. A segurança dinâmica oferece mais flexibilidade e permite que você gerencie seus dados usando menos funções e menos manutenção.
Segurança estática
Com funções estáticas, você passa a função para o Power BI quando gera um token de incorporação e o usuário vê dados de acordo com essa função. Para criar funções de segurança estáticas, insira um valor fixo no filtro DAX.
Por exemplo, você pode definir o papel do Leste dos EUA como [Region] = "East"
Digamos que john@contoso.com seja um usuário do seu aplicativo. Você quer dar a John acesso aos dados associados ao papel da região Leste dos EUA. Para incorporar um relatório para john@contoso.com, gere um token de incorporação usando o perfil Estados Unidos (Leste). Os dados resultantes são filtrados para [Region] = "East".
Nota
Ao gerar o token de incorporação, você precisa fornecer um nome de usuário, mas o nome de usuário pode ser qualquer cadeia de caracteres. As funções estáticas têm um valor fixo que não depende de um nome de usuário, portanto, uma vez que o ISV determina a função do usuário e a passa para o token de incorporação, os dados são filtrados de acordo com essa função, independentemente do nome de usuário que foi passado.
Segurança dinâmica
A segurança dinâmica usa a função DAX (username() ou userprincipalname()) para definir a função.
No cenário em que o utilizador é proprietário dos dados, o modelo RLS filtra automaticamente os dados com base nos papéis do utilizador específico.
Com dados geridos pela app, o Power BI não sabe os nomes de usuário dos clientes do ISV, por isso, pode assim usar a função username() para filtrar os dados dinamicamente.
Crie uma função no Power BI Desktop usando a função username(). Por exemplo, você pode criar uma função chamada CountryDynamic e defini-la como [CountryRegionCode] = username()
Digamos que você queira dar ao seu usuário, jane@contoso.com, acesso aos dados para a França. Ao gerar um token de incorporação para jane@contoso.com, você passa a string France como o nome de usuário na função CountryDynamic. Os seus dados são filtrados de acordo com [CountryRegionCode] = França.
{
"accessLevel": "View",
"identities": [
{
"username": "France",
"roles": [ "CountryDynamic"],
"datasets": [ "fe0a1aeb-f6a4-4b27-a2d3-b5df3bb28bdc" ]
}
]
}
Ao usar a segurança dinâmica nesse cenário, você só precisa de uma função para todas as regiões. O nome da região é usado como a identidade efetiva.
Gerar um token de incorporação
Quando estiver pronto para incorporar o relatório em seu aplicativo, você precisará gerar um token de incorporação. Para gerar um token usando a API de token incorporado, passe as seguintes informações para a API.
- username (required) – Se as funções forem dinâmicas, a string username será usada como filtro. Para funções estáticas, o nome de usuário não afeta a RLS e pode ser qualquer cadeia de caracteres. Apenas um único nome de usuário pode ser listado.
- roles (required) – A(s) função(ões) usada(s) ao aplicar regras de Segurança em Nível de Linha. Se passar mais de uma função, eles devem ser passados como uma matriz de cadeia de caracteres.
- conjunto de dados (obrigatório) – O conjunto de dados aplicável ao item que você está incorporando.
Agora você pode incorporar o relatório em seu aplicativo. O relatório filtra os dados de acordo com a RLS aplicada.
public EmbedToken GetEmbedToken(Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId)
{
PowerBIClient pbiClient = this.GetPowerBIClient();
// Defines the user identity and roles.
var rlsIdentity = new EffectiveIdentity(
username: "France",
roles: new List<string>{ "CountryDynamic" },
datasets: datasetIds.Select(id => id.ToString()).ToList());
);
// 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 }
);
// Generate an embed token
var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest);
return embedToken;
}
Considerações e limitações
- Dependendo da sua configuração, poderá ter de seguir vários passos antes de poder gerar um token de incorporação. Para obter informações sobre os diferentes cenários, consulte Incorporar um relatório que usa recursos de segurança.
- O usuário que gera o token de incorporação deve ser um membro ou administrador em ambos os espaços de trabalho (o espaço de trabalho do conjunto de dados e o espaço de trabalho de relatório).
- Ao gerar o token de incorporação, você precisa fornecer um nome de usuário e uma função. Se não fizer isso, um dos seguintes eventos ocorrerá, dependendo de o token estar a ser gerado pela entidade de serviço ou pelo utilizador mestre:
- A geração de token falha para um service principal.
- Para um usuário mestre, a geração de token é bem-sucedida, mas os dados não são filtrados (todos os dados são retornados).
Conteúdos relacionados
Mais perguntas? Experimente a Comunidade do Power BI.