Answers:
关于性能影响,我不知道有此许可或任何其他许可。
关于:
他们该怎么做,也许不应该允许他们做
简而言之,他们可以看到可能不应该看到的东西。而且不要仅从SQL Server角度考虑这一点。此特定权限还管理诸如sys.dm_os_sys_info之类的 DMV,以及用于提供对主机(硬件,服务等)洞察力的许多其他权限。您并不总是知道可以对您使用哪些信息。而且,即使您可以接受现在看到此权限允许的所有内容的人,有时也会在Service Pack /累积更新中添加DMV,因此可能会暴露出您不知道的新信息。
我找不到有关如何评估是否应授予任何指导。
既然您已经提到了向人们提供所需的最低权限,那么真正的含义是:有人临时需要使用此权限吗?意思是,是否有人需要提出自己的查询的灵活性?创建一个或多个存储过程和/或多语句TVF是否可行?如果是这样,则您不需要授予任何用户权限(然后该用户可以自由使用该权限所允许的任何权限),而只需将权限授予代码(仅执行其代码操作)。模块签名是您完成此任务的方式。一般概念是:
EXECUTE
在这些模块上授予执行这些操作所需的任何用户和/或角色ADD SIGNATURE
)对模块进行签名[master]
数据库(即,[master]
使用用于对模块签名的证书的公钥创建证书。[master]
有关一些示例,请参见:
这是一个安全问题。如果遵循最低特权原则,您永远不会出错。换句话说,如果身份验证主体不需要特定的权限,则不要将其授予他们。您是否向其他不需要知道房屋信息的人提供有关门锁类型的信息?我希望不会。他们可能什么也不会做,但是仍然不谨慎。
如果我们靠运气和慷慨来建立数据原理,那么我们经常会遇到更大的麻烦。安全是一个方面,您只有在可以捍卫被授予的理由时才应授予。 您只是在给别人提供比他们所需要知道的更多的信息。不要这样 服务器状态仍然敏感。
sys.dm_db_missing_index_details
),他们想知道这样做的确切风险。