本文へスキップ

SaaSで他社のデータを見せないには?企業ごとの分け方

まず押さえたいこと

企業ごとのデータ分離は、所属と操作権限を確認し、画面・ファイル・検索・裏側の処理で同じ境界を守る設計です。共有か専用かは、顧客が求める保管・復旧条件と、維持できる運用体制から選びます。

  • ログインできることと、その企業の情報を扱えることは別。
  • 共有・専用の優劣より、分ける層と運営の負担を比べる。
  • 一社だけ出力・削除・復旧する場面まで考えておく。
発注前のチェックリストを見る
このガイドの背景

法人向けのサービスを作るとき、「A社の人にはA社の情報だけを見せる」は当然の条件に思えます。ところが、代理店や兼務者が入ると境界は複雑になります。

企業ごとにどこまで分けるべきかは、データの保管場所だけでは決まりません。日常の共有、契約終了、復旧の場面から考えると、選ぶ構成が見えてきます。

一人が複数社を担当すると、何が変わるか

説明用の例として、代理店が複数の顧客企業の申込みを管理するSaaSを考えます。代理店の担当者はA社とB社を支援しますが、C社とは関係がありません。この人を単に「代理店管理者」にすると、どの会社まで見てよいかを表現できません。個人のアカウントと、企業ごとの所属・役割を分ける必要があります。

サービス内で情報や設定を区切る単位を、テナントと呼びます。必ず法人一社と同じとは限らず、部門を独立させる場合もあります。誰がメンバーを招待し、誰が契約を管理し、誰がデータを見るかを先に描きます。請求を本社へまとめることと、全支店の情報を本社担当者に見せることも、別の判断です。

共同作業がある場合は、何でも企業ごとに閉じればよいとも限りません。発注側と受注側が同じ申請を見るサービスなら、共有する情報と、各社だけの社内メモを分けます。共有関係が終わったときに、どちらが何を残せるかも考えます。代理店の例でも、ある会社への支援を終了しても、別会社の仕事は続きます。一人のアカウントを丸ごと消す方法で済ませず、どの関係を解除するかを表現できる設計が必要です。

全社で同じ仕組みを使うか、企業ごとに専用化するか

AWSの資料では、資源を共有するPool、専用化するSilo、それらを組み合わせるBridgeが紹介されています。多くの顧客へ共通機能を提供するなら、共有構成は一括して更新しやすい選択肢です。一方、顧客ごとに独立した保管や復旧を求められるなら、専用化の価値を検討できます。

専用なら自動的に安全、共有なら必ず安い、とは言えません。専用環境が増えれば更新や監視の仕事も増え、共有では一社だけ復元する手順が複雑になり得ます。顧客が望む条件を開発会社へ伝え、「どこを共有し、どこを分けるか」を説明してもらいましょう。方式名より、運営を続けられるかが比較の中心です。

営業から「専用環境が必要」と言われたら、顧客が何を分けたいのかを確認します。保存するデータなのか、処理の負荷なのか、更新する時刻なのかで、専用化する場所は変わります。すべてを個別にする前に、その条件を満たす構成を比較します。顧客ごとの個別対応を増やすと、契約と実装の組み合わせも増えるため、標準で提供する条件と個別相談の条件を整理しておくと、後の運用を見通しやすくなります。

表が収まらない場合は横にスクロールできます。

企業ごとの条件と構成の選び方
構成検討する理由増えやすい仕事
共有共通機能をまとめて提供・更新する企業境界の検証と負荷の調整
専用保管・運用・復旧を独立させる環境作成、更新配布、監視
共有と専用の混在一部顧客だけ条件が異なる配置の管理と移行、両構成の検証

参考:Amazon Web Services:SaaS Tenant Isolation Strategies: Silo isolation / Amazon Web Services:SaaS Tenant Isolation Strategies: Pool isolation / Amazon Web Services:SaaS Tenant Isolation Strategies: The bridge model

一覧が正しくても、添付ファイルから漏れることがある

画面の一覧でA社だけを表示していても、添付ファイルのURLを知っていれば誰でも開けるなら分離はできていません。検索結果、ダウンロード、集計ファイル、通知メールにも同じ考え方が必要です。企業IDを付けた保存先に置くことと、読む権限を確かめることは別の作業になります。

時間のかかる集計を後から実行する場合も、どの企業の誰の依頼かを引き継ぎます。待機中に担当を外された人へ、古い権限のまま結果を送ってよいかは判断が必要です。開発会社には、通常の画面だけでなく、ファイルと裏側の処理で企業をどう判別するかを尋ねると、確認すべき範囲が見えます。

複数社を切り替える画面では、利用者が今どの会社として操作しているかも重要です。切り替え前に開いていた書類や、入力途中の画面が残ると、別会社へ誤って登録する原因になります。会社名を表示するだけでなく、切り替え時に引き継ぐ入力と破棄する状態を決めます。企業間で情報を取得できない仕組みと、正規の利用者が操作を取り違えにくい画面は、別の角度から同じ情報の境界を支えます。

設計の要点同じ企業境界を守る三つの場所
  1. 操作の入口

    ログインした人の所属と対象企業を照合する

  2. 情報の取得

    画面・検索・添付ファイルの閲覧範囲を制限する

  3. 後から行う処理

    集計や通知にも企業と現在の権限を引き継ぐ

どれか一つだけを分けても、他の経路に同じ制御がなければ境界を保てません。

「分離機能を使っています」の、もう一歩先を聞く

データベース側で行ごとのアクセスを制限する方法もあります。PostgreSQLのRLSがその一つですが、強い管理権限には適用されない場合があります。公式資料では、スーパーユーザーとBYPASSRLSを持つロールは制御を迂回し、テーブル所有者も通常は対象外と説明されています。機能を有効にしただけでは、実際のアプリで効くかは分かりません。

発注側が設定の詳細を暗記する必要はありません。「本番の接続権限で、別企業の情報を要求しても取得・変更できないかを試す」と確認すれば、実際の検証につながります。閲覧だけでなく更新や削除、運営者の横断操作も対象です。横断操作が業務上必要なら、目的と範囲を限定し、誰が何をしたかを残します。

参考:PostgreSQL Global Development Group:PostgreSQL Documentation: Row Security Policies

一社の誤削除で、他社まで昨日に戻さない

説明用の例として、A社が誤って申込データを削除した場面を考えます。全社分のバックアップをそのまま本番へ戻すと、B社が今日追加した情報も失われるおそれがあります。一社だけ戻したいなら、別環境に復元し、関連するデータとファイルを取り出して照合するなど、選択した構成に合う手順が必要です。

復旧では、データが読めることに加え、現在の権限が保たれているかも確かめます。過去の状態から戻した結果、契約終了した代理店の所属まで復活しては困ります。出力、解約後の削除、個別復旧は、企業の境界を本当に扱えているかが分かる場面です。顧客へ約束する前に、どこまで実行できるかと費用を確認してください。

初期開発で決めることと、利用が増えてから決めること

最初から全顧客に専用環境を用意する必要はありません。ただし、複数企業の非公開情報を扱うなら、所属とデータの関係、越えてはいけない境界は初回から決めます。一社の大量集計が他社の通常操作を待たせる可能性もあるため、処理量の上限や混雑時の扱いは利用条件に応じて検討します。

将来の専用化を考える場合は、今すぐ全機能を作るより、データの持ち主と配置を追える状態を保つことが先です。提案を比べる際は、初回費用だけでなく、顧客の追加、更新、解約、復旧の作業も聞きます。予測した顧客数だけで構成を決めず、実際に求められた条件と維持できる体制から、段階的に広げましょう。

利用が増えたときは、全体の件数だけでなく、企業ごとの偏りを見ます。大半の顧客が小さな入力を行う一方、一社だけ大量の一覧出力を使うなら、単純な利用者数では負荷を説明できません。通常の操作を続けながら大きな処理を動かす試験を行い、待たされる相手がいないかを確かめます。処理を分ける、同時実行数を調整する、専用化するといった案を、利用の実態と追加費用から比較する材料になります。

検討・発注前のチェックリスト

担当者と確認状況を添えて、社内の検討メモや打ち合わせの議題にご活用ください。

チェックリストをテキストで保存

確認日:________________ / 担当者:________________

  • 個人・企業への所属・契約・請求の関係を説明できる。確認状況・メモ:
  • 代理店や兼務者の閲覧範囲を決めた。確認状況・メモ:
  • 共有する資源と企業ごとに分ける資源が分かる。確認状況・メモ:
  • ファイル・検索・通知も分離の確認に含めた。確認状況・メモ:
  • 別企業の情報を取得・変更できない試験を依頼した。確認状況・メモ:
  • 一社だけの出力・削除・復旧方法を確認した。確認状況・メモ:
  • 顧客追加と定期更新に必要な運営の仕事を把握した。確認状況・メモ:

よくある質問

顧客が数社なら、企業ごとの分離は後回しにできますか?

非公開情報を複数社で扱うなら、初回から必要です。利用が増えた後の性能強化は段階化できますが、他社のデータを見せない条件は顧客数で省けません。

データベースを企業ごとに分ければ安心ですか?

分離を支える方法の一つですが、接続先の取り違えやファイル配信、運営者の操作も確認が必要です。専用化する範囲と、別の場所に残る共有部分を一緒に見ます。

大口顧客だけ専用環境にできますか?

選択肢になります。共有から移す際の停止や照合、専用環境への更新配布が増えるため、顧客の要望と継続して負担できる費用を確認して決めます。

参考資料

製品の仕様・提供条件は変更されることがあります。採用時には公式資料と契約内容をご確認ください。

記事の内容を、自社の検討へ

顧客ごとの使い方から、SaaSの構成を相談する

利用企業と代理店の関係、顧客に求められた保管・復旧条件を教えてください。初期開発で必要な分離と、成長に応じて追加する仕組みを検討します。

相談で整理すること

対象業務・開発する範囲・運用の分担。まだ決まっていないことも含めて、一緒に整理します。

Webアプリの開発を相談する

この記事について

編集・発行:株式会社ダンドリ

AI・業務システム・Webサービスの設計、開発、運用を支援する会社です。開発を検討する方が判断に使えるよう、公式資料と公開情報をもとに解説しています。

説明用の例と公開事例を区別し、参照した資料は本文と記事末尾に掲載しています。

会社情報を見る