問題タブ [multi-tenant]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - SQLServerとNHibernateによる不透明なテナントの識別
私たちは最近ファッショナブルなマルチテナントSaaSアプリ(共有データベース、共有スキーマ)を開発していますが、私が気に入らない点が1つあります。
ほぼすべての場所で説明する必要があるため、これTenantID
は私を悩ませています。セキュリティの観点からは面倒です。悪意のあるAPIユーザーがTenantID
他の値に変更し、混乱する場合はどうなりますか。
私がやりたいのはTenantID
、ドメインオブジェクトでこれを完全に取り除き、NHibernateまたはSQLServerのいずれかで処理することです。
私がすでにインターネットで読んだことから、これはCONTEXT_INFO
(NHibernateベースの実装)、NHibernateフィルター、SQLビュー、およびそれらの組み合わせで行うことができます。
今、私の要件は次のとおりです。
TenantID
ドメインオブジェクトからの言及を削除します- ...ただし、SQL Serverに適切な場所に挿入してもらいます(これは
default
制約によって実現されると思います) - ...そして明らかに、この基準に基づいたフィルタリングのサポートを提供し、顧客がお互いのデータを見ることは決してないようにします
- 可能であれば、SQLServerビューは避けてください。
- NHibernate、SQL ServerのMARS、および高度に同時実行されるSaaSアプリの一般的な性質とうまく連携するソリューションを用意する
それについてどう思いますか?
sql - MultiTenant と複数の DB
Web/SaaS モデルで販売されるカスタム CRM ソリューションを開発しています。このソリューションを使用するクライアントは、数十または数百に上ると予想されます。MS SQL を db エンジンとして使用します。
オプション 1 は、単一の DB を持ち、テーブルに TenantId 列、適切なインデックスを含め、各 db アクセスで「where tenantId={...}」を使用することです。
オプション 2 は、クライアントごとに個別の DB を用意し、TenantId および where 句の必要性を回避することです。
各クライアントには、数百万ではなく、数十万のレコードがあると予想しています。
私が見ているように、どのオプションを選択しても、データページの総数があります。SQL が複数の DB を管理するのに優れているのか、それとも TenantId とインデックスを持つ単一の DB を管理するのに優れているのかが、決定の中心になっているようです。最初は、ソリューションは単一の DB サーバーで実行されますが、最終的には SAN に移行します。
誰もこれについて意見を持っていますか?
sql-server - SSRS はマルチテナントの使用をサポートできますか?
標準のMicrosoftスタック(asp.net、sqlserver2008、ssis、ssrs)の上に構築されたWebフォームアプリケーションがあります。場合によっては、このスタック全体をマルチテナント型モードで実行して、1 つの「スライス」のユーザーが他のユーザーに見えないようにしたいと考えています。
webapp と ssis 側ではこれを解決しましたが、Sql Server Reporting Services ではまだ解決していません。
Sql Server 2008 の単一のインスタンスを使用して、単一のマシンで複数の論理レポート サービスの「サイト」を作成する方法はありますか? レポート、セキュリティ、およびデータ ソースをスライスごとに個別に構成できる必要があります。
どんな助けでも大歓迎です。
ありがとう!
asp.net - NHibernate ISession 固有のイベントリスナー
NHibernate (共有スキーマ) を使用してマルチテナント ASP.NET アプリケーションを作成しています。現在のテナント ID がエンティティに対して保存されていることを確認するために、保存する前に NHibernates イベント リスナーを使用してエンティティを検査/変更するつもりでした。
テナント ID を含む認証トークンは上位で管理され、データ レイヤーに渡されます。
私の問題は、イベント リスナーが特定の ISession ではなく、NHibernate 構成に対して構成されていることです。これは、イベントを発生させた ISession にアクセスすることはできますが、使用する識別子を渡す方法がないことを意味します。
ISession 固有のデータをイベント リスナーに渡すにはどうすればよいですか?
php - マルチテナント アーキテクチャの SaaS PHP/mysql アプリケーションに単一または複数の mysql ユーザーを使用する
顧客ごとに 1 つのデータベースを持つマルチユーザー アプリを構築しています。すべての顧客データベース構造は同一です。現在、独自のデータベースで作業する権限のみを持つ新しい mysql ユーザーを (クライアントごとに) 生成しています。
たとえば、mysql user1 は dbase1.* (database1.alltables) に対する権限を持ち、mysql user2 は dbase2.* に対する権限を持ちます。
これは、バックアップとして別のサーバーにダンプされるのがすでに苦痛であることに気付きました (レプリケーションは使用しませんが、ファイルを時々ダンプしようとしますが、information_schema dbase を削除して、SQL ファイルから再作成することはできません。
とにかく、すべてのクライアント データベースにアクセスできる 1 人のユーザーだけを使用する方がよいのではないかと考えています。これはより安全ではありませんよね?それとも、かなり安全な方法で使用できますか? 確実に管理した方が良いでしょう。
あなたの考えは何ですか?
asp.net-mvc - Entity Framework 4 を使用して実行時にデータベース スキーマを変更するための最適な実装は何ですか?
各テナントが 1 人以上のユーザーを持ち、各テナントが 1 人以上のユーザーを持ち、別の場所で分割されている、こことここで説明した「単一データベース、個別のスキーマ」モデルを使用して、SQL Server 上に ASP.Net MVC 2 マルチテナント アプリケーションを構築しています。独自のテナント固有の SQL Server スキーマ。
The application is using Entity Framework 4. 異なるテナントのユーザーがスキーマ内のデータにアクセスできるようにするには、エンティティの ObjectContext を作成するときにスキーマを指定できる必要があります。
このツール ( http://efmodeladapter.codeplex.com/ )への参照をいくつか見たことがありますが、(1) 使用方法の説明で指定されているように EDMX が生成されるたびにコードを更新する必要はなく、(2 ) EF4 より前に作成されたので、今はもっと簡単な方法があることを願っています。
では、EF4 でこれを行う最善の方法は何でしょうか?
ありがとう
asp.net-mvc - 単一のASP.NETMVCアプリケーションで複数のドメインにサービスを提供するにはどうすればよいですか?
(単一のASP.NET MVCアプリケーション内で)メカニズムを実装して、次のことを確認する方法:
- リクエストがmydomainに届いた場合(ユーザーがmydomain.comにアクセスした場合)->特定のコントローラーセットを使用して処理する
- リクエストがotherdomainで発生した場合(ユーザーがotherdomain.comにアクセスした場合)->異なるコントローラーセットを使用して処理する
(ドメインは同じウェブホスティングにエイリアスされています)
説明されているメカニズムを確実に機能させるには、ASP.NET MVC内のどの拡張ポイントを使用する必要がありますか?
css - Asp.Net MVC を使用してマルチテナント Web ポータル CSS を管理する方法
MVC を使用してマルチテナント Web ポータル アプリケーションを設計しています。
テナントは、URL またはテナント ID によって識別されます。デフォルトのスキンとテーマのセットを用意しますが、要件に応じて、各テナントに独自のスキンとテーマを設定できます。
マルチテナント Web ポータル アプリケーションの css を処理/添付する最良の方法は何ですか?
java - Spring のセキュリティとマルチテナンシー / REST -> どうやって? ベストプラクティス?参考アプリ?
次のようなURLを保護する方法を探していました
ユーザー (役割ではない) レベル、つまり ID {ownerId} を持つ所有者のみがアクセスできます。さらに、RESTfulな設計を含めて保護したい。所有者レベルで動的に JSON サービスへの非同期アクセス。
私の質問:
- これは Spring Security でどのように行うのが最適ですか?
- /owners/{ownerId}/pets/new が非同期リクエスト経由でアクセスされた場合、これはどのように行われますか?
- iPhoneアプリなどのサードパーティアプリから上記のURIにアクセスするにはどうすればよいですか?
- サンプル/参照アプリケーション/記事はありますか?
ありがとう
java - 「共有データベース、個別スキーマ」マルチテナント戦略の実装方法
共有データベースの個別のスキーマ アプローチを使用して、Web アプリケーションをマルチテナント対応にする必要があります。このアプリケーションは、Java/J2EE および Oracle 10g を使用して構築されています。
クライアントごとに 1 つのスキーマで、複数のスキーマを持つ共有データベースを使用する単一のアプリケーションサーバーが必要です。
これを達成するための最良の実装アプローチは何ですか?
- 中間層 (アプリサーバー) レベルで何をする必要がありますか?
- クライアントごとに複数のホスト ヘッダーが必要ですか?
- アプリケーションにアクセスしているクライアントに基づいて、正しいスキーマに動的に接続するにはどうすればよいですか?