BIツールって高いので、とりあえずBIツール導入したいなら、サーバー代だけで導入できるSupersetが良い選択肢になると思います。そこで、会社で使う場合はSSOができると便利だと思います。Google Workspaceを使っているところも多いと思うので、GoogleでのSSOログインの設定方法のご紹介です。ドメインによる制限もかけられるようにしています。
はじめに
まずドーン 完成品
SSOの設定してdocker-composeで一発起動にしています。サーバーで動かしたい場合も、そのまま使えます。ただ動かしたいだけなら、レポジトリのReadmeに添って動かして貰えばと思います。
この記事では、SSOの設定は基本は公式ドキュメントに準じていますが、そのままだといくつもハマりポイントがあり動かないので、ハマったポイントをご紹介していきます。
1. superset_config.py
AUTH_TYPE=AUTH_OAUTH
AUTH_TYPE
にAUTH_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ツールのほうが、機能などが充実している+サポートの料金も込みとなるので、非エンジニアも使うことを考えると商用のものを導入する選択肢は消すべきではないと思います。