Power Pages の Power BI で行レベルセキュリティを有効にする方法
Power Pages は、 Microsoft Dataverse 展開を Web サイトの形式で一般公開するために迅速に拡張するために最適なツールであるのと同様に、Power BI は、データ駆動型のエレガントなビジュアライゼーションを作成するのに最適なツールです。 Power Platform の美しさは、この 2 つをシームレスに融合できることにあります。 以前は、Power BI レポートを Web ページに表示するには、管理者がレポートを Web に公開し、iFrame に埋め込む必要がありました。 仮に ページ権限 を適用してレポートのあるページをロックしたとしても、レポートを埋め込むためのリンクを個人が持っていれば、誰でも web サイトの外でレポートにアクセスできてしまいます。
Web に公開する の目的は、Web 上のあらゆる個人がデータを利用でき、レポートを再共有できるようにすることです。
警告
Web に公開 を使用すると、ご自身が公開したレポートまたはビジュアルをインターネット上のすべてのユーザーが表示できます。 閲覧には認証は必要ありません。 これには、レポートが集計する詳細レベルのデータの閲覧も含まれます。 レポートを公開する前に、データや視覚エフェクトを公開しても問題がないかご確認ください。 財産的価値のある情報は公開しないでください。 不確かな場合は、発行する前に組織のポリシーを確認します。
Power BI Embeddedを使用すると、Power BI コンポーネントをコンテキストの形でユーザーに提供したり、フィルター パラメーターを使用して自動フィルターを通過させたりすることができます。また、行レベルのセキュリティ機能を有効にすることで、ユーザが見るべきデータのみを表示することができます。
注意
行レベルのセキュリティーは Power BI Embeddedみ でのみサポートされています。
前提条件
- Microsoft Dataverse 環境と Power Pages Web サイトが展開されたテナント。
- Power BI レポートやダッシュボードを埋め込むための Web ページ。
- 関連するビジネス データは Dataverse に保存されます。
- Power BI Desktop.
- Power BI Embedded コンテンツを公開するための容量。
- テナントのグローバル管理者権限。
- テナント全体管理者 Power BI サービス ワークスペースの管理者ロール。
- 組織、個人の Power BI ワークスペースではありません 。
- Web サイトで登録/認証を有効にします。
シナリオ
あなたはグループ フィットネス スタジオで働いていて、Dataverse グループ フィットネス クラスとその出席状況を追跡します。 グループ フィットネス インストラクターは請負業者として扱われるため、テナントには常駐しません。 あなたの Web サイトは、これらのグループ フィットネス インストラクターがログインして、指導されたクラスの履歴、今後のスケジュール、および出席率を確認するために使用されます。 ただし、全員のクラスではなく、自分自身が教えたクラスのみを表示できる必要があります。
インストラクターは Dataverse の 取引先担当者 レコードで表されます。 Power Pages の Web サイトにアクセスする際、彼らは 取引先担当者 レコードとしてアクセスしています。 Web サイトで見る必要があるデータは、カスタム クラス テーブルから取得されます。 クラス フォームには取引先担当者テーブル用の インストラクター という名前の検索フィールドがあるため、Classesテーブルには連絡先とN*:1の関係があります。
Power Pages ユーザー (取引先担当者) に対して行レベルのセキュリティを機能させるには、取引先担当者 とテーブルの間に直接的な関係がある必要があります。 以下は、このシナリオのデータモデルの例です:
Power BI レポートまたはダッシュボードを構成する
Power BI Desktop で、Power BI レポートまたはダッシュボードを開きます。
双方向フィルタリングを使用するには、Contact とテーブル (このシナリオでは Classes ) の間の関係を変更する必要があります。 これを行うには、左端で モデル タブを選択します。
コンタクト テーブルとレポート データを含むテーブルをリンクする行を選択します。サンプルの場合、クラスについてレポートするので、これはvbd_class になりますす。
関連付けの編集 ウィンドウには 2 つの選択リストがあります。 上部で、レポート対象のテーブル (vbd_class) を選択し、レコードの一意の識別子を持つ列を選択します。
下部の選択リストで、contact テーブルを選択し、 Contact 列を選択します。
カーディナリティは多対1 (*:1) を示します。 クロス フィルター方向 値を 双方に変更します。
OK を選びます。
行レベル セキュリティ (RLS) を実装しているため、ロールを作成する必要があります。 上部の ホーム リボンで、ロールの管理 を選択します。
役割 で 作成 を選択します。 ロール名を付けます。 サンプル シナリオでは、pagesuser を使用しました。
テーブル 列から、contact を選択します。
右側のテキスト ボックスに DAX 式を入力します。
[User Name] = username()
注意
[Username]
フィールドは取引先担当者テーブルに存在し、実際のユーザー名ではありません。 これは、Power Pages によって使用される adx_externalidentity テーブルを参照します。 これには、username() 関数の Power BI に送信される GUID が含まれています。保存を選択し、ファイルを保存します。
ホーム リボンから 発行 を選択します。
自分が所有者となっている、Power Pages 統合で使用される組織ワークスペースを選択します。 選択を選びます。
Power BI 統合の構成
Power BI 統合の設定 を参照して、Power BI 統合に使用する Web サイトを有効にします。
埋め込まれた Power BI レポート
Power Pagesに移動します。 レポートを埋め込む Power Pages Web サイトを見つけて、 編集 を選択して Power Pages デザイン スタジオを開きます。
Pages ワークスペースから、レポートを埋め込む Web ページを選択します。
Web ページの本文にセクションを追加します。
セクション内に追加するコンポーネントを選択するよう求められたら、Power BI アイコンを選択します。
コンポーネントがセクションに入力されたら、左上隅の 編集 Power BI を選択します。
アクセスの種類 を選択します。 次のオプションがあります。
顧客に向けた埋め込み: Power BI ライセンスや Microsoft Entra の ID を持たない外部ユーザーと Power BI を共有できるようにします。
組織用に埋め込む: Microsoft Entra 認証を使用して Power BI からレポートを共有し、内部ユーザーがこれを表示できるようにします。
Web に公開する: これにより、インターネット上の誰もがレポートやデータにアクセスできるようになる。
注意
これが機密情報ではないことを確認してください。
追加情報: Web に公開する
顧客向けの埋め込み を選択します。
レポートまたはダッシュボードを含むワークスペースを選択し、タイプをレポートまたはダッシュボードとして指定して、最後のドロップダウンからレポートまたはダッシュボードを選択します。 これがレポートの場合は、埋め込むページを指定する必要があります。
レポートまたはダッシュボードを埋め込んだコードを表示するには、スタジオの右上隅から コードの編集 を選択します。
メッセージが表示されたら、Visual Studio Code を開く を選択します。 左側の PowerPages (ワークスペース) Power Pages Web サイトの名前には、Web ページへのドロップダウンがあります。 そのセクション内には、.css ファイル、.js ファイル、および HTML コピーが表示されます。 HTML コピー ファイルを使用していることを確認してください。
CTRL + F を選択して
{%
を検索し、Power BI ダッシュボードまたはレポートへの参照を含むコードをすばやく特定できるようにします。{%
タグの開始を示し、言語 Liquid のロジックを作成します。 Liquid は、 Dataverse とユーザーが Web サイト上で操作するものとの間の架け橋となります。 Studio エディターを使用してコンポーネントを埋め込むと、Web ページのソース コード内に液体コードが自動的に作成されます。 Power BI リキッド タグの詳細については、Dataverse リキッド タグ と 追加 Power BI レポート をご覧ください。表示される Liquid コードの全行は次のようになります:
{% powerbi authentication_type:"powerbiembedded" path:"https://app.powerbi.com/groups/00000000-0000-0000-0000-000000000000/reports/00000000-0000-0000-0000-000000000000/ReportSection" %}
Web 用 Visual Studio Code タブを閉じます。
Power Pages デザインスタジオで、埋め込まれた Power BI コンポーネントを選択し、Power BI の編集 を選択します。
下にスクロールして、役割の適用 を true/yesに切り替えます。
ロール テキストボックスに、Power BI Desktop で作成したロールの名前を入力します。
レポートまたはダッシュボードを埋め込んだコードに加えた変更を確認するには、再度スタジオの右上隅から コードの編集 を選択します。
ここで表示される Liquid コードの全行は次のようになります:
{% powerbi authentication_type:"powerbiembedded" path:"https://app.powerbi.com/groups/00000000-0000-0000-0000-000000000000/reports/00000000-0000-0000-0000-000000000001/ReportSection" roles:"pagesuser" %}
Visual Studio Code タブを閉じて、デザインスタジオに戻ります。
右上の 同期 を選択し、プレビュー > デスクトップ を選択して、ブラウザで結果の埋め込みレポートまたはダッシュボードをプレビューします。
レポートをテストするため、ユーザーがサインインしていない状態で、Power Pages Web サイトに移動してもレコードが返されないことから、RLS が適用されていることがわかります:
RLS を適用していない Power BI Desktop からこのレポートを表示すると、全体として複数のレコードがあることがわかりますが、それらは取引先担当者レコードに関連しています。
これをさらにテストするために、関連データを持つ対応する取引先担当者を持つユーザーで Web サイトにログインすると、Web ページには署名したユーザーに関連するレコードのみが表示されます。
まとめ
行レベルのセキュリティを使用する Power BI レポートまたはダッシュボードを Power Pages Web サイトに埋め込みました。
既定ではフィルター ウィンドウが表示されます。 フィルター ペインを非表示にするには JavaScript が必要です。 これを行う手順については、ポータルの Web ページに Power BI レポートまたはダッシュボードを追加する を参照してください。