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


9

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

このエントリをBOLで読みました

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

しかし、私は詳細に興味があります。なぜ具体的にオンにMSDBする必要TRUSTWORTHYがあるのですか?どの関数がそれを使用しますか?


2
WHYに関する調査がなければ、SQLエージェントサービスがインスタンス上のすべてのDBとやり取りして、通知やその他の外部リソースにDBメールを使用できるようにするのは簡単なことです。SQLエージェントジョブ内のパス、ADオブジェクトなど。
Pimp Juice IT

1
@JUICED_ITには、SQLエージェントジョブ履歴、ログ配布モニター履歴、SSISパッケージ、データベースエンジンチューニングアドバイザーデータ、Service Brokerキューデータ、バックアップ情報も含まれます。それはあなたが標準的な振る舞いを望む多くのものです。 sqlperformance.com/2015/07/sql-maintenance/msdb
ConstantineK

データベース間呼び出しを使用するものには必要だと思います。何が機能しなくなったかを確認するには、TRUSTWORTHYをオフにしmsdbてください。答えの少なくとも一部が表示されます:)。BACKUPに問題があると思ったが、試してみたが成功した。
ソロモンRutzky 2016年

回答:


3

データベース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

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

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


おそらくあなたは正しいですが、そうであれば、MSDBの所有者がそれらの権限を持っていることも同様に重要です。
ケネスフィッシャー

@KennethFisherたぶん?通常、msdbのデータベース所有者を混乱させることはないので、よくわかりません。私はいつもそれをsaのままにしておきました。私は合法的にそのことを考えていませんでした。
AMtwo 2016年

ああ、でもMSDBで適切なアクセス許可があれば、そのsaアクセスをTRUSTWORTHYと組み合わせて使用​​してサーバーを引き継ぐことができます:)
Kenneth Fisher

そうだね。しかし、これがシステムDBへのアクセスを慎重に制限する必要がある理由です。DBAでない場合は、システムデータベースにアクセスする必要はありません。
AMtwo 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.