Die TRUSTWORTHY
Einstellung kann ziemlich gefährlich sein, wenn Sie nicht vorsichtig sind. Abgesehen von bestimmten Umständen wird empfohlen, sie deaktiviert zu lassen. Jedoch standardmäßig die MSDB
hat Datenbank TRUSTWORHTY
gesetzt ON
standardmäßig. Ich bin neugierig warum?
Ich habe diesen Eintrag in BOL gelesen
Hinweis Standardmäßig ist die Einstellung TRUSTWORTHY für die MSDB-Datenbank auf ON gesetzt. Das Ändern dieser Einstellung von ihrem Standardwert kann zu unerwartetem Verhalten von SQL Server-Komponenten führen, die die MSDB-Datenbank verwenden.
Aber ich bin neugierig auf Einzelheiten. Warum muss speziell MSDB
aktiviert werden TRUSTWORTHY
? Welche Funktionen nutzen es?
sql-server
sql-server-2008-r2
sql-server-2012
sql-server-2014
security
Kenneth Fisher
quelle
quelle
TRUSTWORTHY
AUS schalten , ummsdb
zu sehen, was nicht mehr funktioniert, und Sie werden zumindest einen Teil der Antwort haben :). Ich dachte, BACKUP würde Probleme haben, aber ich habe es einfach versucht und es war erfolgreich.Antworten:
Es gibt Dutzende von Objekten in
msdb
dieser, die auf diemaster
Datenbank verweisen .Wenn msdb nicht als markiert
TRUSTWORTHY
wäre, benötigen Benutzer die Berechtigung sowohl für dasmsdb
Objekt, mit dem sie interagieren, als auch für dasmaster
Objekt, auf das verwiesen wird.Beispielsweise wird msdb-Benutzern, die Berechtigungen über die Datenbankrolle SQLAgentUserRole erhalten, die Ausführung am gewährt
msdb.dbo.sp_enum_sqlagent_subsystems
. Der Aufrufstapel für diese Prozedur trifft schließlichmaster
:Wenn dies
msdb
nicht als markiert istTRUSTWORTHY
, benötigen Benutzer, die Teil der Datenbankrolle SQLAgentUserRole sind, AUCH eine Ausführungsberechtigung fürmaster.dbo.xp_instance_regread
.Technisch gesehen ist es wahrscheinlich möglich, die
TRUSTWORTHY
Einstellung in zu entfernenmsdb
und stattdessen bestimmte Berechtigungen in zu erteilenmaster
. Diese erforderlichen Berechtigungen werden jedoch weder dokumentiert noch unterstützt.quelle