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.
    BtoB SaaS を⽀える
    認証認可基盤の設計
    前多 賢太郎
    CADDi Platform Group
    October 5, 2023

    View full-size slide

  2. © 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のサービス
    全般の運⽤課題や共通機能の開発に取り組んでいる。

    View full-size slide

  3. © CADDi Inc.
    CADDiの事業について
    3
    サプライチェーンにまつわる上流‧下流のデータを相互に補完し合う
    部品調達プラットフォーム
    調達‧⽣産機能の⼀括
    請け負いによる
    モノづくりの変⾰
    図⾯データ活⽤クラウド
    図⾯データの
    アセット化による
    社内システムの変⾰
    設計 調達 製造 販売
    Technology
    Knowledge

    View full-size slide

  4. © CADDi Inc.
    今⽇のテーマ
    4
    BtoB SaaS を⽀える認証認可基盤の設計
    ● CADDiのサービスと認証機能の変遷
    ● SaaS化を⾒据えた認証認可基盤の設計
    ● 認証認可基盤技術要素

    View full-size slide

  5. © CADDi Inc.
    © CADDi Inc. 5
    CADDiのサービスと認証機能の変遷

    View full-size slide

  6. © CADDi Inc.
    始まりはMANUFACTURING事業
    6
    ( バーチャルファクトリー )


    分析‧コスト計算
    納品
    製造
    パートナー⼯場
    図⾯、仕様書の要約、整備
    検査‧品質保証
    問い合わせ対応
    図⾯情報
    6

    View full-size slide

  7. © CADDi Inc.
    CADDi Manufacturing の認証
    7
    7
    受発注の⼯程を管理するためのシステムを内製
    認証は社員のみ Auth0 + Google Workspace
    ⼀部のシステムで外部パートナー向けのアカウントをAuth0で管理
    7

    View full-size slide

  8. © CADDi Inc.
    MANUFACTURINGは社内システム
    8
    8
    8
    8
    類似図⾯検索
    ● 独⾃の画像解析アルゴリズム(特許出
    願中)による、形状が類似する図⾯を
    検索する機能
    ● 形状の特徴から類似図⾯を登録図⾯全
    体から検出し表⽰
    紙の図⾯をシステム管理するようにしたところ、図⾯管理をSaaS化する構想が誕⽣
    ⼤量の図⾯から類似図⾯を検索する機能を開発した。
    8

    View full-size slide

  9. © CADDi Inc.
    CADDi DRAWERの認証の仕組み
    CADDiとして初めてのSaaSであり、有償顧客による利⽤が発⽣する
    専⽤のAuth0テナントを認証バックエンドとして採⽤
    顧客の識別はユーザーごとの属性で⾏い、ユーザーはツールで投⼊
    9

    View full-size slide

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

    View full-size slide

  11. © CADDi Inc.
    © CADDi Inc.
    SaaS化を⾒据えた
    認証認可基盤の設計
    11

    View full-size slide

  12. © CADDi Inc.
    認証認可基盤に求める要件
    12
    アカウント管理
    ● パスワードなどの機密情報を⾃前で保持しない
    ● MFAへの対応
    ● SAML, OIDCなど外部IdPとの連携
    ● 低コスト
    ● マルチテナント, 会社ごとに管理者がアカウントの管理ができる
    API管理
    ● API間のセキュアな通信ができる
    ● テナントごとにAPIの呼び出しの制御ができる
    ● 認可制御をするための情報が管理できる

    View full-size slide

  13. © CADDi Inc.
    CADDi のマルチテナント構成
    13
    ⼀般的なマルチテナントは全てのリソースが分割
    CADDiにおけるマルチテナントは利⽤者の会社‧組織が識別できること。
    同⼀サービス上で会社間の取引などが将来起きることを想定

    View full-size slide

  14. © CADDi Inc.
    認証認可基盤のアーキテクチャ
    14
    OAuth2/OIDCをベースにサービスの認可と利⽤者の認証を分離するアーキテクチャを作成

    View full-size slide

  15. © CADDi Inc.
    © CADDi Inc.
    認証認可基盤技術要素
    15

    View full-size slide

  16. © CADDi Inc.
    認証認可基盤を構成する技術要素
    16
    要素 機能 使用技術
    認可サービス OAuth2/OIDC 認可フロー Ory Hydra
    ユーザープール テナント別ユーザー情報の保持、ログイン Amazon Cognito
    認証サービス 利用者ログインUI Next.jsによる自作
    Policy サービス 認証認可基盤の各種設定を行う API,UI NestJS, React-Adminによる自作

    View full-size slide

  17. © 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で提供されて
    いる)

    View full-size slide

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

    View full-size slide

  19. © CADDi Inc.
    認証サービス
    19
    HydraのOAuthフローから呼び出される認証バックエンド
    Cognitoの標準ログインUIは拡張性に⽋け、複数のユーザープールをユーザーの所属に応
    じて切り替える必要があることから、HydraとCogntioをつなぐログインUIとして⾃作
    利⽤者はアプリケーションからログインを開始するとまず、テナントIDを⼊⼒する。
    テナントごとに許可されたログイン⼿段でログインするとCognitoへの認証を実施し、成
    功するとIdtoken, access tokenをアプリケーションで取得可能になる
    ログイン
    開始
    アプリケー
    ションへ
    戻る

    View full-size slide

  20. © CADDi Inc.
    Policy サービス
    20
    Hyrda OSSは管理コンソールはなく、またリソースサーバー(API)の管理機能は
    ない。
    これらの設定を管理するサービスとしてNestJS, React-Adminで⾃作
    ● HydraにOAuth2クライアントを登録する
    ○ 認可フローの種類やトークンのTTL,利⽤可能なリソースサーバーの設定など
    ● リソースサーバーを登録する
    ○ audienceやscopeの設定
    ● 認可設定の管理
    ○ クライアントが呼び出し可能なリソースサーバー、スコープの設定
    ○ クライアントを利⽤可能なテナントの設定
    ○ スクリプトによるログイン処理のカスタマイズ

    View full-size slide

  21. © CADDi Inc.
    スクリプトによるログイン処理のカスタマイズ
    21
    ユーザーの属性によるトーク
    ンのカスタマイズ、ログイン
    の拒否などをスクリプトで定
    義して、柔軟な権限制御を可
    能にする
    ● 特定部署のユーザーに管
    理権限ロールを追加する
    ● 特定テナントのログイン
    を拒否する
    ● IP制限などのチェック

    View full-size slide

  22. © CADDi Inc.
    その他の機能‧将来の展望
    22
    ● リクエストごとの認可制御
    ○ 認証認可基盤はログイン時にトークン発⾏のみを⾏うが、トークンのチェックをサービスメッ
    シュやCloud Runサイドカーを使ってインフラ側である程度チェックする
    ■ JWTの期限や署名のチェックなどは⾃動化できる
    ■ 詳細なチェックはアプリケーション側で⾏うか、OPAによるチェックを調査中
    ● ユーザー、テナントのマスター管理
    ○ ユーザーやテナントの詳細情報を管理できるように認証認可基盤で扱う情報を拡⼤する
    ● トークン⾃動⽣成‧変換
    ○ API間の通信で使⽤するトークンを⾃動⽣成するプロキシや、トークンを宛先に応じて変換し
    たりするエージェントの作成
    ● 認証ロジックの追加
    ○ Cognito カスタム認証(Lambda)を⽤いて、ID/Password以外の認証やセキュリティ強化を⾏う

    View full-size slide

  23. © CADDi Inc.
    まとめ
    23
    バラバラな認証バックエンドを集約し、CADDiのサービスと利⽤顧客の拡⼤を⾒
    据えた認証認可基盤を絶賛開発中
    ● 認証認可の開発は公開事例も少なく、アーキテクチャや事業に合わせたモデ
    ルを考えるのは⼤変だったが良い経験になった
    ● OAuth2/OIDC/SAMLの基本知識が重要で、今もこれからも勉強中
    ● 認証認可基盤以外のサービス開発やセキュリティ強化など、CADDi全般で仕
    事がいっぱいあるので、興味のある⽅は⼀度お話ししましょう!
    エンジニア採⽤ポータル
    CADDi Engineering
    https://recruit.caddi.tech/

    View full-size slide

  24. © CADDi Inc.
    © CADDi Inc.
    ありがとうございました
    24

    View full-size slide