2011-01-05 12 views
3

Windows認証を使用してデータベースでユーザーを認証するアプリケーションがあります.SQL Serverのユーザーアカウントには、データベーステーブルに対する特定の読み取り/書き込みアクセス権が必要です。SQL ServerのWindows認証のセキュリティ

問題は、ユーザーがSQL Server Management Studioをインストールして、使用したくない方法でデータベースを使用する可能性があることです。これは私が望むものではありません。

私が読んだことはすべて、統合認証を使用する方が安全だが、現時点ではどのユーザーもManagement StudioまたはAccess/Excelを使用してデータベースに接続できるということです。

私はいくつかの回避策を示唆している質問SQL Server Authentication or Integrated Security?を読んでいますが、実際にはストアドプロシージャなどのすべてを再作成するように大幅にアプリケーションを変更するオプションはありません。 ?

は、ユーザーがデータベースへのアクセス権を持ってしたくない場合は、それらにアクセス権を付与していない

答えて

2
私は読んだことがある

すべてが は、統合認証を使用して

より安全であることを述べている - それはパスワードを取得することはより困難だから>これはある意味では、より安全です。

SQL Server認証を使用する場合、接続文字列にはユーザーとパスワードが含まれます。接続文字列がどこにあるのか(設定ファイル内にあることが多い)を知っていれば、それを開いてユーザーとパスワードを見ることができます。
一方、Windows認証を使用する場合、接続文字列には「Integrated Security = True」というメッセージが表示され、Windowsアカウントでサーバーに接続します。実際のパスワードはWindowsの奥深くに埋もれています検索する。

もちろん、Windows認証の大きな欠点は、ユーザーがアプリケーションの特定のテーブルに対する書き込み権限を必要とする場合、他のアプリケーションでも同じテーブルに書き込むことができるということです。

は、いくつかの回避策がありますが、それらのどれも銀の弾丸ではありません:あなたのアプリは、DBの特定のテーブルを必要とする場合

、あなただけのこれらのアクセス許可を与えることができます。

:ユーザーがアプリケーションの外部から一切のテーブルにアクセスすることを許可されていないのであれば、少なくとも、ユーザーが他のすべてのテーブルに

をものを行うことができない、あなたが行うことができます残念ながら2つだけのものがあります

  • あなたのアプリをSQL認証に変更し、Windowsユーザーのすべての権限を削除する
    (プロキシサービスlike Will Hughes suggestedも使用できますが、アプリケーションがDBに直接アクセスするときの効果は同じです...ポイントはあなたのユーザー'Windowsアカウントにはこれ以上パーミッションはありません!)
  • データベースで行うことができるもののビューとストアドプロシージャを作成します(まだ存在していない場合)。ユーザーにこれらを使用するためのアクセス許可を与え、実際のテーブルへのアクセス許可を削除します。
    - >ユーザーは他のツールで直接ビューとSPにアクセスできます(ビューやSPの基本的なアクセス許可がなくても十分です)が、実行できません彼らはあなたのアプリでも行うことはできません。
+0

データベースに書き込むストアドプロシージャの許可をどのように与えますか?それは呼び出し元の権利を引き受けませんか? – noelicus

+0

SPは常にデータベースに書き込むことができます。しかし、あなたが彼に(実行権を与えることによって)許可した場合にのみ、SPを実行することができます。詳細については、[このMSDNのリンクを参照](http://msdn.microsoft.com/en-us/library/bb669058.aspx)を参照してください。 –

0

NICO、ありがとうございます。

あなたは、彼らが何ができるかを制御する必要がある場合 - その後、承認されたクエリを実行します、あなたは、Webサービス(またはプロキシサービスのいくつかの他の形式)でのアクセス制御を行う必要があり、データを返す、など

関連する問題