2011-06-22 4 views
1

私はEntity Frameworkを使って仕事をしました。しかし、マネージャーは代わりにストアドプロシージャを使用するように頼んだ。同氏は現時点で、同社のデータベースセキュリティ構造はデータベースの役割に基づいて構築されていると述べた。エンティティ・フレームワーク問合せをデータベース・ロールとして実行できますか?

たとえば、データベースにアクセスするADユーザーを含むroleAがあり、roleAにはストアドプロシージャをrelaventするための実行権限しか与えられていません。 Entity Frameworkを使用すると、クエリはデータベースロールではなく実際のユーザーとして実行されるため、これらのユーザーはデータベースに直接接続して何かを行う可能性があります。

私はあまりデータベースのセキュリティに精通していません。誰かが私のマネージャーが言ったことが有効かどうかを説明してもらえますか?

もしそうなら、私はまだ会社のデータベースセキュリティの構造を破壊していないながら、Entity Frameworkのを使用できるように?(つまり、代わりに実際のADユーザーのクエリを実行するためにロールを使用)

答えて

2

データベースの役割は、データベースで何らかの回避策がありますレベルオブジェクトです。アプリケーションを実行するために使用されるユーザーアカウントは、最初にサーバーにログインする必要があります。このアカウントのアクセス許可は、データベースユーザーまたはデータベースロールに基づいて評価されます。アプリケーションアカウントがroleAのメンバーであれば、 "データベースにアクセスする"アクセス権が必要ですが、アクセス権がroleAのメンバーだけがSPを実行できることを意味する場合、データベースセキュリティは呼び出しを許可しないため、linqまたはESQLのクエリそれらはセキュリティ例外をスローします。

このような場合の唯一の利点は、SPの結果セットをエンティティ/複合タイプ/カスタムタイプに自動的にマッピングすることです。 linq-to-entitiesは使用できず、エンティティはマップされたストアドプロシージャを介してのみ変更できます。

+0

ありがとうございます。 「SPの結果セットをエンティティに自動的にマッピングする」方法について説明する何かを教えてください。私はクイック検索を行い、関連するものは何も見つかりませんでした。 – StarCub

+0

これは関数のインポートで行われます。http://msdn.microsoft.com/en-us/library/cc716672.aspx –

関連する問題