“ View Server状态”对安全性和性能的影响


13

该问题指出,各种DMV(动态管理视图)都需要“查看服务器状态”权限,但是我找不到任何关于您要做什么和不希望授予该权限的信息。

现在,我当然理解了“最低权限”,以及为什么不想将其授予任何人,但是我找不到有关如何评估是否应该授予它的指导。

因此,我的问题是:授予用户“查看服务器状态”权限对安全性和性能有何影响?他们该怎么做,也许不应该允许他们做...

更新:一种暗示是用户将能够使用DMV查看查询。如果查询或查询参数可以包含用户否则无法看到的机密信息,则允许VIEW SERVER STATE可以使他们这样做(即dob =或ssn =)。

Answers:


5

通过授予此权限,我不会想到任何重大的性能问题。从安全角度来看,您冒着使用户看到有关弱点的最详细信息的风险,例如,恶意用户可以查看您最常见的等待状态,这可以帮助他们针对您的服务器进行DoS攻击。

这可能吗?绝对是 这可能吗?我不得不说不,但是请记住,据估计,对公司的攻击中有90%来自内部攻击者。


3

作为管理员,您会将此信息视为在您的域中(性能/索引使用情况等),但潜在的令人信服的原因是,开发组织希望其支持的大型遗留系统使用此信息-识别仅涉及到的僵尸表例如通过维护过程。

最后,它总是最终成为“运气和慷慨”的问题,因为对任何特定请求是否合理的呼吁最终都是一个软选择,而不是一个明确的公式。在不考虑上下文的​​情况下使用最佳实践模式本身就是一个令人讨厌的反模式,而现实情况是,许多人以“与人交谈”为出发点来接近自己的立场。


1

关于性能影响,我不知道有此许可或任何其他许可。

关于:

他们该怎么做,也许不应该允许他们做

简而言之,他们可以看到可能不应该看到的东西。而且不要仅从SQL Server角度考虑这一点。此特定权限还管理诸如sys.dm_os_sys_info之类的 DMV,以及用于提供对主机(硬件,服务等)洞察力的许多其他权限。您并不总是知道可以对您使用哪些信息。而且,即使您可以接受现在看到此权限允许的所有内容的人,有时也会在Service Pack /累积更新中添加DMV,因此可能会暴露出您不知道的新信息。

我找不到有关如何评估是否应授予任何指导。

既然您已经提到了向人们提供所需的最低权限,那么真正的含义是:有人临时需要使用此权限吗?意思是,是否有人需要提出自己的查询的灵活性?创建一个或多个存储过程和/或多语句TVF是否可行?如果是这样,则您不需要授予任何用户权限(然后该用户可以自由使用该权限所允许的任何权限),而只需将权限授予代码(仅执行其代码操作)。模块签名是您完成此任务的方式。一般概念是:

  1. 创建存储过程和/或多语句TVF以执行所需的操作。
  2. EXECUTE在这些模块上授予执行这些操作所需的任何用户和/或角色
  3. 创建证书
  4. 使用该证书(使用ADD SIGNATURE)对模块进行签名
  5. 将证书复制到[master]数据库(即,[master]使用用于对模块签名的证书的公钥创建证书。
  6. 从复制到的证书创建登录名 [master]
  7. 授予该基于证书的登录所需的任何实例级权限(可以包括将其添加到实例级角色)。

有关一些示例,请参见:


0

这是一个安全问题。如果遵循最低特权原则,您永远不会出错。换句话说,如果身份验证主体不需要特定的权限,则不要将其授予他们。您是否向其他不需要知道房屋信息的人提供有关门锁类型的信息?我希望不会。他们可能什么也不会做,但是仍然不谨慎。

如果我们靠运气和慷慨来建立数据原理,那么我们经常会遇到更大的麻烦。安全是一个方面,您只有在可以捍卫被授予的理由时才应授予。 您只是在给别人提供比他们所需要知道的更多的信息。不要这样 服务器状态仍然敏感。


1
谁说他们不必要地赠送了它?OP可能需要将其授予某人以调查特定问题(例如sys.dm_db_missing_index_details),他们想知道这样做的确切风险。
马丁·史密斯

我想我在这个问题上缺少了记号,我在问题中没有看到任何表明需要许可的内容。
托马斯·斯金格

4
@ThomasStringer:问题不是关于必要性,而是关于风险。用金钱来表示,您可能知道这将使您的服务器遭受什么额外的风险,因此可以对一分钱说不,对一百万美元说不。我没有,但是我想。
jmoreno 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.