【Superset】ユーザーグループごとに閲覧権限を付与する
はじめに
Apache Superset で特定のユーザーグループに特定のダッシュボードの特定のレコードのみアクセス権を付与する手順を以下にまとめます。
この記事では、テストデータを使用して手順を説明します。
ダッシュボードを作成する
まずは Superset に用意されているテストデータを準備します。

SQL Labを選択します。
データベースはpostgresql examples、スキーマはpublic、テーブルスキーマはvideo_game_salesを参照します。
今回は以下のようにクエリを書きました。
SELECT "name", "global_sales", "publisher"
FROM "video_game_sales";
データセットには適当に名前をつけておきます。

完成したらCREATE CHARTを押します。

保存を押して、またチャートとダッシュボードに適当な名前をつけます。
SAVE & GO TO NEW DASHBOARDを押します。

赤枠の部分が初めは下書きとなっているので、押して公開にします。
ユーザーグループ(ロール)作成
Superset はロールを作成することで編集権限や閲覧権限を付与できるので、これを利用してロールという名の"ユーザーグループ"を作成します。
Superset にはデフォルトでいくつかロールがあるので、これを参考にロールを作成します。
右上の設定からロール一覧を選択します。

右上の+(プラス)を押してロールを新規追加します。
今回はNintendoの売り上げのみを閲覧できるユーザーグループ(ロール)を作成するので、また適当に名前をつけました。
許可では一番下までスクロールして先ほど作成したものを選択します。

完成したら保存を押します。
ユーザーグループに所属するユーザー作成
先ほど作成したユーザーグループ(ロール)に所属するユーザー作成します。
右上の設定からユーザー覧を選択し新規追加します。

作成したユーザーグループとGammaを指定しました。
Gammaはデフォルトで用意されているロールで、アクセスを許可されたデータソースからのデータのみを閲覧できるロールです。
Row level security filter を作成
作成したダッシュボードの指定したレコードのみを閲覧するためのフィルターを作成します。
右上の設定からRow level securityを選択し新規追加します。

TablesとRoles、Clauseには'Nintendo'のレコードをそれぞれ指定します。
publisher = 'Nintendo'
確認
ユーザーグループに所属する人でログインし直します。

指定されたダッシュボードのみが閲覧できています。

ダッシュボードの中のチャートも'Nintendo'のレコードのみが閲覧できています🎉
Discussion