Power BI RLS(行レベルセキュリティ)の設定方法|部門・地域別のデータ表示制限を静的・動的で実装する
広告
Power BIのレポートをチームに共有したとき、「東京の営業担当者には東京のデータだけ見せたい」「各部門のマネージャーに自分の部門の数値だけ表示したい」——こうした要件を実現するのがRLS(行レベルセキュリティ / Row-Level Security)です。
この記事では、RLSの概念から静的RLS・動的RLSの設定手順、テスト方法、よくある落とし穴まで初心者向けに解説します。
この記事でわかること
・RLSとは何か・どんな場面で使うか
・静的RLSと動的RLSの違いと使い分け
・静的RLSの設定手順(ロール作成・DAXフィルター・メンバー割り当て)
・動的RLS(USERPRINCIPALNAME()方式)の設定手順
・「ロールとして表示」でRLSをテストする方法
・よくある落とし穴と注意事項
・RLSとは何か・どんな場面で使うか
・静的RLSと動的RLSの違いと使い分け
・静的RLSの設定手順(ロール作成・DAXフィルター・メンバー割り当て)
・動的RLS(USERPRINCIPALNAME()方式)の設定手順
・「ロールとして表示」でRLSをテストする方法
・よくある落とし穴と注意事項
広告
RLS(行レベルセキュリティ)とは何か
RLSとは、Power BI Serviceで共有されたレポートにおいて、ログインしたユーザーに応じて表示されるデータの行を自動的に絞り込む機能です。
たとえば同じ「売上レポート」を共有していても:
- 東京営業部のAさんには → 東京のデータのみ表示
- 大阪営業部のBさんには → 大阪のデータのみ表示
- 全国マネージャーのCさんには → 全データが表示
という制御が1つのレポートで実現できます。
💡 RLSはレポートレベルではなく「データモデル(セマンティックモデル)」レベルのセキュリティです。RLSを設定すると、ダッシュボード・レポート・Excelからの接続すべてに同じ制限が適用されます。レポートを非公開にするだけでは不十分な場合にRLSを使います。
静的RLSと動的RLSの違い
| 種類 | 仕組み | 向いている場面 | 管理のしやすさ |
|---|---|---|---|
| 静的RLS | ロールごとに固定のDAX条件を設定(例:「東京ロール」は [地域]=”東京”) | 地域・部門の数が少ない・変わりにくい組織 | シンプルだが、ロール数が増えると管理が煩雑 |
| 動的RLS | ユーザーのログイン情報(メールアドレス)に応じてデータを自動フィルター(マッピングテーブルを使用) | ユーザー数が多い・人事異動で担当が変わる組織 | マッピングテーブルを更新するだけで対応できる |
RLS設定の全体の流れ
- Power BI Desktopでロールを作成し、DAXフィルターを設定する
- レポートをPower BI Serviceに発行する
- Power BI Serviceでロールにメンバー(ユーザー)を割り当てる
静的RLSの設定手順
ステップ1:ロールを作成してDAXフィルターを設定する(Power BI Desktop)
- Power BI Desktopで「モデリング」タブ → 「ロールの管理」をクリック
- 「ロールの作成」をクリックしてロール名を入力(例:「東京営業部」)
- フィルターをかけるテーブルを選択(例:売上データテーブル)
- DAXフィルター式を入力(例:
[地域] = "東京") - 同様に他の地域のロールも作成(「大阪営業部」「名古屋営業部」など)
- 「保存」をクリック
✅ DAXフィルターはTRUE/FALSEを返す式で書きます。
[地域] = "東京" と入力すると、「地域列が東京に一致する行だけを表示する」という意味になります。複数条件の場合は [地域] = "東京" || [地域] = "神奈川" のようにOR条件で書けます。ステップ2:レポートをPower BI Serviceに発行する
ホームリボンの「発行」からPower BI Serviceに発行します。
ステップ3:ロールにメンバーを割り当てる(Power BI Service)
- Power BI Service(ブラウザ)でワークスペースを開く
- 発行したセマンティックモデルの「・・・」→「セキュリティ」をクリック
- ロール一覧から「東京営業部」を選択
- 「ユーザーの追加」欄に東京営業部のメンバーのメールアドレスを入力
- 「追加」→「保存」をクリック
- 他のロールにも同様にメンバーを追加
🔴 重要な注意:ワークスペースの「管理者」「メンバー」「共同作成者」ロールを持つユーザーにはRLSが適用されません。これらのロールを持つユーザーは常に全データが見えます。RLSを適用したいユーザーはワークスペースの「ビューアー」ロールで追加するか、アプリとして配布する必要があります。
動的RLSの設定手順(USERPRINCIPALNAME方式)
動的RLSはユーザーのメールアドレスとデータの対応関係を「マッピングテーブル」として管理します。
ステップ1:マッピングテーブルを準備する
ExcelなどでユーザーのUPNと表示許可の対応テーブルを作成します。
| UserEmail(UPN) | 地域 |
|---|---|
| tanaka@company.com | 東京 |
| suzuki@company.com | 大阪 |
| yamada@company.com | 東京 |
| manager@company.com | (全国マネージャーは別ロール) |
ステップ2:マッピングテーブルをPower BIに取り込んでリレーションシップを設定する
- マッピングテーブルをPower BIに取り込む
- マッピングテーブルの「地域」列と、売上データテーブルの「地域」列をリレーションシップで紐づける
ステップ3:動的RLS用のロールを作成する
- 「モデリング」→「ロールの管理」→「ロールの作成」
- ロール名を入力(例:「動的RLS」)
- マッピングテーブルを選択し、DAXフィルター式を入力:
LOWER([UserEmail]) = LOWER(USERPRINCIPALNAME())
- 「保存」をクリック
💡 USERPRINCIPALNAME()とは:現在ログインしているユーザーのUPN(メールアドレス形式のユーザーID)を返すDAX関数です。
LOWER()で大文字・小文字を統一することで、メールアドレスの大文字・小文字の違いによる不一致を防ぎます。ステップ4:Service側でロールにメンバーを追加する
動的RLSの場合、ロールに「このロールを使う全ユーザー」をまとめて追加します。個別の地域設定はマッピングテーブルで管理するため、ロールのメンバー管理はシンプルです。
RLSをテストする方法
Power BI Desktop でのテスト
- 「モデリング」タブ → 「ロールとして表示」をクリック
- テストしたいロールにチェックを入れる
- 動的RLSのテストは「その他のユーザー」にチェックを入れ、メールアドレスを入力
- 「OK」をクリックするとそのロール・ユーザーとして見えるデータが確認できる
- 確認後は「ロールとして表示」のバーにある「×」をクリックして解除
Power BI Service でのテスト
- セマンティックモデルの「・・・」→「セキュリティ」を開く
- テストしたいロールの「テスト」をクリック
- そのロールで見えるレポートが表示される
よくある落とし穴と注意事項
| 落とし穴 | 説明と対処法 |
|---|---|
| 管理者・メンバーにRLSが効かない | ワークスペースの「管理者」「メンバー」「共同作成者」にはRLSが適用されない。RLS対象ユーザーは「ビューアー」で追加するかアプリとして配布する |
| USERNAME()とUSERPRINCIPALNAME()の混同 | クラウド環境ではUSERPRINCIPALNAME()(メールアドレス形式)が推奨。USERNAME()はオンプレミスや環境によって「ドメインユーザー名」形式で返ることがある |
| 大文字・小文字の不一致 | メールアドレスの大文字小文字が一致しないとRLSが効かない。LOWER()で統一するか、マッピングテーブルのUPNを一定の形式に揃える |
| マッピングテーブルにいないユーザーは全データが見える | 動的RLSでマッピングテーブルに登録されていないユーザーはフィルターが当たらず全データが見えることがある。デフォルトで空のデータを返すようにDAXを設計するか、全ユーザーを必ず登録する運用ルールを設ける |
| ロールを発行したのにServiceで設定が見つからない | Power BI DesktopでRLSを設定した後は必ず再発行(上書き発行)する必要がある |
静的RLS vs 動的RLS:どちらを選ぶか
| 状況 | 推奨 |
|---|---|
| 地域・部門が3〜5種類で固定 | 静的RLS(シンプルで管理しやすい) |
| 社員が多く、担当地域が変わることがある | 動的RLS(マッピングテーブルの更新だけで対応) |
| 「自分のデータだけ見える」営業個人レポート | 動的RLS(USERPRINCIPALNAME()で自動制御) |
| 全国マネージャーは全データを見たい | 静的RLS・動的RLSを問わず専用ロールを作成(フィルターなし) |
RLSはPower BIでセキュアなデータ共有を実現する重要な機能です。「誰に何のデータを見せていいか」をきちんと設計してから実装することが、運用ミスを防ぐ最大のポイントです。まず静的RLSでシンプルな地域別制限から試してみましょう。
ABOUT ME
広告







