Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Bill Oneの認証を内製認証基盤に置き換えた話

SansanTech
October 10, 2024
330

Bill Oneの認証を内製認証基盤に置き換えた話

■ イベント
AWS SaaS Builders Forum 2024
https://pages.awscloud.com/eib-saas-240927-reg.html

■ 発表者
技術本部 Bill One Engineering Unit  樋口 礼人

■ Bill One エンジニア採用情報
https://media.sansan-engineering.com/billone-engineer

■ Sansan Tech Blog
https://buildersbox.corp-sansan.com/

SansanTech

October 10, 2024
Tweet

Transcript

  1. 本セッションについて 発表内容 Amazon Cognitoを利用して構築した認証基盤の設計・移行プロセスについて アジェンダ - Bill Oneとは - 認証基盤内製化の背景

    - 内製化の方針 - 新しい認証基盤の設計 - 無停止でのアカウント移行について - リリース後の状況 - まとめ
  2. 働き方を変えるDXサービス 請求 人や企業との出会いをビジネスチャンスにつなげる「働き方を変えるDXサービス」を提供 ビジネスフローにおけるさまざまな分野でサービスを展開 名刺管理 名刺DX 営業 営業DX 契約 契約DX

    経理DX 個人向けDX 法人向けDX 必要な情報を すぐに見つけられる 情報の管理がしやすく すぐに共有できる 情報を分析・活用しやすく データに基づいた判断ができる SansanのDXサービスの活用で変わる働き方
  3. 従来の認証基盤: Auth0 Okta社が提供するIDaaS (Identity as a Service) - さまざまなアプリケーションに簡単に組み込める -

    セキュリティ機能が充実 ◦ MFA (Multi Factor Authentication) ◦ ブルートフォース攻撃対策など - B2B (企業向け), B2C (消費者向け), B2E (従業員向け) のログインを提供 - Single Sign-On (SSO) やOrganizationなど、B2B SaaS向けの機能も充実 - M2M (Machine-to-Machine) の認証も提供 https://auth0.com/
  4. 従来の認証基盤の課題1: コスト - サービスの成長に伴うコストの増加 - MAU単価の比較(参考) サービス MAU単価 (月額) 備考

    Auth0 $0.24 B2B Professionalプランで7,500 MAUの場合の参考値 (実際の契約額とは異なる) https://auth0.com/pricing Amazon Cognito $0.0055 AWS アジアパシフィック (東京) リージョン 50,001 ~ 100,000MAUの場合の参考値 https://aws.amazon.com/cognito/pricing - Bill OneはMAUに応じて直接的に収益が上がるビジネスモデルではない - ユーザー数課金ではない課金体系 - 取引先に無料アカウントを作成してもらえる > 取引先のユーザーが毎月ログインして請求書を送るケースも多い
  5. 内製化するとしてどこまで自前開発するか - 完全自前開発 - KeycloakのようなOSSを利用 + 自前開発 - KeycloakのようなOSSを利用 -

    Auth0以外のIDaaSへ移行 + 自前開発 - Auth0以外のIDaaSへ移行 自前で管理する部分 大 小
  6. 代表的なIDaaSの料金 サービス MAU単価 (月額) 備考 Auth0 $0.24 B2B Professionalプランで7,500 MAUの場合の参考値

    (実際の契約額とは異なる) https://auth0.com/pricing Amazon Cognito $0.0055 ~ 0.0025 東京リージョン 50,000MAUまで無料 それ以降MAUに応じてディスカウント https://aws.amazon.com/cognito/pricing A社 $0.0055 ~ 0.0025 49,999MAUまで無料 それ以降MAUに応じてディスカウント B社 $0.00325 50,000MAUまで無料 - Auth0のMAU単価は非常に高い - IDaaS移行によって、大幅なコスト削減につながることがわかった
  7. 認証基盤に必要な要件 - 自社の基準を満たせるパスワードポリシー - TOTP(Time-based One-Time Password)によるMFA(Multi-Factor Authentication) - ブルートフォース攻撃対策

    - 複数回ログイン失敗でのアカウントロック - 不審なIPアドレスのブロック Auth0では実現できていた内容だが、IDaaSを移行した場合、自前開発せずに 素直に実現することは難しい 将来の拡張性も踏まえ、足りない機能は自前開発で補う
  8. 最終的な方向性と技術選定 新基盤の方向性 - Auth0以外のIDaaSへ移行 + 自前開発 技術選定 - IDaaS -

    Amazon Cognito - クラウドサービス - アマゾン ウェブ サービス(AWS) - アプリケーション - ユーザー向け画面・API: Go - 管理画面: TypeScript, React 選定理由 - コスト削減が見込める - IDaaS移行するとしても、既存の要件を維持 するためには自前開発が必要になる - 自前のアプリケーションで機能を補いやすい - 社内でAWSを得意とするメンバーは多い
  9. Amazon Cognitoとは AWSの提供するIDaaSで認証認可・アカウント管理の機能を提供 特徴 ふたつの方法でAmazon Cognitoのユーザープールを利用可能 - Hosted UIを利用すると独自のUI構築が不要 -

    User Pools APIを利用すれば自前のアプリケーションにCognitoの認証を組 み込むことが可能 Lambdaトリガー - ログイン試行時・IDトークン発行時などに起動するLambdaを設定すること でCognitoの挙動をカスタマイズ可能
  10. 従来の構成 Bill One OIDC /SAML OIDC - Bill OneアプリケーションがAuth0とOIDCでID連携することで認証を実現 -

    Auth0のEnterprise Connectionsを利用してSSO(Single Sign-On)を実現 SSO パスワード OTPシークレット 顧客のIdP ・ ・ ・ 顧客のIdP (SAML) OIDC /SAML Auth0 顧客のIdP (OIDC) 認証機能 (パスワード・MFA) SSO機能
  11. 新しい認証基盤の構成 - 認証や機微な情報の管理はAmazon Cognitoに寄せる - 足りない機能は自前のアプリケーションで補う - SSOはAuth0を使い続ける 認証基盤 Bill

    One OIDC Amazon Cognito OIDC 顧客のIdP (SAML) OIDC /SAML Auth0 顧客のIdP (OIDC) 顧客のIdP ・ ・ ・ SSO機能 認証機能 (パスワード・MFA)
  12. リリース後の状況 - 3週間でMAUの約86%のユーザーが新基盤に移行 - ログイン画面のドメイン変更により、ログイン不可の問い合わせが増加 - パスワードマネージャーはサブドメインの違いを無視してサジェストする - 一度保存すれば、サブドメインが一致するものが優先される Bill

    Oneの旧ログイン画面 (auth.bill-one.com) Bill Oneの新ログイン画面 (auth.sansan.com) Sansanのログイン画面 (ap.sansan.com) Bill Oneの ID/パスワード Sansanの ID/パスワード サジェスト サジェスト サジェスト
  13. - プロダクトの初期フェーズで認証周りの工数を削減できた効果は大きい - Auth0は機能が豊富であることを痛感 - 例: Auth0では、ブルートフォース対策としてのアカウント・IPアドレスのロ ック機能や柔軟なパスワードポリシーの設定などが自前で開発することなく 利用できた -

    コストの問題がなければAuth0を使い続けたかった - ユーザー数課金のサービスや、MAUあたりの収益が高いビジネスモデル であれば、コストに見合う価値があると思う - 一方で内製化によって、自由度が上がって プロダクト独自の要件が実現しやすくなった面もある Auth0の利用を振り返って