私は小さな会社で働いており、複数のクライアントの機密データを Microsoft SQL サーバーに保存するためのソリューションを見つけようとしています。実際、これは一般的なデータベースの質問であり、MSSQL に固有のものではないように感じます。
これまでは、クライアント データがファイル システムのクライアントのルート ディレクトリに db ファイル (フラット ファイル) として保存される独自のデータベースを使用してきました。そのため、オペレーティング システムのアクセス許可により、クライアント X が使用するアプリケーションがクライアント Y のデータベースからデータを取得できないことが保証されます。ここにはデータベース サーバー/インスタンス/エンジンがないことに注意してください…</p>
ただし、私のプロジェクトでは SQL データベースを使用したいと考えています。しかし、セキュリティ担当者は、さまざまなクライアントのデータを 1 つのデータベースに置くことに懸念を表明しています。
1 つのオプションは、クライアントごとに個別のデータベース インスタンスを作成することです。ただし、このアイデアが拡張可能かどうかはわかりません。
だから私の質問は:
1) MSSQL には、データベースを「別々に」SQL サーバーで使用される異なるファイルに格納できるメカニズムはありますか?
2) クライアント X とクライアント Y のデータベースを持つデータベース インスタンスが 1 つだけあるとします。クライアント X の要求が (誤って) クライアント Y のデータベースに誤って送信されないようにするにはどうすればよいですか? どのデータベースから取得するかを決定するために、コード内のパラメーターに依存したくありません。:)
では、クエリが間違ったクライアント テーブルから取得するように誤って指示されないことを保証する、確実な認証スキームはありますか?
これは非常に一般的な問題であり、これには適切な解決策が必要だと思います。他の企業は何をしているのですか?
これについて読むのに良い記事があれば教えてください。