1

ストアド プロシージャからデータ テーブルを作成する昔ながらの方法を使用する代わりに、エンティティ フレームワークのような ORM レイヤーを使用するようにチームを説得しようとしています。

彼らは、データベースを変更する唯一の方法がストアド プロシージャを使用することを保証できるため、ストアド プロシージャの方が安全であるという意見です。データベースは当社が所有しており、アプリケーションは社内またはサードパーティで構築できます。

恐れているのは、エンティティ フレームワークを使用する場合、データベース セキュリティを緩和する必要があり、サード パーティがデータベースを直接変更するコードを書き始める可能性があることです。

データベースを直接ではなく EF によってのみ変更できるように、データベースのセキュリティを制御できるかどうか教えてください。または、EF が選択のみを実行でき、挿入や削除は実行できないように EF を制御できる場合。

少しあいまいに聞こえたら申し訳ありませんが、データベースのセキュリティ面はあまり得意ではありません。SQL Server 2008 を使用しています。

ありがとう

4

3 に答える 3

2

データベースのセキュリティはデータベースに残ります。ユーザーがデータの選択のみを許可するか、その他の操作を実行できるかを引き続き制御できます。それはEFとは関係のないことです。

EF を使用すると、現在のモデルを使用することもできます。エンティティごとの更新、挿入、および削除操作のためにストアド プロシージャ (EDMX でのみ許可) をマップし、データの選択とそれらのマップされたストアド プロシージャの実行のみを許可できます。追加のセキュリティ レベルが必要な場合は、データベース ビューを EF にマップし、データベース テーブルへの直接アクセスを許可せずに、マップされたストアド プロシージャを使用して挿入、削除、および更新することもできます。

ところで。データベースのセキュリティは、データベースに接続するユーザー/ロールごとに制御できるため、アプリケーションはサードパーティのアプリケーションとは異なる権限を持つことができます。

于 2012-06-07T10:31:16.893 に答える
1

いいえ、信頼されていないアプリケーションを信頼済みにすることはできません。アプリケーションは、EF を使用している場合でも、SQL 文字列をデータベースに送信しているだけです。SQL Server は EF について何も知りません。EF が使用されたことを確認できません。

コードレビューとデータベース権限でこれを解決します。

于 2012-06-07T10:31:41.657 に答える
0

便利なリンクを見つけました:

http://msdn.microsoft.com/en-us/magazine/ff898427.aspx

于 2012-06-07T14:14:58.587 に答える