TRUSTWORTHY
Ustawienie może być dość niebezpieczne, jeśli nie jesteś ostrożny i za wyjątkiem szczególnych okoliczności, zaleca się, aby go wyłączyć. Jednak domyślnie MSDB
baza danych jest TRUSTWORHTY
ustawiona ON
domyślnie. Jestem ciekawa dlaczego?
Przeczytałem ten wpis w BOL
Uwaga Domyślnie ustawienie TRUSTWORTHY jest ustawione na ON dla bazy danych MSDB. Zmiana tego ustawienia na wartość domyślną może spowodować nieoczekiwane zachowanie komponentów SQL Server korzystających z bazy danych MSDB.
Ale jestem ciekawa szczegółów. Dlaczego konkretnie MSDB
potrzeba jest TRUSTWORTHY
włączona? Jakie funkcje go wykorzystują?
sql-server
sql-server-2008-r2
sql-server-2012
sql-server-2014
security
Kenneth Fisher
źródło
źródło
TRUSTWORTHY
WYŁ.,msdb
Aby zobaczyć, co przestaje działać, a będziesz miał przynajmniej część odpowiedzi :). Pomyślałem, że BACKUP będzie miał problemy, ale po prostu spróbowałem i udało się.Odpowiedzi:
Istnieją dziesiątki obiektów w
msdb
odwołujące się domaster
bazy danych.Gdyby msdb nie było oznaczone jako
TRUSTWORTHY
, użytkownicy potrzebowaliby uprawnień zarówno domsdb
obiektu, z którym wchodzą w interakcje, jak i domaster
obiektu, do którego się odwołuje.Na przykład użytkownicy msdb, którzy uzyskują uprawnienia za pośrednictwem roli bazy danych SQLAgentUserRole, mają uprawnienia do wykonywania na
msdb.dbo.sp_enum_sqlagent_subsystems
. Stos wywołań dla tej procedury w końcu trafiamaster
:Jeśli
msdb
nie jest oznaczony jakoTRUSTWORTHY
, wówczas użytkownicy, którzy są częścią roli bazy danych SQLAgentUserRole, również potrzebują uprawnień do wykonaniamaster.dbo.xp_instance_regread
.Technicznie rzecz biorąc, prawdopodobnie można usunąć
TRUSTWORTHY
ustawieniemsdb
i zamiast tego udzielić określonych uprawnień wmaster
. Te wymagane uprawnienia nie są jednak udokumentowane ani obsługiwane.źródło