3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Apache SupersetでSSO Googleログインを設定

Last updated at Posted at 2022-06-26

BIツールって高いので、とりあえずBIツール導入したいなら、サーバー代だけで導入できるSupersetが良い選択肢になると思います。そこで、会社で使う場合はSSOができると便利だと思います。Google Workspaceを使っているところも多いと思うので、GoogleでのSSOログインの設定方法のご紹介です。ドメインによる制限もかけられるようにしています。

はじめに

まずドーン 完成品
SSOの設定してdocker-composeで一発起動にしています。サーバーで動かしたい場合も、そのまま使えます。ただ動かしたいだけなら、レポジトリのReadmeに添って動かして貰えばと思います。
この記事では、SSOの設定は基本は公式ドキュメントに準じていますが、そのままだといくつもハマりポイントがあり動かないので、ハマったポイントをご紹介していきます。

1. superset_config.py

AUTH_TYPE=AUTH_OAUTH

AUTH_TYPEAUTH_OAUTHを設定します。公式だと、AUTH_OAUTHだけ書かれていてコピペするだけだとエラーになります。このエラーを無くすにはimportが必要ですが、初めて使うのにどこimportしろって感じです。
なので、ファイルの冒頭に

from flask_appbuilder.security.manager import AUTH_OAUTH
AUTH_TYPE=AUTH_OAUTH

を追加しましょう

OAUTH_PROVIDERS

こちらもサンプルコピペでは動きません。SSOで使う対象の設定に合わせる必要があります。

  • nameをわかりやすいものに変える
  • client_id,client_secretは自分のアプリの設定に変更
  • client_kwardgsはSSOの対象によって違うので、後述のSecretManagerで必要になるパラメーターを取得できるscope設定をしてください。
  • xxx_urlここもSSOの対象によって変わります。oauth系のライブラリのソースコード覗いて確認するのが早いかもです。

AUTH_USER_REGISTRATION_ROLE

こちら、SSOで作成されたユーザーのデフォルト権限になります。サンプルはPublicなので、そのままだとDashboardなどを見ることしかできないユーザーが登録され、誰もAdminへの昇格ができなくなります。
なので、初期はAdminで起動し管理者ユーザーを作成し、その後Publicにしておきましょう。全員管理者で良いならAdminのままでも良いですがw

authlib

地味にドキュメントにはauthlibいるよと書かれています。これがないと動かないので、

pip install Authlib

を忘れないようにしてください。私のサンプルでは、Dockerfile内でinstallしています。

2. SecurityManager

ここで、OAuth Providerからユーザー情報の取得と、ドメインのチェックをしています。
ドメインチェックは公式ドキュメントには無いので、会社で使う際の参考にしてください。
サンプル - custom_sso_security_manager.py

ユーザー情報の取得

SSOは、認証しAccessTokenの取得までは勝手にやってくれますが、ユーザー情報の取得はSSOの対象によって違っているため、独自に書く必要があります。
やっていることは、最終的にOAuthのuserinfoエンドポイントを叩いて、その情報からSupersetの登録に必要な情報を取り出しているだけになります。

ドメインのチェック

Googleの場合、ドメイン情報がuserinfoエンドポイントから取得できるようになっているので、そのチェックも入れています。会社のGoogle workspaceのドメインのみ許可するようにしておけば、会社のアカウントを持っていない人は登録できなくなります。部外者がアクセスしてきても会社のGoogleアカウント持っていないと入れなくなるので、とりあえず使う際のセキュリティとして十分だと思うので、ご活用下さい。

superset_config.pyへ設定

SecurityManagerを作ったら設定に反映が必要です。
superset_config.pyと同じディレクトリにファイルを置き

from custom_sso_security_manager import CustomSsoSecurityManager
CUSTOM_SECURITY_MANAGER = CustomSsoSecurityManager

を設定してください。

注意

  • AWSのGravity系のCPUのインスタンスではsupersetのDocker imageが対応しておらず、docker-composeがビルド失敗します。

おわりに

以上がざっくりとした、設定の注意点です。

一般のBIツールは最低導入コスト200万円/年ぐらいは必要になって来ます。また、人数によって使用量も線形に増えていき、安くてViewerのライセンスだけでも月額2000円/人、Exploreクラスになると5000円/人程度は必要になってきます。そのため、PoCを行い、会社の説得、契約、社内への浸透をしていかないと行けないので、大変な道のりになると思うのでとりあえずBIツール入れてみたいならSupersetを使ってみても良いと思います。

ただし、やはり商用のBIツールのほうが、機能などが充実している+サポートの料金も込みとなるので、非エンジニアも使うことを考えると商用のものを導入する選択肢は消すべきではないと思います。

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?