Help us understand the problem. What is going on with this article?

Redash で google login を有効にする方法。権限変更のためのmanage.pyが動かない時の代替案

これは何

自分でAWSで提供されているAMIを使ってインストールした場合、google loginはデフォルトで無効になっていた。
最初はRedash独自の認証機構を使っていたが以下の問題があった。

  • 社内のRedashユーザが退職したケースに対応が面倒。毎回忘れずにユーザ削除をしないといけない
  • 多要素認証がない

Redash は google login を使えるので、導入して上記問題を解決したい。

Redash とは?というのは、他にもたくさん情報があるので割愛します。https://redash.io/
よくRe:dashと表記されているのでそれが正式名称なのかな?と思いましたが、公式サイトだとRedashの表記になっていたのでこの記事ではその表記に合わせます。

google login を入れた時に考えられる問題点

社内ドメインのアドレスのユーザだったら誰でもログインできる?

  • google login を有効にして、許可するドメインをかくと、そのドメインをもつメールアドレスのユーザが誰でもログインしてRedashを使ってQueryを書くことができる。センシティブなデータを扱っている場合、誰でも入れるというのは避けたい
  • 新規ユーザには default の group がデフォルトでつくようになっているが、その権限を制限できるか?

解決策?

真:解決策

  • default グループから権限を剥奪する
  • member グループとでも命名したものにデフォルト同様の権限をつける(新規作成でデフォルトの権限)。新たにRedashを使うユーザにはこのグループをGUIから操作して手動で割り当てる
  • 私の環境はでmanage.pyは全く応答しなかったので、データベースを直接いじることにした。これについてはハマりどころの章で説明します。

google login有効化まではこの通りにやればできる手順書

ハマりどころ(この記事のメインコンテンツ)

特にAWSのAMIを使った場合は内部的にdockerで動いているので、ちょっとだけハマったのでそれについてだけ補足説明を書いておきます。

docker-compose.yml と env のありか

サーバにsshログインすると以下のディレクトリに置かれているのがわかります。
envにpostgresのパスワードなどが書かれているので、中身見ておきましょう。

# pwd
/opt/redash
# ls
docker-compose.yml  env  postgres-data

サーバログインしてsudo su - で root になってディレクトリ移動し、dockerコンテナ全部再起動すると env 読み込みできる。うまくいかなければサーバ再起動でもOK。
dockerコンテナ再起動方法は以下のもの

$ docker-compose down
$ docker-compose up -d

group権限の書き換え

権限やクエリを保存している postgres に繋いで、 groups テーブルの default グループの permissions のところを書き換えて権限0にする。
AWS AMIから作ったインスタンスはデフォルトでローカルにpostgresコンテナが立っているようなので、ここに接続する。

# docker exec -it --user root redash_postgres_1 bash
// docker コンテナの中で以下のコマンド
// password はenv ファイルに書かれているものを使用
# psql -h localhost -U postgres -d postgres --password

postgres に入った後はMySQLとの対応コマンドリストを参照してみていく。神ドキュメント =>  https://qiita.com/aosho235/items/c657e2fcd15fa0647471

コンソールでグループを作った上で以下の作業を行う。グループ作成の時に空白を入れないこと。DBにそのまま保存されてしまう、whereで絞る時に苦労する。

postgres=# select * from groups;
 id | org_id |  type   |    name    |                                                                              permissions                                                                               |          created_at
----+--------+---------+------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------
  1 |      1 | builtin | admin      | {admin,super_admin}                                                                                                                                                    | 2020-06-30 05:12:08.756199+00
  2 |      1 | builtin | 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} | 2020-06-30 05:12:08.756199+00
  3 |      1 | regular | member     | {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} | 2020-07-01 09:44:08.588092+00
(3 rows)

# UPDATE groups SET permissions = '{}' WHERE name = 'default';
postgres=# select name, permissions from groups;
            name             |                                                                              permissions
-----------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 admin                       | {admin,super_admin}
 default                     | {}
 member                      | {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}

これで、このグループをつけたユーザがどうなるか?というところだが、自分のプロフィール以外実質何もできなくなったのでOK。一応ログインはできる。

インスタンスサイズが小さいと動かない

Redashに割り当てるインスタンスサイズは t2.micro だとnginxがエラー(確か internal server error?)を吐いてしまいました。おそらくメモリサイズが足りないのだろうと思って t3.small を割り当てると動きました。

yamotuki
macloud
M&Aクラウドは「テクノロジーの力で、M&Aに流通革命を」をミッションにM&Aプラットフォーム「M&Aクラウド」を開発運営するスタートアップです。
https://macloud.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした