私の会社は私たちのために小さなプロジェクトを行うために請負業者を雇いました。彼は私たちのメインデータベースの単一のビューからデータを選択する必要があります(SQL Server 2005
)。
SQL Server
私は彼のためにロックダウンされたログインを作成したかったのですがSELECT
、「彼の」ビューからのアクセス許可だけで...他には何もありませんでした。
そこで、サーバー上に新しいユーザーを作成し、次の1つのビューでのみユーザーにアクセス許可を与えました。
grant select on SpecialView to SpecialUser;
基本的に、これは機能します。彼は、テーブルとストアドプロシージャを表示できず、「自分の」ビュー以外のビューも表示できません。
だが:
- 彼はすべてのシステムビューにアクセスできます
- 彼はすべてのシステムストアドプロシージャにアクセスできます。
どうやら彼のパーミッションは自動的にロックダウンされています(sys.objects
彼がパーミッションを持っているオブジェクトのみをsp_who
表示し、彼自身のプロセスのみを表示します)。
だから、私の質問は:
システムビューとストアドプロシージャにアクセスせずにユーザーを作成することは可能ですか?
(もしそうなら、私は何を間違っているのですか?)
または、ロックダウンされたユーザーでさえシステムビューとストアドプロシージャにアクセスする必要がある理由はありますか?
編集:
kevchadders、ユーザーはマスター、モデル、またはmsdbにアクセスできません-表示されるはずのビューを持つデータベースにのみアクセスできます。
ただし、明確にするために、ユーザーが表示できるシステムビュー/プロシージャはデータベースにあり、「彼の」ビューは...マスターデータベースにはありません。したがって、彼は同じデータベース内の1つのビューから選択する必要があるため、すべてのアクセスを無効にすることはできません。
重要なのは、彼が表示するはずの単一のビューに対してのみ明示的にアクセス許可を設定したとしても、なぜ彼はシステムビュー/プロシージャも表示するのでしょうか。