Compartilhar via


Segurança em nível de objeto

APLICA-SE A: Aplicativo possui dados O usuário possui dados

Este artigo explica como inserir um conteúdo do Power BI que usa OLS em um cenário do Power BI do tipo O aplicativo tem controle dos dados (inserir para os seus clientes).

Nesse cenário, o ISV tem uma tabela com dados e metadados confidenciais que deseja ocultar dos clientes do relatório.

Para obter mais informações sobre a OLS, acesse Segurança em nível de objeto (OLS).

Pré-requisitos

Este artigo pressupõe que você tenha um relatório que usa OLS e que deseje inseri-lo em um aplicativo. Para criar um relatório que usa a OLS, consulte Segurança no nível do objeto (OLS).

O relatório pode ser criado usando um dos seguintes modelos:

Inserir um relatório que usa segurança no nível do objeto

O processo de gerar tokens de inserção para itens que usam OLS é o mesmo que para a RLS estática. Você precisa da função e do nome de usuário.

Se o relatório que você deseja inserir estiver usando um dos seguintes cenários, talvez seja necessário executar algumas etapas adicionais:

O seguinte exemplo mostra como gerar um token para ocultar uma tabela com informações confidenciais usando OLS:

public EmbedToken GetEmbedToken(Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId)
    {
        PowerBIClient pbiClient = this.GetPowerBIClient();

       // Defines the user identity and roles.
        var olsIdentity = new EffectiveIdentity(
            username: "All",
            roles: new List<string>{ "SensitiveTableOLS" }, // Role created to hide a table that has sensitive information
            datasets: new List<string>{ datasetId.ToString()}
        );
       
        // Create a request for getting an embed token for the OLS 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> { olsIdentity }
        );

        // Generate an embed token
        var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest);

        return embedToken;
    }

Considerações e limitações

Ver restrições para modelos OLS.

Segurança em nível de objeto no Azure Analysis Services

Mais perguntas? Experimente perguntar à Comunidade do Power BI.