見出し画像

 【AWS】QuickSightの行レベル制限がよくわからず、苦戦したお話

概要

AWSのQuickSightを使う機会がありました。
BIツールとして非常に有用ですし、行レベルでの表示制御もできるという事を知って、ユーザーや会社単位で表示するデータを制限するといったケースにも柔軟に対応ができそうなところがすごく良いと思ったので、さっそく行レベルの表示制御を試してみたのですが、ものすごくはまりました。
私の理解力が無いせいか公式ドキュメント読んでも良くわからず、試行錯誤の末に解決できたので、備忘録として残しておきます
※QuickSight初心者なので、そもそももっと別の方法で対応をした方が良いなどのご意見もあるかと思うのですが、素人なので、そのあたりはご容赦ください。。。

問題

AWSの公式ドキュメントがこちらとなります。
きっとわかる人にはわかると思うので、公式ドキュメントのリンクもこちらに記載しておきます。

では、実際に触ってみたことを下記でまとめていきます

準備

1.QuickSightに表示するデータを作成します

今回はこのようなファイルを用意しました。
このデータの中の「会社名」という項目をユーザー・グループ単位で表示制御すると想定します。
例えば 特定ユーザーの人には、会社名が「Company1」という行だけ見せるといったような制御をするケースを想定してお話を進めていきます

2.QuickSightでユーザーを作成(招待)します
| No | ユーザー名(クイックサイト上のユーザー名) | グループ名(クイックサイト上のグループ名) | 
| --- | --- | --- |
| 1 |  test-tarou |  Company1-Group |
| 2 |  test-hanako |  Company2-Group |
| 3 |  test-ichiro |  Company3-Group |
今回は管理者の他に上記のような3人のユーザーを招待する形でまとめてみます
※メールアドレスはなんでも良いです。重要なのは、ユーザー名・グループ名です

上記表のユーザー名とは、クイックサイトの表示上は  Usernameという項目のことを指しています。  
公式サイトにユーザーに関して詳しく書いている部分がありますので、下記ご参照ください

上記表のグループ名とは、クイックサイトの表示上は  Group nameという項目のことを指しています。  
公式サイトにグループに関して詳しく書いている部分がありますので、下記ご参照ください

ユーザー名・グループ名ともに、後続の手順の中で利用する重要な情報となりますので、しっかりと抑えておいてください。

3.1の手順で準備をしたデータの表示制御を指定するための情報を作成します

今回はこのようなファイルを用意しました。
簡単にファイルの説明をします。

まず、ヘッダーに「UserName」「GroupName」「会社名」という3つの項目を定義していますが、それぞれどう使うのか触れていきます。

■ヘッダー項目についての説明
UserName : QuickSight上のユーザー名を指定してください。ここで指定をしているユーザーへのデータ制御になります。空文字にしている場合は、ユーザー名での制御はしないという指定になります。このヘッダー項目名はQuickSight側の仕様となりますので、ご自身で勝手に変更することができません。間違えるとエラーのもととなりますので、ご注意ください。

GroupName : QuickSight上のグループ名を指定してください。ここで指定をしているグループに対してのデータ制御の指定になります。空文字にしている場合は、グループ名での制御はしないという指定になります。このヘッダー項目名はQuickSight側の仕様となりますので、ご自身で勝手に変更することができません。間違えるとエラーのもととなりますので、ご注意ください。

会社名:この項目は、ご自身で準備をしたデータのヘッダーに依存をします。今回は手順1で用意をしたファイルの中に同じ「会社名」という項目を定義していますので、その項目で表示制御をするというものになります。

■今回用意したテストデータを用いての説明
ここからは、今回用意したファイルを使って少し詳しく説明します。
今回手順3で用意をしたファイルの1行目は下記のような制御になります。
ユーザー名が、「test-tarou」というユーザーは、会社名が、「Company1」となっているデータしか見せませんという指定になります。

続けて2行目ですが、こちらは下記のような指定になります。
グループ名が、「Company2-Group」というグループに所属をしているユーザーは、会社名が、「Company2」となっているデータしか見せませんという指定になります。

こういった形で、ユーザー単位・グループ単位での表示制御が容易にできます。
会社名以外の項目で表示制御をしたい場合は、ヘッダーを表示制御した項目に変更をして条件を適宜変えてみるとよいです。

例えば、コメントという項目で表示制御をしたい場合は、こういったファイルを用意すると良いです。

この場合は、ユーザー名が、「test-tarou」で、コメントが、「売り上げ結構あったぜ」となっているデータしか見えないことになります。

ここまで準備ができたらあとは実際のコンソール作業になります。

コンソール上の作業

※ここの部分はいったんテキストでまとめますが、時間があれば、キャプチャはります。自分用のメモなので、ご容赦ください。何かご質問があればコメントください
事前準備は終わっているものとします。

  1. QuickSightを開きます

  2. 新しいデータセットから事前準備1のファイルをアップロードします。→そのまま編集をせずに閉じて頂いても編集をしていただいても大丈夫です。

  3. 新しいデータセットから事前準備3のファイルをアップロードします。→こちらは、編集をせずに閉じて頂いた方が無難です。

  4. データセットの画面を開いて、手順2のファイルの行をマウスオーバーすると右側に「・・・」という項目があるので、そこを選択して、行レベルのセキュリティを選択します。

  5. ユーザーベースのルールを開くと、選択されたデータセットのルールという欄に、手順3でアップロードしたファイルを選択してください。

  6. データセットの適用というボタンを押下します。

  7. 適用とアクティベートを押下します。

  8. 選択されたデータセットのルールの真下に赤文字でエラーのような文章が表示されなければ、対応は完了です。

この手順を実施すると、事前準備3で用意をしたファイルの条件に従って、ダッシュボードなどのデータが自動的に制御されることになります。

終わりに

権限管理といえば、自作のアプリでというイメージですが、行レベルでここまでの制御ができると自作をして柔軟にということを考えなくてもよくなりますね。
仕事を奪われていくようで、恐ろしいです。
一方で、便利に変わっていくのは、いいことだと思うので、ちゃんと使えるように勉強していって使いこなしたいですね。頭悪いので、勉強に時間はかかるのですが、、、

なぜか、noteで表差し込めるという記載方法色々調べて試したけど、なぜかうまくいきませんでした。つらい

今回はこのあたりで!
ではでは!

この記事が気に入ったらサポートをしてみませんか?