埋め込みのページ分割されたレポートでの行レベルのセキュリティの実装
適用対象: アプリ所有データ ユーザー所有データ
この記事では、RLS (行レベルのセキュリティ) を使用した改ページ対応レポートを "アプリ所有データ" アプリケーションに埋め込む方法について説明します。
Note
この記事は、アプリ所有のデータ顧客にのみ関連があります。
改ページ対応レポート用に RLS を使用するには:
- 環境を設定してレポートをフィルター処理する
- レポートまたはクエリ レベルでデータをフィルター処理する
- 埋め込みトークンを使用して構成済みのパラメーターを渡す
前提条件
この記事では、Power BI 改ページ対応レポートを埋め込む方法を知っていることを前提としています。 埋め込みトークンを生成して、ユーザーがアクセス許可を持っているもののみをレポートに表示する方法について説明します。
ページ分割されたレポートは、Power BI (Analysis Services) エンジンではなく、SQL Server Reporting Services エンジンを使用して作成されるため、RLS フィルター処理は Power BI Report Builder で設定されます。
環境をセットアップする
Power BI 改ページ対応レポートに行レベルのセキュリティを適用するには、組み込みのフィールド UserID を使用してパラメーターを割り当てます。 このパラメーターは、フィルター処理やデータのクエリを行うために使用されます。
次に、埋め込みトークン - トークンの生成 API に UserID を渡して、埋め込みトークンを取得します。
レポートまたはクエリのレベルで UserID をフィルターとして使用する
UserId は、"フィルター" として使用したり、データ ソースに対する "クエリ" で使用したりできます。
データをフィルター処理する
[Semantic model Properties] (セマンティック モデルのプロパティ) ウィンドウの左側のペインで、[フィルター] を選択します。
[式] ドロップダウン メニューで、データのフィルター処理に使用するパラメーターを選択します。
[値] 関数ボタンをクリックします。
[式] ウィンドウの [カテゴリ] の一覧で、 [組み込みフィールド] を選択します。
[アイテム] の一覧で [UserID] を選択し、[OK] を選択します。
[Semantic model Properties] (セマンティック モデルのプロパティ) ウィンドウで、式が "<選択したパラメーター> = UserID" であることを確認し、[OK] を選択します。
クエリの使用
[Semantic model Properties] (セマンティック モデルのプロパティ) ウィンドウの左側のナビゲーション ウィンドウで [パラメーター] を選択し、[追加] を選択します。
[パラメーター名] フィールドに「@UserID」と入力し、[パラメーター値] に [&UserID] を追加します。
左側のペインで、[クエリ] を選択し、[クエリ] で UserID パラメーターをクエリの一部として追加し、[OK] を選択します。
Note
下のスクリーンショットでは、color パラメーターが例として使用されています (WHERE FinalTable.Color = @UserID)。 必要に応じて、より複雑なクエリを作成できます。
埋め込みトークンを生成する
顧客向けの改ページ対応レポートを埋め込むときに、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 が使用されます。
考慮事項と制限事項
- マスター ユーザーは、"顧客向けの埋め込み" 用の改ページ対応レポートではサポートされていません。 マスター ユーザーは、組織向けの埋め込みではサポート "されています"。
- サービス プリンシパルには、少なくともメンバーまたは (閲覧者または共同作成者ではない) ワークスペースのアクセス許可が必要です。