QuickSight 行レベルセキュリティを試してみた

QuickSight 行レベルセキュリティを試してみた

Clock Icon2025.04.02

やりたいこと

現在、QuickSight のユーザーが 2人(管理者ロール1人, 閲覧者ロール1人)います。
スクリーンショット 2025-04-02 15.14.31

そして、以下のようなダッシュボードがあります(作成手順については後述します)。
スクリーンショット 2025-04-02 15.22.19

やりたいことは、管理者ロールのユーザー(以後、管理者ユーザーと呼ぶ)でログインした場合は、TEAM_A の行のみが表示され、
スクリーンショット 2025-04-02 15.26.23

閲覧者ロールのユーザー(以後、閲覧者ユーザーと呼ぶ)でログインした場合は、同じダッシュボードでも、以下のように TEAM_B の行のみが表示されるようにします。
スクリーンショット 2025-04-02 15.27.04

やってみた

以下、管理者ユーザーで作業します。
まず、ダッシュボードを作成するためのサンプルデータセット (CSV) を準備します。

prefecture_dataset.csv
TeamID,prefecture,point
TEAM_A,okinawa,100
TEAM_A,tokyo,200
TEAM_B,osaka,300
TEAM_B,nara,400

上記 CSV を QuickSight へアップロードし、以下のようなテーブルを指定した分析を作成します。
スクリーンショット 2025-04-02 15.47.11

作成した分析をダッシュボードとして公開します。この時点では、全てのデータが見えています。(管理者ユーザーでログイン中)
スクリーンショット 2025-04-02 15.22.19

作成したダッシュボードを閲覧者ユーザーからも見れるように、共有設定をします。
ダッシュボード右上の「共有」アイコンから「ダッシュボードの共有」を選択します。
スクリーンショット 2025-04-02 16.27.51

「ダッシュボードの共有」画面左側の検索バーより、閲覧者ユーザー名を検索、追加します。
スクリーンショット 2025-04-02 16.29.52

追加できました。以下のように「ユーザーとグループ」欄に閲覧者ユーザーが追加されていることがわかります。
スクリーンショット 2025-04-02 16.35.21

追加ができたら、管理者ユーザーをサインアウトし、閲覧者ユーザーでログインしてみます。
サインインすると、以下のように先ほど共有したダッシュボードが表示されています。
スクリーンショット 2025-04-02 16.43.15

ダッシュボードを確認すると、現時点では全てのデータが閲覧できています。(閲覧者ユーザーでログイン中)
スクリーンショット 2025-04-02 15.22.19

行レベルセキュリティ(RLS)の設定

※本項の手順は全て管理者ユーザーで行います。

続いて、行レベルセキュリティ(RLS)の設定を行なっていきます。
まず、アクセス許可データセットファイルを作成します。
これは、各ユーザーがどの行に対してアクセスできるかを決めるものです。
例えば下記のように指定すると、管理者ユーザーは、TeamID カラムが "TEAM_A" の行しか見れなくなり、閲覧者ユーザーは "TEAM_B" のカラムしか見れなくなります。(前述の prefecture_dataset.csv の TeamID カラムと連動しています。)

access_dataset.csv
UserName,TeamID
<管理者ユーザー名>,TEAM_A
<閲覧者ユーザー名>,TEAM_B

上記 CSV ファイルを作成したら、QuickSight にデータセットとしてアップロードしておきます。
スクリーンショット 2025-04-02 17.23.30

続いて、前項にてアップロードした「prefecture_dataset.csv」のデータセットの詳細画面を開き、行レベルセキュリティの「設定」を選びます。
スクリーンショット 2025-04-02 17.26.15

先ほどアップロードしたアクセス許可のデータセット access_dataset.csv を選択します。
スクリーンショット 2025-04-02 17.29.45

設定画面下部にある「データセットへのアクセス権を付与する」にチェックを入れ、右下の「データセットの適用」を選択します。
スクリーンショット 2025-04-02 17.30.34

以下の画面が表示されるので「適用とアクティベート」を選択します。
スクリーンショット 2025-04-02 17.31.29

行レベルセキュリティが有効化されました。
スクリーンショット 2025-04-02 17.44.59

データセットの画面でも鍵アイコンが追加されており、マウスオーバーすると、セキュリティがかかっていることが読み取れます。
スクリーンショット 2025-04-02 17.46.34

動作確認

管理者ユーザーでログインし、ダッシュボードを表示してみます。その結果、"TEAM_A" の行しか表示されていないことがわかります。
スクリーンショット 2025-04-02 15.26.23

管理者ユーザーからサインアウトし、閲覧者ユーザーでログインします。閲覧者ユーザーでは "TEAM_B" の行しか表示されないことがわかります。
スクリーンショット 2025-04-02 15.27.04

終わりに

今回は、QuickSight の行レベルセキュリティ(RLS)について動作確認してみました。
RLS の基本的な設定の仕方の他、RLS を設定した場合、管理者ロールのユーザーであっても制限が適用されることがわかりました。
本記事がお役に立てば幸いです。

参考文献

https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/row-level-security.html

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.