web-dev-qa-db-ja.com

MSDBデータベースはなぜ信頼できるのですか?

注意しないと、TRUSTWORTHY設定はかなり危険になる可能性があり、特定の状況を除いて、オフにすることをお勧めします。ただし、デフォルトでは、MSDBデータベースにはデフォルトでTRUSTWORHTYセットONがあります。なぜだろう?

[〜#〜] bol [〜#〜] でこのエントリを読みました

注デフォルトでは、MSDBデータベースのTRUSTWORTHY設定はONに設定されています。この設定をデフォルト値から変更すると、MSDBデータベースを使用するSQL Serverコンポーネントで予期しない動作が発生する可能性があります。

しかし、私は詳細に興味があります。なぜMSDBTRUSTWORTHYをオンにする必要があるのですか?どの機能がそれを使用しますか?

9
Kenneth Fisher

msdbデータベースを参照するmasterには数十のオブジェクトがあります。

MsdbがTRUSTWORTHYとしてマークされていない場合、ユーザーは、対話しているmsdbオブジェクトと参照されているmasterオブジェクトの両方に対する権限が必要になります。

たとえば、SQLAgentUserRoleデータベースロールを介して権限を取得するmsdbユーザーには、msdb.dbo.sp_enum_sqlagent_subsystemsに対する実行権限が付与されます。そのプロシージャのコールスタックは最終的にmasterをヒットします。

* msdb.dbo.sp_enum_sqlagent_subsystems
    * msdb.dbo.sp_enum_sqlagent_subsystems_internal
        * master.dbo.xp_instance_regread

msdbTRUSTWORTHYとしてマークされていない場合、SQLAgentUserRoleデータベースロールの一部であるユーザーは、master.dbo.xp_instance_regreadに対する実行権限も必要になります。

技術的には、TRUSTWORTHYmsdb設定を削除して、代わりにmasterに特定の権限を付与することが可能です。ただし、これらの必要な権限は文書化もサポートもされていません。

3
AMtwo