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

BtoB SaaSにおけるテナント・ユーザー設計の悩みどころ

Sansan
December 12, 2022

BtoB SaaSにおけるテナント・ユーザー設計の悩みどころ

■イベント

BtoB SaaSにおける技術課題との向き合い方
https://sansan.connpass.com/event/263231/preview/

■登壇概要

タイトル:BtoB SaaSにおけるテナント・ユーザー設計の悩みどころ

登壇者:Sansan株式会社 Bill One Engineering Unit 加藤 耕太
ソフトウェアエンジニア。SIerを経て2018年にSansan入社。インボイス管理サービス「Bill One」のアーキテクトとして、技術選定から立ち上げに関わり、現在に至るまで開発および技術マネジメントに従事。 最近は Kotlin / TypeScript / React / Google Cloud をよく触っている。


■Sansan 技術本部 採用情報

https://media.sansan-engineering.com/

Sansan

December 12, 2022
Tweet

More Decks by Sansan

Other Decks in Technology

Transcript

  1. 写真が⼊ります 加藤 耕太 Kota Kato Sansan株式会社 技術本部 Bill One Engineering

    Unit@関⻄⽀店 Sansan株式会社所属のソフトウェアエンジニア。Sansan⼊社後 は営業DXサービス「Sansan」の開発を担当。その後インボイス 管理サービス「Bill One」のアーキテクトとして、技術選定から ⽴ち上げに関わり、現在に⾄るまで開発および技術マネジメント に従事。 最近は Kotlin / TypeScript / React / Google Cloud をよ く触っている。 著書:Pythonクローリング&スクレイピング データ収集・解析のための実践開発ガイド
  2. 話すこと ⁃ テナントとユーザーの関係 ⁃ テナントとSSOの関係 話さないこと ⁃ マルチテナントの実現⽅式やテナント間のデータの分離⽅法 ⁃ SSOの実装⽅法やIDaaSの利⽤⽅法

    今⽇話すことと話さないこと 参考: SaaSにおけるマルチテナント設計の悩みと勘所 | SaaS.tech #2 – connpass https://saas-tech.connpass.com/event/243204/ マルチテナントSaaSのテナント分離をRow-Level Securityに移⾏した - Sansan Tech Blog https://buildersbox.corp-sansan.com/entry/2021/05/10/110000
  3. テナントとユーザーの関係 3パターン テナント ユーザー 1 1..n テナント ユーザー 1..n 1..n

    0..n テナント ユーザー 1..n ①テナントがユーザーを完全に管理 例:AWSのアカウントとIAMユーザー ②ユーザーは複数テナントに所属可能 例:Google Cloudのプロジェクト ③ユーザーはテナントに所属しないこともある 例:GitHubのOrganization
  4. 請求書の受領サービスとして始まったBill Oneは、次のような仕様を選択 ⁃ 受領側のユーザーはテナントに所属する ⁃ 送付側のユーザーはテナントに所属しない ⁃ 受領側と送付側を兼ねることが可能 Bill Oneはパターン③を選択

    テナント 受領側の ユーザー 1 1..n 送付側の ユーザー 初期の技術的な制約(テナント を気軽に増やせない)から来た 側⾯が⼤きいので、パターン② の⽅が楽だったかも ①テナントがユーザーを完全に管理 ②ユーザーは複数テナントに所属可能 ③ユーザーはテナントに所属しないこともある ユーザー アカウント 0..n 1 0..1 1
  5. テナントとSSOの関係 3パターン テナント IdP 1..n 1 ユーザー IdP 1..n 1

    A. テナントごとにIdPが決まる B-1. メールアドレスドメインごとにIdPが決まる B-2. ユーザーごとにIdPが決まる
  6. A. テナントごとにIdPが決まる ユーザーのパターン①では⾃然だが、パターン②③で複数テナントに所属するユーザーや テナントに所属しないユーザーの認証⽅法は要検討 B-1. メールアドレスドメインごとにIdPが決まる ユーザーのパターン②③ではシンプルだが、メールアドレスドメインが同じでも異なるIdP を使っているケースに対応できない メールアドレスドメインを所有してることは要確認 B-2.

    ユーザーごとにIdPが決まる ユーザーのパターン②③で、メールアドレスドメインが同じでも異なるIdPを使っている ケースに対応できる 各SSOパターンの特徴 ①テナントがユーザーを完全に管理 ②ユーザーは複数テナントに所属可能 ③ユーザーはテナントに所属しないこともある
  7. SSOパターンAの典型的なログイン画⾯ IdPの画⾯ ユーザー名 パスワード example.com テナントID ⼊⼒後に {tenant}.example.com 経由でリダイレクト 次へ

    ログイン A. テナントごとにIdPが決まる B-1. メールアドレスドメインごとにIdPが決まる B-2. ユーザーごとにIdPが決まる
  8. SSOパターンB-1の典型的なログイン画⾯ IdPの画⾯ ユーザー名 パスワード example.com ⼊⼒後に リダイレクト メールアドレス 次へ ログイン

    Bill Oneはこの変化形として、パスワード⼊⼒欄があるロ グイン画⾯を採⽤しており、SSO対象ドメインのメールア ドレスを⼊⼒したタイミングでパスワード⼊⼒欄が消える A. テナントごとにIdPが決まる B-1. メールアドレスドメインごとにIdPが決まる B-2. ユーザーごとにIdPが決まる
  9. SSOパターンB-2の典型的なログイン画⾯ IdPの画⾯ ユーザー名 パスワード example.com SSOを選んだとき だけリダイレクト メールアドレス パスワード SSO

    ログイン ログイン A. テナントごとにIdPが決まる B-1. メールアドレスドメインごとにIdPが決まる B-2. ユーザーごとにIdPが決まる