Redash でひとつのクエリを admin グループ所属ではない複数のユーザーで編集するための設定

TL;DR

実験的な機能として、環境変数 REDASH_FEATURE_SHOW_PERMISSIONS_CONTROLtrue にすると、クエリー作成者のクエリー編集画面のメニューに Manage Permissions が表示されるようになり、作成者以外にも編集権限を付与できるので、複数人でクエリーを編集できる。

検証環境の前提

  • Redash v8.0.0(v4.0.1でも確認済み)
  • ユーザー
    • admin
    • user1
    • user2
  • グループ
    • admin
      • admin ユーザーのみが所属
    • default
      • すべてのユーザーが所属
  • データソース

環境変数の設定

Docker Compose で Redash の環境を構築している場合、environment に以下の設定を追加する

REDASH_FEATURE_SHOW_PERMISSIONS_CONTROL: "true"

Redash v6.0.0 以降では、admin 権限を持つユーザーであれば、Settings の画面から設定を切り替えることもできる。

f:id:ariarijp:20210426225136p:plain

使い方

user1 での作業

新規クエリーを作成する。作成したクエリーの ID は 1 とする。

f:id:ariarijp:20210426225544p:plain

クエリーエディター右上のメニューから Manage Permissions を選択する。

f:id:ariarijp:20210426225636p:plain

クエリーの権限設定の画面が表示されるので、user2 に権限を追加する。

f:id:ariarijp:20210426225726p:plain

user2 での作業

クエリー一覧などから、user2 でクエリー ID 1のクエリーにアクセスする。v4.0.1 では user2 のクエリー一覧に表示されないが、URL を直接指定してアクセスすることはできる。

クエリーが表示できたら、Edit Source をクリックすると、環境変数設定前は作成者か admin グループ所属ユーザーでなければ表示されない Save ボタンが表示されるので、user2 でクエリーを変更し保存・実行してみる。

f:id:ariarijp:20210426230232p:plain

user2 はクエリーの所有者ではないため、クエリーエディター右上のメニューには Manage Permissions が表示されない。

f:id:ariarijp:20210426230318p:plain

仕組み

access_permissions というテーブルに以下のようなレコードが挿入される。

f:id:ariarijp:20210426231111p:plain

詳細な実装までは追っていないが、Redash がクエリーの編集権限を確認する際、(管理者または所有者)またはアクセス権を持っている(=access_permissions テーブルにレコードがある)ことを条件としているため、管理者・所有者以外のユーザーでも編集操作を許可されているようだ。

注意点

私が調べた限り、権限割当後に REDASH_FEATURE_SHOW_PERMISSIONS_CONTROLfalse にしても、access_permissions にはレコードが残り続けるため、権限を剥奪は REDASH_FEATURE_SHOW_PERMISSIONS_CONTROLtrue にした状態で、所有者が明示的に行う必要がある。

まとめ

実験的な機能であるため、本番導入時には事前の検証や、Redash の DB バックアップ取得をおすすめするが、管理者権限がなくても複数人でクエリーを編集できるメリットは大きいので、興味があれば試してみてほしい。

Happy Redash-ing!