Redash でひとつのクエリを admin グループ所属ではない複数のユーザーで編集するための設定
TL;DR
実験的な機能として、環境変数 REDASH_FEATURE_SHOW_PERMISSIONS_CONTROL
を true
にすると、クエリー作成者のクエリー編集画面のメニューに Manage Permissions が表示されるようになり、作成者以外にも編集権限を付与できるので、複数人でクエリーを編集できる。
検証環境の前提
- Redash v8.0.0(v4.0.1でも確認済み)
- ユーザー
- admin
- user1
- user2
- グループ
- admin
- admin ユーザーのみが所属
- default
- すべてのユーザーが所属
- admin
- データソース
環境変数の設定
Docker Compose で Redash の環境を構築している場合、environment
に以下の設定を追加する
REDASH_FEATURE_SHOW_PERMISSIONS_CONTROL: "true"
Redash v6.0.0 以降では、admin 権限を持つユーザーであれば、Settings の画面から設定を切り替えることもできる。
使い方
user1 での作業
新規クエリーを作成する。作成したクエリーの ID は 1 とする。
クエリーエディター右上のメニューから Manage Permissions を選択する。
クエリーの権限設定の画面が表示されるので、user2 に権限を追加する。
user2 での作業
クエリー一覧などから、user2 でクエリー ID 1のクエリーにアクセスする。v4.0.1 では user2 のクエリー一覧に表示されないが、URL を直接指定してアクセスすることはできる。
クエリーが表示できたら、Edit Source をクリックすると、環境変数設定前は作成者か admin グループ所属ユーザーでなければ表示されない Save ボタンが表示されるので、user2 でクエリーを変更し保存・実行してみる。
user2 はクエリーの所有者ではないため、クエリーエディター右上のメニューには Manage Permissions が表示されない。
仕組み
access_permissions
というテーブルに以下のようなレコードが挿入される。
詳細な実装までは追っていないが、Redash がクエリーの編集権限を確認する際、(管理者または所有者)またはアクセス権を持っている(=access_permissions
テーブルにレコードがある)ことを条件としているため、管理者・所有者以外のユーザーでも編集操作を許可されているようだ。
注意点
私が調べた限り、権限割当後に REDASH_FEATURE_SHOW_PERMISSIONS_CONTROL
を false
にしても、access_permissions
にはレコードが残り続けるため、権限を剥奪は REDASH_FEATURE_SHOW_PERMISSIONS_CONTROL
を true
にした状態で、所有者が明示的に行う必要がある。
まとめ
実験的な機能であるため、本番導入時には事前の検証や、Redash の DB バックアップ取得をおすすめするが、管理者権限がなくても複数人でクエリーを編集できるメリットは大きいので、興味があれば試してみてほしい。
Happy Redash-ing!