Le TRUSTWORTHY
paramètre peut être assez dangereux si vous ne faites pas attention et sauf dans des circonstances spécifiques, la recommandation est de le garder éteint. Cependant, par défaut, la MSDB
base de données est TRUSTWORHTY
définie ON
par défaut. Je suis curieux de savoir pourquoi?
J'ai lu cette entrée dans BOL
Remarque Par défaut, le paramètre TRUSTWORTHY est défini sur ON pour la base de données MSDB. La modification de ce paramètre à partir de sa valeur par défaut peut entraîner un comportement inattendu des composants SQL Server qui utilisent la base de données MSDB.
Mais je suis curieux de connaître les détails. Pourquoi le MSDB
besoin TRUSTWORTHY
est-il spécifiquement activé? Quelles fonctions l'utilisent?
sql-server
sql-server-2008-r2
sql-server-2012
sql-server-2014
security
Kenneth Fisher
la source
la source
TRUSTWORTHY
désactiver pourmsdb
voir ce qui ne fonctionne plus et vous aurez au moins une partie de la réponse :). J'ai pensé que BACKUP aurait des problèmes mais j'ai juste essayé et cela a réussi.Réponses:
Il y a des dizaines d'objets
msdb
qui font référence à lamaster
base de données.Si msdb n'était pas marqué comme
TRUSTWORTHY
, les utilisateurs auraient besoin d'une autorisation à la fois sur l'msdb
objet avecmaster
lequel ils interagissent, ainsi que sur l' objet référencé.Par exemple, les utilisateurs msdb qui obtiennent des autorisations via le rôle de base de données SQLAgentUserRole sont autorisés à s'exécuter
msdb.dbo.sp_enum_sqlagent_subsystems
. La pile d'appels pour cette procédure atteint finalementmaster
:Si
msdb
n'est pas marqué commeTRUSTWORTHY
, les utilisateurs faisant partie du rôle de base de données SQLAgentUserRole auraient également besoin de l'autorisation d'exécution surmaster.dbo.xp_instance_regread
.Techniquement parlant, il est probablement possible de supprimer le
TRUSTWORTHY
paramètre dansmsdb
et d'accorder des autorisations spécifiques à la placemaster
. Cependant, ces autorisations requises ne sont ni documentées ni prises en charge.la source