パフォーマンスへの影響に関して、私はこれまたはその他の許可については知りません。
について:
許可されてはいけないことを彼らが何ができるか
簡単に言えば、彼らはおそらく彼らが見るべきではないものを見ることができます。そして、これをSQL Serverだけで考えてはいけません。この特定の権限は、sys.dm_os_sys_infoなどのDMV、およびホストマシン(ハードウェア、サービスなど)に関する洞察を提供する他の多くの権限も管理します。あなたは常にどの情報があなたに対して使用できるかを知りません。また、この許可で許可されているすべての内容を誰かが確認しても問題ない場合でも、DMVがサービスパック/累積的な更新プログラムに追加される場合があるため、知らない新しい情報が公開される可能性があります。
それが許可されるべきかどうかを評価する方法についてのガイダンスは見つかりません。
あなたは既に最小の権限が必要な人を与えて言及したので、何これは本当にあるにダウンしています:のための誰かの必要性はありません。この権限アドホック使い方?つまり、独自のクエリを作成する柔軟性が必要ですか?1つ以上のストアドプロシージャや複数ステートメントのTVFを作成することはできますか?その場合、ユーザーにアクセス許可を付与する必要はありません(ユーザーはそのアクセス許可で許可されたすべてのことを自由に行えます)代わりに、コードにアクセス許可を付与します(コード化されていることだけを実行します)。モジュール署名は、これを実現する方法です。一般的な概念は次のとおりです。
- 必要なアクションを実行するために、ストアドプロシージャやマルチステートメントTVFを作成します。
EXECUTE
これらのモジュールを、これらのアクションを実行するために必要なユーザーやロールに付与します
- 証明書を作成する
- その証明書を使用してモジュールに署名します(を使用して
ADD SIGNATURE
)
- 証明書を
[master]
データベースにコピーします(つまり[master]
、モジュールの署名に使用される証明書の公開鍵を使用して証明書を作成します)。
- にコピーされた証明書からログインを作成します
[master]
- 証明書ベースのログインに必要なインスタンスレベルの権限を付与します(インスタンスレベルのロールに追加することもできます)。
いくつかの例については、以下を参照してください。
sys.dm_db_missing_index_details
)誰かにそれを許可する必要がある場合があり、彼らはそうすることのリスクが正確に何であるかを知りたいです。