LoginSignup
11
5

More than 1 year has passed since last update.

Power BI で 行レベルセキュリティ(RLS)を実装してみる

Last updated at Posted at 2021-12-13

RLS?

R = Row
L = Level
S = Security

データテーブルの中でログインユーザーに応じて見せるデータ(行)を絞り込むことができる。

例えば

  • 営業担当者本人の売上だけ閲覧できるようにする
  • 担当部署の売上だけ確認できるレポート

こういったレポートを作成するときに、RLSを使用しないで実現させようとすると、担当者の数(部署の数)だけワークスペースを切り分ける必要がでてくるが、RLSを使用すればレポート側でユーザー情報に応じてビジュアライズするデータを絞り込んでくれる。

Let's Try

こんなデータを用意します。
RLS設定前なので全件のデータが見えてしまっています。
担当者がこのレポートを開いたときに、自分の受注実績だけを見せるようにしたいと思います。

image.png

モデリングタブ→セキュリティ→ロールの管理

ロールの管理をクリックします。
image.png

username() または userprincipalname()

ここで特殊?なDAX関数を使用します。

  • username() は DOMAIN\User の形式でユーザーを返す
  • userprincipalname() は user@contoso.com の形式でユーザーを返す

今回はメールアドレスを利用して絞り込みたいので、userprincipalname() を使用します。

image.png

これでほぼ終わりです。簡単ですね!

設定がきちんとできているか確認

今度は 表示方法 クリックします。

image.png

その他のユーザー

その他のユーザーにチェックをいれ、なりすましたいユーザーのメールアドレスを入力します。
先程作成したRLSの設定にもチェックをいれます。

image.png

できた!

image.png

Power BI Service にも発行→動作をチェック

Power BI Service へ発行したら、データセットの3点リーダー内の「セキュリティ」をクリック。

RLSの設定及び適用の確認をする画面にいきます。
ここでテストしたい人のメールアドレスを登録しておきます。

そして今度は設定した項目(今回でいうとMailで絞り込み)の横の3点リーダーをクリック。
ロールとしてテストを実行します。

image.png

image.png

できていますね。

※Power BI Service 上でテストする際には、組織内で有効なメールアドレスでしかチェックできませんでした。ですので、事前にPBDでモデルを作成するときに自分のアドレスを含むように変更しています。
この例だと「小川さよ子」さんに自分のメールアドレスを割り振っています。

image.png

応用すると

メールアドレスをkeyとして、ユーザー情報で絞り込みが可能なので、役職のテーブルがあれば、
マネージャー以上ではないと閲覧できないレポートを作成したりすることもできますね。

詳しくはドキュメントを。

11
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
5