LoginSignup
16
5

More than 3 years have passed since last update.

Redash 認可・権限まとめ

Last updated at Posted at 2020-11-19

Redashの認可についてドキュメントがなく、運用上把握する必要があったためソースコードを読みました。
その内容をここへまとめます。

権限について確認したい方は一番下の表へ

前提

環境

Redash 8.0.0+b32245 (a16f551e)

扱うこと

  • バックエンドでの認可及び権限

扱わないこと

オブジェクト1は、admin or オブジェクトの所有者であれば当然ながらアクセスすることができます。
そのようなケースをここでは扱いません。

また、フロントエンドでの表示の出し分けについても扱いません。

Redashの認可とは

Redashの認可はざっくりと3つあります。

1.WebAPI実行の認可
2.データソースの認可
3.クエリ等オブジェクトの認可

1,2 はグループで、3 はユーザに対して個別で設定することができます。

WebAPIの認可

特定のエンドポイントでは、実行するために権限が必要となります。
この権限はグループに対して設定することができ、グループに所属するユーザへ間接的に付与されます。

データソースの認可

クエリを実行するためには、データソースへアクセスする権限が必要となります。
この権限はグループに対して設定することができ、グループに所属するユーザへ間接的に付与されます。

クエリ等オブジェクトの認可

クエリやダッシュボードを変更できるのは、adminもしくはそのオブジェクトの所有者のみです。
他のユーザでも変更できるようにするためには、 access_permissions テーブルを操作することになります。
以降では取り扱いません。
以下を参考すると権限の設定を行うこと出来ます。
https://qiita.com/kam0chi/items/b5c6ba2e14c8d50d0343

Redash の権限について

前述したようにグループは、所属しているユーザに権限を割り当てる所謂ロールとしての機能があります。

標準でadmin、defaultというグループがあります。
それぞれが保持する権限は以下となります。

adminグループ

  • admin
  • super_admin

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

FYI: https://github.com/getredash/redash/blob/004bc7a2ac0de041907ab0b9b560151ea7057332/redash/models/users.py#L260

新規作成したグループもdefaultと同じ権限を持ちます。

この権限はCLIより操作することができます。
やりかたはこちら。
https://qiita.com/kam0chi/items/ec78ec075c7c8410d02c

権限できること

ダッシュボード

WebAPI 実行に必要な権限 アクセス先のオブジェクトに対する権限 NOTE
作成 list_dashboards
編集 edit_dashboard require_object_modify_permission2
削除 edit_dashboard 誰でもできる
Widget追加 edit_dashboard require_object_modify_permission
Widget編集 edit_dashboard require_object_modify_permission
Widget削除 edit_dashboard require_object_modify_permission
一覧取得 list_dashboards 自分が参照できるデータソースのクエリを持つDashboard
検索 list_dashboards 自分が参照できるデータソースのクエリを持つDashboard
取得 list_dashboards

クエリ

WebAPI 実行に必要な権限 アクセス先のオブジェクトに対する権限 NOTE
作成 create_query データソースのFullAccess権限
編集 edit_query require_object_modify_permission
QueryAPIKey再生成 edit_query require_admin_or_owner
fork edit_query データソースのFullAccess権限
Visualization作成 edit_query require_object_modify_permission
Visualization更新 edit_query require_object_modify_permission
Visualization削除 edit_query require_object_modify_permission
保存されたクエリの実行 view_query データソースのViewOnly権限以上
クエリの実行結果取得 view_query データソースのViewOnly権限以上
保存されてないQueryの実行 execute_query データソースのFullAccess権限
検索 view_query 自分が参照できるデータソースのクエリ
取得 view_query データソースのViewOnly権限以上

Alert

WebAPI 実行に必要な権限 アクセス先のオブジェクトに対する権限 NOTE
作成 誰でも
一覧取得 list_alerts

データソース

WebAPI 実行に必要な権限 アクセス先のオブジェクトに対する権限 NOTE
一覧 list_data_sources - admin
- 自身が所属しているグループで参照できるもの
データソースの設定取得 admin
データソースの設定作成 admin
データソースの設定変更 admin
データソースの設定削除 admin

※データソースの設定変更は、細かくAPIが別れていましたが全てadmin権限が必要なので集約しました。

Org

WebAPI 実行に必要な権限 アクセス先のオブジェクトに対する権限 NOTE
設定取得 admin
設定変更 admin

グループ

WebAPI 実行に必要な権限 アクセス先のオブジェクトに対する権限 NOTE
グループの設定作成 admin
グループの設定一覧取得 - admin
- 自身が所属しているグループで参照できるもの
グループの設定取得 - admin
- 自身が所属しているグループで参照できるもの
グループの設定変更 admin
グループの設定削除 admin
グループのメンバ取得 list_users - admin
- 自身が所属しているグループ
グループのメンバが参照できるデータソース一覧取得 admin
グループのメンバが参照できるデータソース変更 admin
グループのメンバが参照できるデータソース削除 admin

ユーザ

WebAPI 実行に必要な権限 アクセス先のオブジェクトに対する権限 NOTE
一覧取得 list_users
追加 admin
パスワードリセット admin
削除 admin
無効化 admin

Alert Destination

WebAPI 実行に必要な権限 アクセス先のオブジェクトに対する権限 NOTE
一覧取得 admin
取得 admin
作成 admin
変更 admin
削除 admin

Events

WebAPI 実行に必要な権限 アクセス先のオブジェクトに対する権限 NOTE
一覧取得 admin
作成 誰でも

  1. クエリやダッシュボード、データソース、ユーザなどのこと 

  2. admin or 所有者 or access_permissions テーブルのレコードで変更権限を持っていること 

16
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
5