Redashで閲覧権限のみのユーザでもダッシュボードを見られるようにする

redash.io

業務でRedash(v4.0.1)を使い始めたが、今のところなかなか便利なうえ運用も楽なので気に入っている。
ただしwebコンソールでできることがまだまだ限られており、かゆいところに手が届きにくいときもしばしば。

特に権限の設定については、webコンソールでできるのはData Resourceを Full AccessView Only にするかの二択のみ。View Onlyにすると、クエリの作成・編集・実行ができなくなる。
しかし先日、開発チーム以外のユーザをView Onlyのグループに振り分けたところ、なんとダッシュボードを見られなくなってしまっていた。当然だがダッシュボードの裏ではクエリが実行されるので、その権限がないView Onlyユーザは情報を取ってくることができないわけだ。
これではせっかくのデータ活用ができない。かといってFull Access権限を与えるのは不安が残る。

実はRedashには、webコンソールからは操作できない細かな権限設定が用意されている。
CLIで以下のようなコマンドを叩くと、権限を変更することができる。

cd /opt/redash/current
sudo -u redash bin/run ./manage.py groups change_permissions --permissions <設定したい権限名(カンマ区切り)> <DB上のグループID>

グループを作った時点では、権限設定はデフォルトのものとなっている。コードを探すとデフォルトは以下のようになっていた。

DEFAULT_PERMISSIONS = ['create_dashboard', 'create_query', 'edit_dashboard', 'edit_query', 'view_query', 'view_source', 'execute_query', 'list_users', 'schedule_query', 'list_dashboards', 'list_alerts', 'list_data_sources']

View Onlyユーザでもダッシュボードを使えるようにするには、そのグループの権限からcreate_dashboard,create_query,edit_dashboard,edit_queryを外したものを指定すればよい。こうすれば、クエリやダッシュボードの内容を変えることはできないが、execute_query権限は残してあるためクエリの実行はできる。
もし権限の変更を間違えてしまっても、--permissionsオプションなしでコマンドを実行すればデフォルトの権限設定に戻すことができる。

ちなみに、この方法で権限設定を直した翌日に、Redash Meetup 4.0.0に参加したのだが、ほとんど同じ内容が発表されていた。
権限設定で悩んでいる人は意外と多いようなので、CLIに触れてみると少しだけ幸せになれるかもしれない。