オブジェクト レベルのセキュリティ

適用対象: アプリ所有データ ユーザー所有データ

この記事では、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 コミュニティで質問してみてください