对象级安全性

适用范围:️ 应用拥有数据 用户拥有数据

本文介绍如何在 Power BI 应用拥有数据(为客户嵌入)场景中嵌入使用 OLS 的 Power BI 内容。

在此场景中,ISV 有一个表,其中包含要对报表客户隐藏的敏感数据和元数据。

有关 OLS 的详细信息,请转到对象级别安全性 (OLS)

先决条件

本文假设你有一个使用 OLS 的报表,并希望将其嵌入到应用中。 若要创建使用 OLS 的报表,请参阅对象级别安全性 (OLS)

报表可使用以下任一模型生成:

嵌入具有对象级安全性的报表

为使用 OLS 的项生成嵌入令牌的过程与静态 RLS 的过程相同。 你需要角色和用户名。

如果要嵌入的报表使用的是以下方案之一,则可能需要执行一些额外的步骤:

以下示例显示如何使用 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;
    }

注意事项和限制

请参阅 OLS 模型的限制

Azure Analysis Services 中的对象级安全性

更多问题? 尝试咨询 Power BI 社区