【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