SQL Serverのすべてのアクセス許可を拒否(たとえば、選択、挿入など)し、ストアドプロシージャを介して一時的なアクセス許可を与えることはできますか。 SQLデータベースのデータにアクセスするためにストアドプロシージャだけを使用したい。SQL Serverのストアドプロシージャとアクセス許可
これは可能ですか、別の方法ですか?
SQL Serverのすべてのアクセス許可を拒否(たとえば、選択、挿入など)し、ストアドプロシージャを介して一時的なアクセス許可を与えることはできますか。 SQLデータベースのデータにアクセスするためにストアドプロシージャだけを使用したい。SQL Serverのストアドプロシージャとアクセス許可
これは可能ですか、別の方法ですか?
これは、私のSQL Serverをサポートしている良いパターンです。
基本的に、ストアドプロシージャに対するアクセス権を持つユーザーは、procとテーブルの所有者が同じ場合(通常はdbo)、テーブルアクセス権はまったく必要ありません。テーブル上の権限だけで、このような状況ではチェックされませんので、明示的な「権限が拒否」あまりにも無視されます(DENY「パーミッションなし」とは異なる)
同じことがビューに適用されます。それは、ownership chaining
ノートと呼ばれています、関数など(例:ビュー呼び出し表、ビュー呼び出し呼び出し、...)
彼は、その後の選択を行うことをしようとする場合は、[はい、これはあなたがPROCに実行権を与えた場合、ユーザはPROCを実行すると、それが動作することができるようになります、ownership chaining
と呼ばれ、彼が戻って
データを取得しますSSMSからのテーブルには、それが(彼はデータリーダーまたはそれ以上の役割ではないことを提供する)
を動作しません。あなたは、ストアドプロシージャ内の動的SQLを使用している場合、あなたは余分な必要がありますが、動的SQLはownership chaining
を壊すことに注意してくださいその場合の許可
これはストアドプロシージャでのみ機能するのではなく、ビューでも機能します。
一般に、基になるテーブルに対して同じユーザー権限を与えなくても、ビューやsprocのような「上位レベル」のオブジェクトに対してユーザーに権限を与えることができます。
"所有権チェーン":http://msdn.microsoft.com/en-us/library/ms188676.aspx – gbn
正しい私は...... – SQLMenace