Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BtoB SaaS を支える 認証認可基盤の設計

BtoB SaaS を支える 認証認可基盤の設計

2023年10月5日にTIER IVさんと共催したイベント
「BtoB SaaSを支えるモダンな認証認可基盤と技術選定背景」の登壇資料です。

イベント概要
https://tier4.connpass.com/event/295789/

[email protected]

October 05, 2023
Tweet

Other Decks in Technology

Transcript

  1. © CADDi Inc. © CADDi Inc. 2 Engineering Manager Keiichi

    Yamada SIer、コロプラを経て2019年9⽉にキャディ⼊社。 2つのプロダクト開発を経て、2021年7⽉にプラットフォーム チームを組成。技術組織向けの横断的な活動とチームマネジメ ントに従事。 2023年6⽉よりCTO Officeを⽴ち上げ、技術組織全体のポリ シー制定やセキュリティ強化、採⽤活動に取り組んでいる。 プライベートでは2⼈の男児のパパ。 Software Engineer Kentaro Maeda バックエンドエンジニア、SREとして、システム全体の最適化 やアプリケーション基盤構築に携わる。 2022年2⽉に 製造業で新しい商流を作ろうとしているキャ ディのビジネスモデルに惹かれて⼊社。 ⼊社後は、Platformチームのメンバーとしてクラウドインフ ラの管理やシステム横断の技術課題の解消に従事、サービス メッシュの導⼊や認証認可基盤の構築など、CADDiのサービス 全般の運⽤課題や共通機能の開発に取り組んでいる。
  2. © CADDi Inc. 今⽇のテーマ 4 BtoB SaaS を⽀える認証認可基盤の設計 • CADDiのサービスと認証機能の変遷

    • SaaS化を⾒据えた認証認可基盤の設計 • 認証認可基盤技術要素
  3. © CADDi Inc. 始まりはMANUFACTURING事業 6 ( バーチャルファクトリー ) 顧 客

    分析‧コスト計算 納品 製造 パートナー⼯場 図⾯、仕様書の要約、整備 検査‧品質保証 問い合わせ対応 図⾯情報 6
  4. © CADDi Inc. CADDi Manufacturing の認証 7 7 受発注の⼯程を管理するためのシステムを内製 認証は社員のみ

    Auth0 + Google Workspace ⼀部のシステムで外部パートナー向けのアカウントをAuth0で管理 7
  5. © CADDi Inc. MANUFACTURINGは社内システム 8 8 8 8 類似図⾯検索 •

    独⾃の画像解析アルゴリズム(特許出 願中)による、形状が類似する図⾯を 検索する機能 • 形状の特徴から類似図⾯を登録図⾯全 体から検出し表⽰ 紙の図⾯をシステム管理するようにしたところ、図⾯管理をSaaS化する構想が誕⽣ ⼤量の図⾯から類似図⾯を検索する機能を開発した。 8
  6. © CADDi Inc. • 利⽤顧客からのセキュリティ強化要望 ◦ MFA, IP制限, AD連携, パスワードポリシーの設定

    ▪ 顧客会社ごとの設定が難しいものやAuth0のアップグレードが必要なものがあった • 複数サービスの相互利⽤のニーズが発⽣ ◦ 社内システムとのAPI連携の要望が度々発⽣ ▪ ⼈による認証のみ対応していたため、セキュアなAPI呼び出しの⽅法やルールがない ▪ 認可(⼈の属性やAPIリクエスト元などによるアクセス制御)を考えてない • 新サービスの追加によるAuth0テナントの追加やユーザー運⽤の煩雑化 ◦ Auth0テナントが分散しているため、外部ユーザーの統⼀管理やSSOが難しい サービス拡⼤を⾒据えた認証認可基盤の導⼊の検討を開始 サービス利⽤拡⼤に伴う認証課題の発⽣ 10
  7. © CADDi Inc. 認証認可基盤に求める要件 12 アカウント管理 • パスワードなどの機密情報を⾃前で保持しない • MFAへの対応

    • SAML, OIDCなど外部IdPとの連携 • 低コスト • マルチテナント, 会社ごとに管理者がアカウントの管理ができる API管理 • API間のセキュアな通信ができる • テナントごとにAPIの呼び出しの制御ができる • 認可制御をするための情報が管理できる
  8. © CADDi Inc. 認証認可基盤を構成する技術要素 16 要素 機能 使用技術 認可サービス OAuth2/OIDC

    認可フロー Ory Hydra ユーザープール テナント別ユーザー情報の保持、ログイン Amazon Cognito 認証サービス 利用者ログインUI Next.jsによる自作 Policy サービス 認証認可基盤の各種設定を行う API,UI NestJS, React-Adminによる自作
  9. © CADDi Inc. Ory Hydra 17 https://github.com/ory/hydra 認証SaaSを⼿がける Ory社が中⼼に作成している OIDC/OAuth2

    サーバー OpenID Foundationの承認を受けている Hydra プロセスと RDBMSで動くため導⼊が簡単 対応するフロー: Authorization Code Grant (PKCE), Client Credentials 前者を⼈によるログイン、後者を APIの認証のために使⽤している Authorization Code Grantを⾏うためには認証バックエンドが別途必要 既存の認証システムがある場合や認証のカスタマイズが必要な場合に有⽤ (OryからKratosという認証サーバーOSSもあり、SaaSではAll in Oneで提供されて いる)
  10. © CADDi Inc. Amazon Cognito 18 AWSのIDaaS。Cognitoのみを使⽤し、その他のサーバーリソースはGoogle Cloud。 Cognitoを選定した理由 •

    他のIDaaSでは上位プランに含まれそうな機能がデフォルト(SAML, MFA ) • MAU単位のコストが安い(0.05$〜) ◦ ⼀つのユーザープールに⼀つの会社を割り当て、会社ごとのユーザー運⽤、セキュリティポリ シーの適⽤を⾏う想定 選定の際に注意が必要だったこと • 他のIDaaSと⽐べて、便利ではない部分、作り込みが必要な部分が多い。 ◦ 認証認可基盤の要件の実現のために、多少の造り込みは必要なので、ここは許容 • レートリミットの制約が厳しい ◦ CADDiのサービスは、会社の特定部署のユーザーが使うもので、利⽤者数は少ない。 そのため、低コストで運⽤できることを重視
  11. © CADDi Inc. Policy サービス 20 Hyrda OSSは管理コンソールはなく、またリソースサーバー(API)の管理機能は ない。 これらの設定を管理するサービスとしてNestJS,

    React-Adminで⾃作 • HydraにOAuth2クライアントを登録する ◦ 認可フローの種類やトークンのTTL,利⽤可能なリソースサーバーの設定など • リソースサーバーを登録する ◦ audienceやscopeの設定 • 認可設定の管理 ◦ クライアントが呼び出し可能なリソースサーバー、スコープの設定 ◦ クライアントを利⽤可能なテナントの設定 ◦ スクリプトによるログイン処理のカスタマイズ
  12. © CADDi Inc. その他の機能‧将来の展望 22 • リクエストごとの認可制御 ◦ 認証認可基盤はログイン時にトークン発⾏のみを⾏うが、トークンのチェックをサービスメッ シュやCloud

    Runサイドカーを使ってインフラ側である程度チェックする ▪ JWTの期限や署名のチェックなどは⾃動化できる ▪ 詳細なチェックはアプリケーション側で⾏うか、OPAによるチェックを調査中 • ユーザー、テナントのマスター管理 ◦ ユーザーやテナントの詳細情報を管理できるように認証認可基盤で扱う情報を拡⼤する • トークン⾃動⽣成‧変換 ◦ API間の通信で使⽤するトークンを⾃動⽣成するプロキシや、トークンを宛先に応じて変換し たりするエージェントの作成 • 認証ロジックの追加 ◦ Cognito カスタム認証(Lambda)を⽤いて、ID/Password以外の認証やセキュリティ強化を⾏う
  13. © CADDi Inc. まとめ 23 バラバラな認証バックエンドを集約し、CADDiのサービスと利⽤顧客の拡⼤を⾒ 据えた認証認可基盤を絶賛開発中 • 認証認可の開発は公開事例も少なく、アーキテクチャや事業に合わせたモデ ルを考えるのは⼤変だったが良い経験になった

    • OAuth2/OIDC/SAMLの基本知識が重要で、今もこれからも勉強中 • 認証認可基盤以外のサービス開発やセキュリティ強化など、CADDi全般で仕 事がいっぱいあるので、興味のある⽅は⼀度お話ししましょう! エンジニア採⽤ポータル CADDi Engineering https://recruit.caddi.tech/