0

.NETクライアントがSQLServer2008データベースのすべてのデータとストアドプロシージャにアクセスするクライアントサーバーアプリケーションがあります。

私が作成して承認したユーザーだけがこの特定のデータベースにアクセスできるように、このすべてのデータを保護する方法はありますか?特にユーザー「sa」が思い浮かびます。彼が私のすべてのデータにアクセスするのは好きではありません。

4

2 に答える 2

7

システム管理者がデータにアクセスするのを防ぐことはできません。

ただし、指定されたデータベース管理者以外は、sa アカウントのパスワードを知ってはなりません。sa にパスワードがない場合、または多くの人がパスワードを持っている場合は、ここでパスワードを変更してください。アプリケーションが sa 経由でアクセスする場合は、すぐに変更してください。

アクセスを制限する最善の方法以外に、テーブルとビュー (select アクセスを含む) から他のすべてのアカウントへのアクセスを削除し、ストアド プロシージャを介した exec アクセスのみを許可します。そうすれば、指定された管理者以外の誰もが、ストアド プロシージャが行うことだけを行うことができ、それ以外のことはできません。ただし、アプリケーションまたはストアド プロシージャで動的 SQL を使用したことがある場合は、これを行うことはできません。これが、動的 SQL が適切でない理由の 1 つです。

于 2009-09-17T13:44:23.220 に答える
3

システム全体へのアクセスはその役割に不可欠であるため、sa または別のシステム管理者をブロックすることはできません。アプリケーションの外部では無意味になるようにデータを暗号化することもできますが、将来のレポートのニーズが複雑になる可能性があります。

于 2009-09-17T13:43:57.593 に答える