埋め込みのページ分割されたレポートでの行レベルのセキュリティの実装

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

この記事では、RLS (行レベルのセキュリティ) を使用した改ページ対応レポートを "アプリ所有データ" アプリケーションに埋め込む方法について説明します。

Note

この記事は、アプリ所有のデータ顧客にのみ関連があります。

改ページ対応レポート用に RLS を使用するには:

  1. 環境を設定してレポートをフィルター処理する
  2. レポートまたはクエリ レベルでデータをフィルター処理する
  3. 埋め込みトークンを使用して構成済みのパラメーターを渡す

前提条件

  • この記事では、Power BI 改ページ対応レポートを埋め込む方法を知っていることを前提としています。 埋め込みトークンを生成して、ユーザーがアクセス許可を持っているもののみをレポートに表示する方法について説明します。

  • ページ分割されたレポートは、Power BI (Analysis Services) エンジンではなく、SQL Server Reporting Services エンジンを使用して作成されるため、RLS フィルター処理は Power BI Report Builder で設定されます。

環境をセットアップする

Power BI 改ページ対応レポートに行レベルのセキュリティを適用するには、組み込みのフィールド UserID を使用してパラメーターを割り当てます。 このパラメーターは、フィルター処理やデータのクエリを行うために使用されます。

次に、埋め込みトークン - トークンの生成 API に UserID を渡して、埋め込みトークンを取得します

レポートまたはクエリのレベルで UserID をフィルターとして使用する

UserId は、"フィルター" として使用したり、データ ソースに対する "クエリ" で使用したりできます。

データをフィルター処理する

  1. [Semantic model Properties] (セマンティック モデルのプロパティ) ウィンドウの左側のペインで、[フィルター] を選択します。

    Power BI Report Builder フィルターのスクリーンショット。

  2. [式] ドロップダウン メニューで、データのフィルター処理に使用するパラメーターを選択します。

    スクリーンショットには、[式] メニューで選択された値 Color が示されています。

  3. [値] 関数ボタンをクリックします。

    Power BI レポート ビルダーでの値

  4. [式] ウィンドウの [カテゴリ] の一覧で、 [組み込みフィールド] を選択します。

    スクリーンショットには、[カテゴリ] として [組み込みフィールド] が選択され、[項目] として ExecutionTime が選択されている [式] ウィンドウが示されています。

  5. [アイテム] の一覧で [UserID] を選択し、[OK] を選択します。

    Power BI レポート ビルダーでの UserID

  6. [Semantic model Properties] (セマンティック モデルのプロパティ) ウィンドウで、式が "<選択したパラメーター> = UserID" であることを確認し、[OK] を選択します。

    Power BI Report Builder のセマンティック モデルのプロパティ

クエリの使用

  1. [Semantic model Properties] (セマンティック モデルのプロパティ) ウィンドウの左側のナビゲーション ウィンドウで [パラメーター] を選択し、[追加] を選択します。

    Power BI レポート ビルダーでのパラメーター

  2. [パラメーター名] フィールドに「@UserID」と入力し、[パラメーター値][&UserID] を追加します。

    Power BI レポート ビルダーでのパラメーター名

  3. 左側のペインで、[クエリ] を選択し、[クエリ] で UserID パラメーターをクエリの一部として追加し、[OK] を選択します。

    Note

    下のスクリーンショットでは、color パラメーターが例として使用されています (WHERE FinalTable.Color = @UserID)。 必要に応じて、より複雑なクエリを作成できます。

    Power BI レポート ビルダーでのクエリの編集

埋め込みトークンを生成する

顧客向けの改ページ対応レポートを埋め込むときに、Reports GenerateTokenInGroup API を使用して、埋め込みトークンを取得します。 このトークンを使って、改ページ対応レポートからデータの一部をフィルターで除外することもできます。

トークンを生成するには、サービス プリンシパルを使用する必要があります。 マスター ユーザーとしてトークンを生成することはできません。 そのサービス プリンシパルは、Power BI サービス内のワークスペースに対して少なくともメンバーのアクセス許可を持っている必要があります。 (サービス プリンシパルが共同作成者または閲覧者の場合、トークンを生成することはできません)。

トークンを生成するには、表示する情報を username フィールドに割り当てます。 たとえば、color パラメーターを持つ改ページ対応レポートで、username フィールドに「green」と入力すると、埋め込みトークンによって、color 列の値が green であるデータのみに埋め込みデータが制限されます。

{
 "reports": [
 {
  "id": "8d57615e-cfed-4d60-bd21-7dc05727193c"
 }
 ],
 "identities": [
 {
  "username": "green",
  "reports": [
  "8d57615e-cfed-4d60-bd21-7dc05727193c"
  ]
 }
 ]
}

Note

user-id を指定せずに埋め込みトークンを生成する場合は、サービス プリンシパルの object-id が使用されます。

考慮事項と制限事項

  • マスター ユーザーは、"顧客向けの埋め込み" 用の改ページ対応レポートではサポートされていません。 マスター ユーザー、組織向けの埋め込みではサポート "されています"。
  • サービス プリンシパルには、少なくともメンバーまたは (閲覧者または共同作成者ではない) ワークスペースのアクセス許可が必要です。

埋め込みトークンを生成する