asp.netアプリケーションからデータベースにアクセスするために使用するsqlログインに与える必要がある正確なアクセス権と許可は何なのか、いつも疑問に思っています。アプリケーションは、データをテーブルに挿入、更新、および削除するいくつかのストアド プロシージャを実行します。テーブルでも直接選択、削除、更新を行います。また、いくつかのトリガーがあります。役立つ許可マトリックスの包括的なリストがあるかどうか疑問に思います。
2310 次
1 に答える
1
まあ、それはあなたがそれをどれだけ複雑にしたいかによって異なります:-)
最も簡単な解決策:
- ログイン/ dbユーザーに、すべてのテーブルを読み取るためのdb_datareaderロールを持たせます
- ログイン/ dbユーザーに、すべてのテーブルを書き込むためのdb_datawriterロールを持たせます
ストアド プロシージャの実行に関しては、次のようにデータベースに新しいカスタム データベース ロール「db_executor」を作成しました。
CREATE ROLE [db_executor] AUTHORIZATION [dbo]
GRANT EXECUTE TO [db_executor]
次に、このロールを db ユーザーにも付与します。この新しいカスタム データベース ロールは、既存のすべてと、データベース内の今後保存されるすべての proc/func に対する実行権限を持ちます。
これにより、db ユーザーは任意のテーブルを読み書きし、ストアド プロシージャとストアド ファンクを実行できます。
より複雑な解決策: もちろん、個々のテーブル、ビュー、プロシージャ、関数に対する権限を個々の db ユーザーおよび/または db ロールに GRANT することもできます。しかし、それは非常に面倒で複雑になる可能性があります。
マルク
于 2009-03-31T08:32:50.590 に答える