对象级安全性
适用范围:️ 应用拥有数据 用户拥有数据
本文介绍如何在 Power BI 应用拥有数据(为客户嵌入)场景中嵌入使用 OLS 的 Power BI 内容。
在此场景中,ISV 有一个表,其中包含要对报表客户隐藏的敏感数据和元数据。
有关 OLS 的详细信息,请转到对象级安全性 (OLS)。
先决条件
本文假设你有一个使用 OLS 的报表,并希望将其嵌入到应用中。 若要创建使用 OLS 的报表,请参阅对象级别安全性 (OLS)。
报表可使用以下任一模型生成:
- Cloud OLS
- 使用 OLS 角色的对 Azure Analysis Services 的实时连接报表
- 使用 OLS 角色的对 SQL Server Analysis Services 的实时连接报表
嵌入具有对象级安全性的报表
为使用 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 社区。