对象级安全性

  • 版本 :2023.1(当前版本)

对象级安全性

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

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

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

先决条件

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

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

  • Cloud OLS

  • 使用 OLS 角色的对 Azure Analysis Services 的实时连接报表

  • 使用 OLS 角色的对 SQL Server Analysis Services 的实时连接报表

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

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

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

  • Cloud OLS

  • SQL Server Analysis Services (SSAS)

  • Azure AD

以下示例显示如何使用 OLS 生成令牌来隐藏包含敏感信息的表:

C#

public EmbedToken GetEmbedToken(Guid reportId, IList datasetIds, [Optional] Guid targetWorkspaceId)
{
PowerBIClient pbiClient = this.GetPowerBIClient(); // Defines the user identity and roles.
var olsIdentity = new EffectiveIdentity(
username: "All",
roles: new Liststring>{ "SensitiveTableOLS" }, // Role created to hide a table that has sensitive information
datasets: new Liststring>{ datasetId.ToString()}
);
// Create a request for getting an embed token for the OLS identity defined above
var tokenRequest = new GenerateTokenRequestV2(
reports: new List() { new GenerateTokenRequestV2Report(reportId) },
datasets: datasetIds.Select(datasetId => new GenerateTokenRequestV2Dataset(datasetId.ToString())).ToList(),
targetWorkspaces: targetWorkspaceId != Guid.Empty ? new List() { new GenerateTokenRequestV2TargetWorkspace(targetWorkspaceId) } : null,
identities: new List { olsIdentity }
); // Generate an embed token
var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest); return embedToken;
}