3

ASP.Net MVC 2 と SQL Server データベースを使用して SaaS アプリケーションを実装しています。共有テナンシー アプローチを使用しています。

データをフィルタリングするには、これまでのところ 2 つのアプローチを見つけました。

オプション 1: http://msdn.microsoft.com/en-us/library/aa479086.aspx#mlttntda_tvf

テナントごとに SQL ログインを使用します。したがって、ビューで SUSER_SID() をフィルターとして使用する

オプション 2: http://blogs.imeta.co.uk/jyoung/archive/2010/03/22/845.aspx

Context_Info にテナント ID を格納します。したがって、ビューのフィルターとして Context_Info からテナント ID を読み取る SQL 関数を使用します。

適切なオプションを選択するのを手伝ってもらえますか?

どうもどうも

4

2 に答える 2

8

これはセキュリティモデルの戦いに帰着すると思います。DBA は、前者を要求する場合があります。私はより実用的で、テナント ID を SP に渡すか、アプリケーション層からクエリを渡す可能性があります。

1 つのテナントが別のテナントのデータを決して見ることができないことを確認するための多数の単体テストでこれをバックアップし、現在のテナントをセッションまたは類似のサーバーにのみ保存し、Cookie や URL、またはその他の場所には決して保存しません。クライアントでハッキングされる可能性があります。

これにより、DB 構成が不要になるため、新しいテナントの追加がはるかに簡単になります。

もちろん、セッションはハッキングされる可能性があるため、サーバーにテナント ID を保存しても、スプーフィングなどの影響を受けないように、あらゆる予防策を講じる必要があります。

于 2010-08-11T16:19:27.553 に答える
0

インライン テーブル値関数は、分離レイヤーの構築にも役立つ可能性があることを付け加えておきます。

于 2010-08-11T17:29:50.003 に答える