2016-03-22 16 views
0

エンティティフレームワーク6を別のWebアプリケーションとデータベースで問題なく使用しましたが、サーバーのsysadminロールで統合セキュリティを使用する場合にのみ動作する新しいWindowsフォームプログラムをEF6で作成しました。 。Entity Framework SQL Serverの権限が不十分です

データベースのログインを作成し、それをデータベースにマップすると、読み取り、書き込み、管理の役割が必要になります。十分な権限がないため、テーブルエラーを作成できません。私が使用している場合

this.SetDatabaseInitializer<Model>(null); 

これはデータを返しません。

これらのデータベースで別のアプリケーションが実行され、問題なくEntity Frameworkが使用されることに注意してください。私はどのバージョンが不明です。私は他のアプリケーションで使用されているものと同じログインを使用しようとしましたが、それはまだ動作しません。ここで

は動作しません私の接続文字列です:

<add name="Model" 
    connectionString="Data Source=server;Initial Catalog=database;User ID=username; Password=password; Persist Security Info=True; MultipleActiveResultSets=True;App=EntityFramework" 
    providerName="System.Data.SqlClient"/> 

これは動作します:

<add name="Model" 
    connectionString="data source=server;initial catalog=database;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" 
    providerName="System.Data.SqlClient" /> 

を私は明らかに私が得ることができる任意のヘルプを大幅だろう誰もシステム管理者を作成することはできません感謝。私はこの上に私の髪を引っ張っています。

答えて

0

私は自分の最悪の敵のようです。私の接続文字列は間違ったデータベースを指していました。間違ったデータベースは特権を持っていて空のテーブルを作成していましたが、何も返しませんでした。

0

問題は、Entity Frameworkではなく、Windowsのファットクライアントアプリケーションからの安全なデータベースアクセスを管理することにあります。

useridとpasswordを指定する接続文字列では、SQL Serverログインが作成され、ターゲットデータベースサーバーと常駐データベースに対して適切なアクセス許可が与えられている必要があります。これにはもちろん、Windowsログオンに加えてSQL Serverログオンを許可するようにSQL Serverを構成する必要があります。このアプリケーションセキュリティの手段は、IISによってホストされるWebアプリケーションには理にかなっていますが、クライアントアプリケーションには最適ではない可能性があります。

よくある質問とその回答をご覧ください。

How do I safely store database login and password in a C# application?

私は、統合セキュリティを(現在認証Windowsユーザーアカウントを意味する)を使用して、あなたの第二れたconnectionStringと一緒に行くのWindowsグループを作成し、Windowsグループターゲット・サーバーとデータベースの必要な権限を付与することをお勧めしたい

。これにより、各クライアントに配備されたアプリケーションを使用して接続文字列を保護する必要がなくなり、Windowsセキュリティグループを管理することで簡単にアクセス許可を管理することができます。

ああ、SQL Serverへのシステム管理者のアクセスがはるかに低いものへのアクセスを減らす方法を検討してください。スキーマを作成して変更する必要がある場合でも、ターゲットデータベース内のデータベース所有者であれば十分です。

+0

私は統合セキュリティを使用する予定ですが、問題はサーバー管理の下にあるものが動作しないことです。私はSQLログインを使って特権をテストしました。 – dlowe

関連する問題