1

一部のデータを格納するために SQL Server 2008 に接続する .NET アプリケーションがあります。ファイル内のエンドユーザーに sq ユーザー名とパスワードを提供する SQL Server 認証を使用していapp.configます。さらに変更が必要な場合は、エンドユーザーに他の資格情報を提供します。

データの読み取り/書き込み、既存のストアド プロシージャの実行、その他すべてを禁止する権限のみを持つように sql ユーザーを制限するにはどうすればよいですか? アプリケーションがデータベースへの接続に使用している sql ユーザーの権限を設定するためのベスト プラクティスは何ですか? ユーザーが Management Studio にログインして自分のデータをいじるのをどうにかして防ぐことはできますか? 私は完璧な 100% 信頼できるソリューションを探しているわけではありませんが、これを行うための既存の最善の方法を探しています。事前にどうもありがとうございました。

更新: 私は共有ホスティング SQL Server 環境で作業しています。

4

3 に答える 3

4

「LimitedUser」などの新しい SQL ユーザーを作成する必要があります。SSMS でこれを行うには、使用しているサーバーのセキュリティ フォルダーを選択し、右クリックして [新規] を選択し、[ログイン] を選択します。

認証タイプを選択し (SQL サーバー認証は簡単に管理できます)、既定のデータベースを自分のデータベースに設定します。

この新しいユーザーが DB にのみマップされるようにサーバー ロールを設定し、最後のページ (ステータス) でログインを false に設定して、これらの資格情報を使用して SSMS にログインし、「データを台無しにする」ことができないようにする必要があります。

[OK] をクリックすると、制限付きユーザーの作成が完了します。

それをデータベースに割り当て、SSMS でデータベースを右クリックし、[プロパティ]、[アクセス許可] を選択します。

ユーザーまたはロールを選択し、下の権限グリッドで、オンにする必要があるものだけをオンにします。

于 2012-03-13T06:53:45.113 に答える
0

ご覧のとおり、あなたの質問は SQL サーバーのセキュリティに完全に関係しています。

GRANTステートメント、サーバーまたはデータベース ロールを使用して、サーバー、データベース、またはオブジェクト スコープでユーザー権限を制限できます。たとえば、ユーザーに db_datareader ロールを割り当ててから、一部のストアド プロシージャ (またはデータベース全体) に対する EXECUTE 権限をこのユーザーに付与できます。

私の組織では現在、データベース ロール (アプリケーション管理者、オペレータなど) を作成し、これらのロールに適切な権限を追加してから、これらのロールをデータベース ユーザーに割り当てることを行っています。

SQL Server Managent studio (SSMS) へのログインを防止できるかどうかは完全にはわかりませんが、SSMS は、ユーザーの現在のアクセス許可を持つユーザーには表示されないようにする必要がある情報を表示しません。

于 2012-03-13T07:13:43.910 に答える
0

1 つのインスタンスが複数の顧客間で共有される共有 SQL Server ホスティングは、一般的なクライアント サーバー アプリケーションと互換性がありません。WCF Data Service などの中間層サーバーを介してすべての操作を実行し、フォーム認証などを使用してデータベース内のテーブルでユーザー アカウントを維持する必要があります。

クライアント サーバー アプリケーションの場合、サーバー レベルのログインを作成できる SQL サーバーの独自のインスタンスをホストする VPS が必要です。サーバー レベルのログインを作成しないと、クライアント サーバー アプリケーションを保護する方法がありません。回避策は疑似セキュリティにすぎません。

于 2013-05-07T11:40:23.127 に答える