Ken*_*her 9 security sql-server sql-server-2008-r2 sql-server-2012 sql-server-2014
TRUSTWORTHY
如果您不小心,该设置可能会相当危险,除特定情况外,建议将其关闭。但是默认情况下,MSDB
数据库TRUSTWORHTY
设置ON
默认。我很好奇为什么?
我已阅读BOL 中的此条目
注意默认情况下,MSDB 数据库的 TRUSTWORTHY 设置设置为 ON。更改此设置的默认值可能会导致使用 MSDB 数据库的 SQL Server 组件出现意外行为。
但我对具体情况很好奇。为什么具体MSDB
需要TRUSTWORTHY
开启?什么功能使用它?
其中有数十个对象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
Run Code Online (Sandbox Code Playgroud)
如果msdb
未标记为TRUSTWORTHY
,则属于 SQLAgentUserRole 数据库角色的用户还需要执行权限master.dbo.xp_instance_regread
。
从技术上讲,可能可以删除TRUSTWORTHY
中的设置msdb
并在 中授予特定权限master
。但是,这些所需的权限既没有记录也没有支持。
归档时间: |
|
查看次数: |
1630 次 |
最近记录: |