よしたく blog

ITエンジニアとして自分が知らなかったことをまとめています

Power BIで行レベルセキュリティ(RLS)を設定する

Power BIにて、「同じレポートを見せたいが、表示するデータは変えたい」といったことがある。例えば、北海道の営業部と沖縄の営業部で同じ形のレポートを表示したいが、データは北海道と沖縄のものにしたいということになる。もちろん最終的には、北海道と沖縄で表示されているデータは違うので、拠点ごとに別のレポートを作成したとしても同じ結果が得られる。

しかし、管理の視点でいうと、各拠点ごとにレポートを作成されると大変なことになる。例に出した、北海道と沖縄に続いて東京と大阪が入ってきたとしたら管理するレポートは4つになる。エリアマネージャーのような役割を持っている人だと、これが拠点ごとに増えていくイメージになる。このレポートが増えていく現状を、データの行レベルで管理していく機能が行レベルセキュリティ(RLS)になる。

今回は行レベルセキュリティ(RLS)を設定してみる。

サンプルデータを読み込む

まずはPowerBIを起動して、サンプルデータを取得する。 「サンプルデータを取得する」をクリックする。 f:id:yoshitaku_jp:20210123084055p:plain

「サンプルデータを読み込む」をクリックする。

f:id:yoshitaku_jp:20210123084122p:plain

「financials」にチェックを入れ、「読み込む」をクリックする。

f:id:yoshitaku_jp:20210123084149p:plain

一番右に表示されている「フィールド」に読み込んだ「financials」が表示されていれば、正常に読み込めている。

f:id:yoshitaku_jp:20210123084341p:plain

ここでは「積み上げ横棒グラフ」を選択する。

f:id:yoshitaku_jp:20210123085438p:plain

軸に「Country」、値に「Sales」を設定するとグラフが表示される。今は行レベルセキュリティ(RLS)の設定をしていないのですべて表示されている。

f:id:yoshitaku_jp:20210123085635p:plain

ロールを設定する

今は「レポート」の画面にいるので、「モデル」に移動する。

f:id:yoshitaku_jp:20210123090108p:plain

「ロールの管理」をクリックする。

f:id:yoshitaku_jp:20210123090211p:plain

ロールの管理を作成する。 次の値を入力し、保存する。

ロール テーブル テーブルフィルターのDAX
Europe financials [Country] in {"France","Germany"}

f:id:yoshitaku_jp:20210123090741p:plain

f:id:yoshitaku_jp:20210123090816p:plain

表示方法を使用すると、ロールごとの表示をプレビューのような形で確認することができる。 表示方法をクリックして、さきほど作成した「Europe」ロールにチェックを入れOKをクリックする。

f:id:yoshitaku_jp:20210123091046p:plain

f:id:yoshitaku_jp:20210123091213p:plain

設定すると現在の表示がEuropeロールであることが明示される。とても親切で嬉しい。

f:id:yoshitaku_jp:20210123091231p:plain

これでレポートの画面に戻ると、表示されている値が絞られていることがわかる

f:id:yoshitaku_jp:20210123091626p:plain

レポートを発行する

レポート画面から「発行」をクリックし、Power BI Serviceにレポートを発行する。「Power BIで RLS.pbix(保存したときのファイル名)を開く」をクリックするとブラウザが立ち上がる。

f:id:yoshitaku_jp:20210123094519p:plain

レポートが表示されるが、マイワークスペースに移動し、先ほど作成したレポートがあることを確認する。 f:id:yoshitaku_jp:20210123095014p:plain

「データセット」の右にある「・・・」をクリックし、セキュリティをクリックする

f:id:yoshitaku_jp:20210123095038p:plain

Power BI Desktopで作成した「Europe」ロールを確認できる。 このロールに対応したメンバーを追加し、設定が完了となる。

f:id:yoshitaku_jp:20210123095147p:plain

まとめ

今回はPower BIにて行レベルセキュリティを設定する方法を自身で実施しまとめた。 実施したところ、Power BI Desktopでロールの外側となる部分を設定し、Power BI Serviceでユーザ追加などの中身を設定していくイメージを持った。 ユーザ情報をローカルに持ってくることはないので、このような実装順序になることは当然のような気もするが、初見ではPower BI Desktopで全部できると思っていたので確認できてよかった。

まだまだ日本語のドキュメントだったり、解説したエントリが少ないので参考になれば幸いです。

参考

docs.microsoft.com

qiita.com

qiita.com

frogwell.co.jp