はじめに
はじめましての方ははじめまして!
HITOTSU株式会社 の宮といいます。
昨年から本格的にプロダクト開発を進めてきたのですが、ひょんなことからアドカレやるかと言うと、ほぼ冗談で言ったにも関わらずメンバーがギラギラしてたのでやることになりました。
とはいえ、書くからには弊社で割と色々経験して取り入れてきたものを共有できると言いなと思ってますので、宜しくお願いいたします。
なのでこの記事は HITOTSU株式会社のアドベントカレンダー の3日目です。
TL;DR
- Auth0使ってて、Redash使ってるならSSOしたら便利
- ActionsやRulesで制限かけるのがオススメ
- 何回か命救われたぞ
Redashって?
こちらの記事 で詳細に構築の方法やRedashそのもののことは解説頂いていますが、軽く触れると Amazon Athena や Amazon CloudWatch などをデータソースとして、BIを構築できるツールです。
AWSにおいては、Redashは AMIが公開されている ので、比較的簡便に構築できますし、一応最低インフラ要件を満たしておけばそこそこ快適に動作するので、プロダクトメトリクスの分析やアクティビティログの分析など色々な用途を簡単にプロダクトの外側に組み込めるので重宝しています。
RedashとAuth0のSSO
Redashを初期構築した場合、Redash内部にユーザーアカウントが作成されるため、メールアドレスとパスワードで認証することになるのですが、Auth0などのIDaaSとSAMLベースでSSOすることができます。
ぶっちゃけ Redashのこの記事 に方法は書いてあるのですが、一応QiitaにAuth0とのSSOについては日本語情報がなかったので、今回掲載しておくことにしました。
設定方法
完成形
まずRedashをSAMLログインできるようにするとこんな流れになります。
まず前提になるHTTPSのRedashのURL
Auth0でリダイレクト先のURLにはHTTPSしか使えないので、RedashにHTTPSのURLを設定する必要があります。
Route53やACMで先に良い感じのURLと証明書を取得しておきましょう。
Auth0の設定
Auth0側では、下記の設定が必要になります。
- Applications で SSO 用の Regular Web Applications を1つ建てる。
- アプリケーションのSettingsメニューで、Allowed Callback Urls と Allowed Logout Urlに、下記のURLを設定する。
https://[上で設定したドメイン]/saml/callback?org_slug=default
- アプリケーションのAddonsメニューで、「SAML2 Web App」をアクティブに。
- SAML2 Web Appをクリック → SettingsメニューのSettingsのところに下記のJSONを貼り付け
{
"mappings": {
"given_name": "FirstName",
"family_name": "LastName"
},
"passthroughClaimsWithNoMapping": false,
"includeAttributeNameFormat": false
}
※Connectionsの設定は普通のAuth0で認証を行う場合のアプローチと同一なので割愛
Redashの設定
Redash側では、下記の設定が必要になります。
- Setting画面から、Settingsメニューを開く
- Settingsメニューの最下部にあるSAMLセクションから下記の設定を追加
- SAML EnabledをONにする
- SAML Metadata URL に次のURLを設定
https://[テナントのドメイン]/samlp/metadata/[Redash用のアプリケーションのClient ID]
- SAML Entity IDに次の文字列を設定
urn:auth0:[テナント名]:[コネクション名]
- SAML NameID Format:
EmailAddress
で固定
補足
JSONのmappingsが姓名の紐付けを表します。
Auth0上ではgiven_name, family_nameと扱われている項目を、Redashでは FirstName, LastName として扱います。
given_nameはAuth0ではnullableなのですが、nullの場合はRedashが落ちるので気をつけましょう。。
アクセス制限
SAMLでSSOできるようにすると、接続したAuth0のアカウントを持っている人は全員Redashにアクセスできるようになります。
BIツールは割と横断的にデータ閲覧できる可能性を持っているので、アクセス制限や認可はきちんとするようにしましょう。
Auth0の場合、RulesやActionsなどで特定のアプリケーションに対して、ホワイトリスト接続することが設定可能ですし、Redashでもクエリやダッシュボードに対して権限を設定して閲覧制御できます。
もし不意にRedashにアクセスして、アクセス制御できていないと大問題になる可能性も大いにあるので、アクセス制限とセットでSSOは使うようにしてください。
まとめ
BIツールとしてRedashは手軽だし、Auth0も手軽なので両者でSSOできるのはとても便利です。
設定は結構簡単にできますが、アクセス制限していないととんでもない事になりかねないので、絶対にアクセス制限をかけましょう。
弊社ではデータ解析やプロダクトメトリクスの分析用に活用していますが、それだけでも充分な効力を発揮しており、幾度となく命が救われる様な効果を発揮してくれています。
自社用のBIはプロダクト開発していく中で遅かれ早かれ必要になりますが、手軽に構築しつつ、セキュリティにも気を払いつつ進めていけるとプロダクトの進化を早められるなと感じています。