La TRUSTWORTHY
configuración puede ser bastante peligrosa si no tiene cuidado y, excepto en circunstancias específicas, la recomendación es mantenerla apagada. Sin embargo, de manera predeterminada, la MSDB
base de datos se ha TRUSTWORHTY
configurado ON
de manera predeterminada. Tengo curiosidad por qué?
He leído esta entrada en BOL
Nota De forma predeterminada, la configuración TRUSTWORTHY está activada para la base de datos MSDB. La alteración de esta configuración de su valor predeterminado puede provocar un comportamiento inesperado por parte de los componentes de SQL Server que usan la base de datos MSDB.
Pero tengo curiosidad por los detalles. ¿Por qué específicamente MSDB
necesita TRUSTWORTHY
activarse? ¿Qué funciones lo usan?
sql-server
sql-server-2008-r2
sql-server-2012
sql-server-2014
security
Kenneth Fisher
fuente
fuente
TRUSTWORTHY
apagar paramsdb
ver qué deja de funcionar y tendrá al menos parte de la respuesta :). Pensé que BACKUP tendría problemas, pero lo intenté y lo logré.Respuestas:
Hay docenas de objetos en
msdb
esa referencia a lamaster
base de datos.Si msdb no estuviera marcado como
TRUSTWORTHY
, entonces los usuarios necesitarían permiso tanto para elmsdb
objeto con el que están interactuando, como para elmaster
objeto al que se hace referencia.Por ejemplo, los usuarios de msdb que obtienen permisos a través del rol de base de datos SQLAgentUserRole tienen permiso de ejecución en
msdb.dbo.sp_enum_sqlagent_subsystems
. La pila de llamadas para ese procedimiento finalmente llega amaster
:Si
msdb
no está marcado comoTRUSTWORTHY
, entonces los usuarios que forman parte de la función de base de datos SQLAgentUserRole TAMBIÉN necesitarían ejecutar permisomaster.dbo.xp_instance_regread
.Técnicamente hablando, es posible eliminar la
TRUSTWORTHY
configuraciónmsdb
y, en su lugar, otorgar permisos específicosmaster
. Sin embargo, esos permisos requeridos no están documentados ni son compatibles.fuente