以下の話はRedash 6.0.0+b8537の話です。 新しくなったら変わっててほしいところです。
ユーザーごとの権限設定したい
先に言っておくと、
画面からすべてはできません
画面からできること
- ユーザーを作ること
- グループを作ること
- グループとユーザーを紐づけること
この3つのみ
ちなみに、ユーザーに直接権限を付与することはできない。 グループと言われるデータベースでいうロールのようなものに権限を付与して、 それと結び付けるという流れになる。
ところが、である。
上に書いたとおり、グループとユーザーを紐づけることはできるが、 グループに権限を与えたりグループから権限を減らしたりすることは画面からできない。 グループを作るとdefaultという権限が付与されているが、これが結構強い。
- 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
とあって、字面で分かると思うがダッシュボードやクエリを作る権限もあるのでゲストユーザーを作って、 それには見せるだけにしたいというときにちょっとdefaultでは強すぎる。 (あとこれにadmin,super_adminってのもあるけどそれはdefaultの話ではないのでいったん横に置いとく)
権限をグループに付与するには?
コマンドラインでre:dashのグループ、グループ権限を設定してみる の記事を参考にして付与すればいい。
ただし、docker時はどうなの?ということでそこだけちょっと補完。 ユーザー、グループ、その結び付けまでは画面上で行ったものとする (いずれもguestという名前で作った場合)
dockerでのredash権限変更手順
1. rootユーザーでredash serverのコンテナに入る
通常redashユーザで入ることになっちゃうので、
docker exec -it --user root [redash serverのコンテナ名] bash
2. ユーザー一覧表示
bin/run ./manage.py groups list
次のような結果が返ると思う。
Id: 1 Name: admin Type: builtin Organization: default Permissions: [admin,super_admin] Users: administrator -------------------- Id: 2 Name: default Type: builtin Organization: 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] Users: administrator -------------------- Id: 3 Name: guest Type: regular Organization: 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] Users: guest --------------------
guestグループの権限はdefaultグループのそれと同じであり、これだとguestユーザーの権限が強すぎる。
3. グループへの権限付与(はく奪)
bin/run ./manage.py groups change_permissions --permissions <付与パーミッション> <グループ名ID>
で適切な権限を対象グループに付与する
たとえばこんな感じ(guestグループにはcreate_dashboard,create_query,edit_dashboard,edit_queryの4権限を使わせない)
bin/run ./manage.py groups change_permissions --permissions view_query,view_source,execute_query,list_users,schedule_query,list_dashboards,list_alerts,list_data_sources 3
4. ユーザー一覧表示(変更後)
bin/run ./manage.py groups list
次のような結果が返ると思う。
Id: 1 Name: admin Type: builtin Organization: default Permissions: [admin,super_admin] Users: administrator -------------------- Id: 2 Name: default Type: builtin Organization: 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] Users: administrator -------------------- Id: 3 Name: guest Type: regular Organization: default Permissions: [view_query,view_source,execute_query,schedule_query,list_dashboards,list_alerts,list_data_sources] Users: guest --------------------
権限についてはこれで終わりだが…
実はもう一ヵ所触っておかないといけないところがある。 グループのデータソース(Data Sources)である。 Re:dashを使う場合、DB等のデータソースを参照しているはずで、グループを新設した場合ここが空になっている。 これは画面からできるので、 Settings>Groups>[グループ名]>Data Sourcesタブを選択し、 Add Data Sourceをクリックして適当なデータソースを選んで設定してあげる必要がある。
ここまで できたら完了
作ったユーザーで他人が作ったpublishになっているダッシュボードも見えるようになっているはず。
愚痴っぽいこと
権限くらい画面で制御できるようにしてほしいわ。 あと、グループが削除できないのはごみが増えてツライ。