♾️

【Superset】ユーザーグループごとに閲覧権限を付与する

2023/06/13に公開

はじめに

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を選択し新規追加します。

TablesRolesClauseには'Nintendo'のレコードをそれぞれ指定します。

publisher = 'Nintendo'

確認

ユーザーグループに所属する人でログインし直します。

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

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

Discussion