-1

シナリオは、クライアントがクライアントの敷地内でホストされているシステム (私たちが作成したもの) を所有および管理しているというものです。彼らのクライアントは、契約上、システムの背後にあるデータベースのデータを変更することは制限されていますが、完全な管理者権限を持っているため、選択した場合はデータを変更できます (サーバーは彼らによって調達され、オンプレミスでホストされています)。

要件は、データが変更された場合に通知を受け取ることです。今のところ、データの削除は無視してください。この議論はテーブル内のデータの修正に関するものです。

Linq to Sql を使用しており、データ コンテキストをオーバーライドして、データの読み取りごとに、行データのハッシュを、挿入/更新中に以前に作成され、テーブルの各行に保持されている格納済みハッシュと比較します。

スケーラビリティが気になるので、他にアイデアがあれば教えていただきたいです。SSMS でのデータ変更、データベースで直接実行されるクエリなどの通知を取得しようとしています。また、誰かがサービス (Windows サービス) を停止した場合、起動時に行が変更されたことを知る必要があります。何かご意見は?

編集:もっと明確にすることができたので、明確にさせてください。私たちは必ずしも変更が行われるのを止めようとしているわけではありません (彼らは完全なアクセス権を持っているのでこれは不可能です)。

4

1 に答える 1

2

答えは簡単です。クライアントがデータを直接操作できないようにするには、データをWindows AzureまたはAmazon EC2インスタンスに手の届かないところに保管します。彼らができることのほとんどは、接続文字列を取得することです。これにより、権限が制限されたユーザーとして接続されます。

また、誰かが私たちのサービス (Windows サービス) を停止した場合、起動時に行が変更されたことを知る必要があります。

必要な情報を監査テーブルに書き込むトリガーを作成できます。その後、監査テーブルを調べて、アプリケーションおよびクライアントによって直接行われた変更を確認できます。データベースの変更の監査は、以前に何度も解決されたよく知られた問題であり、それに関する情報はたくさんあります。

データの読み取りごとに、行データのハッシュを保存されたハッシュと比較します

ご想像のとおり、これは非常に遅く、スケーラブルではありません。

于 2013-11-01T13:31:57.367 に答える